Voorwoord Na het behalen van het diploma Bachelor Elektronica optie ICT startte ik in het academiejaar 2004-2005 aan de Hogeschool West-Vlaanderen, departement PIH, de opleiding Master na Bachelor , afstudeerrichting Master Electromechanica optie Automatisering. Na een succesvol brugjaar, kreeg ik de kans om in mijn laatste jaar, mijn aangeleerde vaardigheden toe te passen in een eindwerk. Dit eindwerk is een belangrijke factor voor het behalen van het Master diploma . Om het eindwerk tot een goed einde te brengen is niet alleen een grote portie inzet vereist, maar ook de nodige hulp. Ik vind het dan ook gepast om tot hen een dankwoordje te richten. In de eerste plaats wil ik mijn ouders bedanken omdat ze mij de kans gegeven hebben deze studie te volgen en voor hun steun tijdens de afgelopen 5 jaren. Verder bedank ik de firma Control & Protection voor de begeleiding gedurende mijn eindwerk. In het bijzonder richt ik mij tot mijn bedrijfscoach dhr. Marc Vlaeymans en mijn promotoren Ing. Henk Capoen en Ing. Dieter Van Lierde die mij tijdens de vervaardiging van mijn eindwerk begeleid hebben. Daarnaast waren ook Ing. Dieter Vandenhoecke en José Vangheluwe steeds bereid om tijd vrij te maken en mij bij te staan met raad en daad. Ook hen wil ik bedanken voor de ondersteuning. Tot slot wil ik de docenten en de collega-studenten bedanken voor de aangename sfeer tijdens de afgelopen 2 jaren. Deze thesis vormt het sluitstuk van mijn 5 jaar durende opleiding. Tijdens de studie Ingenieur Electromechanica optie Automatisering probeer je als student de werkelijkheid van het ‘echte werk’ in de industrie zoveel mogelijk te benaderen en te bevatten. De school reikt hiertoe handvatten aan. Als de student ze aanneemt kan hij zich een aantal vereisten toe-eigenen die nodig zijn om een goede beroepsbeoefenaar te worden. Deze thesis is zo’n handvat.
Bruno Accou
Bruno Accou
Hoofdstuk 1 : Cimplicity
-8-
Inhoudsopgave Voorwoord ...................................................................................................................... 4 Voorstelling stagebedrijf ......................................................................................... 5 Voorstelling eindwerk ................................................................................................ 6 Inleiding.......................................................................................................................... 7 1. Proficy – Cimplicity ................................................................................................ 8 1.1. ................................................................................................................... Inlei ding ..................................................................................................................... 8 1.2. .................................................................................................................. CIM -piramide ........................................................................................................... 8 1.3. .................................................................................................................. Profi cy/Cimplicity – algemeen .............................................................................10 1.4. .................................................................................................................. Cimp licity Machine Edition ..................................................................................13 1.4.1............................................................................................................ Inlei ding.............................................................................................................13 1.4.2. .......................................................................................................... Appli caties .........................................................................................................13 1.5. .................................................................................................................. Handleiding Cimplicity Machine edition ....................................................21 1.5.1............................................................................................................ Logi c developer – PC ......................................................................................21 1.5.2. .......................................................................................................... View ................................................................................................................... 38 2. De S2K-Controller ............................................................................................... 47 2.1. .................................................................................................................. Inlei ding ................................................................................................................... 47 2.2. .................................................................................................................. Spec ificaties ........................................................................................................... 48 2.2.1. .......................................................................................................... Type nummer ..................................................................................................... 48 2.2.2. ......................................................................................................... Cont roller dimensies...................................................................................... 49 2.2.3. ......................................................................................................... Aans luitingen .................................................................................................. 50 2.2.4. ......................................................................................................... Opst ellingen .................................................................................................... 55
Bruno Accou
Hoofdstuk 1 : Cimplicity
-9-
2.2.5. ......................................................................................................... Hard warematig ................................................................................................ 57 2.2.6. ......................................................................................................... Soft ware algemeen ........................................................................................ 60 2.3. Foutmeldingen .............................................................................................. 63 2.4. Programmatie ............................................................................................... 64 3. PROFIBUS ............................................................................................................. 75 3.1. .................................................................................................................. Alge mene informatie ............................................................................................ 75 3.1.1............................................................................................................ Inlei ding............................................................................................................ 75 3.1.2. .......................................................................................................... Stat ions ............................................................................................................ 76 3.1.3. .......................................................................................................... Seg menten ...................................................................................................... 77 3.1.4. .......................................................................................................... Lage nmodel....................................................................................................... 78 3.1.5. .......................................................................................................... Tran smissietechnieken.................................................................................. 78 3.1.6. .......................................................................................................... Aans luitingen.................................................................................................... 88 3.1.7. .......................................................................................................... Topo logie............................................................................................................91 3.2. .................................................................................................................. Toeg epast op S2K-controller .............................................................................. 92 3.2.1. .......................................................................................................... Inst allatie ........................................................................................................ 92 3.2.2. ......................................................................................................... Wer king .......................................................................................................... 100 4. De opstelling.........................................................................................................117 4.1. .................................................................................................................. Inlei ding ..................................................................................................................117 4.2. .................................................................................................................. Ont werptekeningen.............................................................................................117 ................................................................................................................................ 4.3. .................................................................................................................. Resu ltaat.................................................................................................................118
Bruno Accou
Hoofdstuk 1 : Cimplicity
-10-
5. Werking programma ...........................................................................................119 5.1. .................................................................................................................. Inlei ding ..................................................................................................................119 5.2. .................................................................................................................. Refe reren .............................................................................................................. 120 5.3. .................................................................................................................. Bere kenen startsnelheid.....................................................................................121 5.4. .................................................................................................................. Omr ekenen snelheden ........................................................................................ 122 5.5. .................................................................................................................. Inga ngenkopieerfunctie..................................................................................... 122 5.6. .................................................................................................................. Star tstopfunctie ................................................................................................. 123 5.7. .................................................................................................................. Hoof dprogramma.................................................................................................. 123 5.8. .................................................................................................................. Visu alisatie ........................................................................................................... 126 6. Problemen............................................................................................................. 130 Besluit ......................................................................................................................... 132 Bijlagen ...................................................................................................................... 133 Bibliografie
Bruno Accou
Hoofdstuk 1 : Cimplicity
-11-
Voorstelling stagebedrijf Mijn stagebedrijf is de firma Control & Protection te Wilrijk. Ik ben met hen in contact gekomen dankzij Ing. Henk Capoen. Control & Protection is een leverancier van didactisch materiaal aan de Hogeschool. Historiek Control & Protection is opgericht in 1976 en heeft zich gespecialiseerd in de toelevering van elektrisch materiaal voor de industrie. Om doeltreffend in te spelen op het toenemende aanbod hoogtechnologisch materiaal, waaraan de hoogste eisen gesteld worden inzake service, investeren ze in een gespecialiseerd verkoops- en serviceteam. Control & Protection is alleenverdeler van GE Fanuc België. Naast de componentenverkoop verzorgt Control & Protection ook de studie en de realisatie van passieve brandbeveiligingsuitrustingen. Control & Protection is actief in 3 gebieden: •
•
•
Automation: Leveranciers GE Fanuc, OMRON en Sti bieden voor alle automatiseringsprojecten en MES software toepassingen niet enkel componenten, maar vooral oplossingen aan. Meettoestellen: De afdeling “Test- en Meettechnieken” biedt enerzijds een compleet gamma elektrische test- en meettoestellen alsook de mogelijkheid om projectmatig testen uit te voeren op industriële - elektrische installaties. Brandbeveiliging: Naast de toelevering van een breed gamma aan passieve brandbeveiligingsproducten en branddeuren voeren ze passieve brandbeveiligingsprojecten in zowel de elektrische, de sanitaire als de HVACtechnieken uit.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-12-
Voorstelling eindwerk In de dagelijkse productie van vele goederen in onze wereld is automatisering niet meer weg te denken. Door de hoge loonkosten in het Westen is er een progressieve groei in de automatisering van productieprocessen. Het eindwerk dat ik voltooi hoort thuis in deze sector. Door het continue evolueren van de automatiseringsproducten wordt een positieve opmars vastgesteld van Motion Control. De laatste jaren wordt deze applicatie meer en meer geïntegreerd in de automatisering. Het opzet van dit eindwerk was deze Motion Control te integreren in het labo Automatisering, zowel soft –als hardwarematig. Uit deze hoofddoelstelling volgden er meteen enkele onderliggende doelstellingen. De eerste daarop volgende doelstelling was een studie maken over de mogelijkheden van het zeer krachtige programma Cimplicity Machine Edition. Dit programma maakt het mogelijk om Motion Control, Soft PLC/PC én VIEW, kortom HMI/SCADA samen met programming & control, in één project te bundelen. GE Fanuc leverde de software en is van kapitaal belang in deze thesis. Als hardware werd een wikkelsysteem met componenten van GE Fanuc opgebouwd. Daarna was het de bedoeling om met deze hardware een bruikbare opstelling te bouwen bestaande uit Motion Control en bestuurd vanuit Soft PLC. Deze opstelling zou dan in de volgende jaren in het labo Automatisering gebruikt worden als één van de educatieve proeven. De term Motion Control én het verband met Cimplicity wordt op deze manier duidelijk aangetoond.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-13-
Inleiding Na de korte uitleg over het eindwerk en alle omringende componenten kunnen we overgaan tot het project zelf. In het eerste deel wordt er uitgebreid aandacht besteed aan de mogelijkheden van Cimplicity en de situering van Cimplicity in het pakket “Proficy”, alsook een verduidelijking van de term ‘MES’ en waarom GE Fanuc zo sterk staat op dit gebied. Voor dit onderdeel zal er ook een handleiding terug te vinden zijn voor het programma Cimplicity, zodanig dat de studenten van de volgende jaren dit complexe programma sneller onder de knie zullen krijgen. Daarna bespreek ik de hardware opstelling met al zijn componenten, technische specificaties en de gebruikte veldbus. Hierop geef ik een duidelijke uitwerking van de ontwikkelde software. Tot slot overloop ik de ontwikkelde visualisatie voor dit systeem.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-14-
1. MES/ERP 1.1
Inleiding
Om een duidelijk idee te krijgen waar de ‘Proficy’ –en ‘Cimplicity’-pakketten zich situeren volgt er eerst wat algemene informatie uit de automatiseringswereld. Zoals in de meeste gevallen is de automatisering in lagen opgedeeld. Deze lagen zijn vastgelegd in een piramide. 1.2
Cim-piramide
Wat is MES/ERP? MES staat voor Manufacturing Execution Systems, en ERP staat voor Entreprise Resource Planning. Vooraleer we deze termen kunnen verduidelijken moeten er eerst wat algemene feiten verduidelijkt worden. We grijpen hiervoor terug naar de CIM-piramide in figuur 1.1.
Fig 1.1: CIM-piramide We zien meteen dat deze piramide opgedeeld is in 5 lagen. Iedere laag bestaat uit andere eigenschappen. We starten onderaan: •
Op de onderste laag vind je alle sensoren en actuatoren die zich in een fabriek kunnen bevinden. Dit is het ground-level van de organisatie. In deze laag komen alle productiemachines terecht, met inbegrip van automatische magazijnen en dergelijke. Op dit niveau spreken we van zeer
Bruno Accou
Hoofdstuk 1 : Cimplicity
-15-
kleine dataoverdracht en zeer kleine cyclustijden. Het spreekt voor zich dat wanneer er iets misloopt in een machine, er geen 10 minuten mogen overgaan vooraleer de machine stilgelegd wordt. Dit is de real-time communicatie. •
Op de tweede laag vinden we alle systemen terug die de sensoren en actuatoren controlleren en besturen. We spreken van PLC’s of DCSsystemen. Op dit niveau bevindt zich dus alle controlelogica voor de machines op de werkvloer. Gezien de sensoren en actuatoren in een zo kort mogelijke tijd gecontroleerd moeten worden, is het evident dat we ook op deze laag spreken van zeer korte cyclustijden m.a.w. van milliseconden.
•
Op de derde laag vinden we SCADA en HMI-applicaties. Dit zijn visualisatiesystemen die het mogelijk maken productieprocessen te beheren. Hiermee kan men alle processen opvolgen, aan foutdetectie doen, aanpassingen aanbrengen en nieuwe instructies geven. Op deze laag is de snelheid al van minder belang dan bij de onderstliggende lagen. Men spreekt hier in termen van seconden.
•
Op de vierde laag komen we terecht bij MES. MES is een interface tussen de SCADA/HMI-laag en de bovenliggende ERP-laag. MES kan ook functioneren als autonoom systeem zonder de ERP-laag.
Fig 1.2: Situering MES In figuur 1.2 zien we dat er tussen de werkvloer en het management een interface nodig is om de communicatie te verwezenlijken. Op de werkvloer vinden we de eerste drie lagen van de CIM-piramide terug. De administratie en logistiek situeren zich in de bovenste laag van de piramide, namelijk onder de term ERP. De tussenliggende laag biedt dus een communicatievorm tussen de productie en het management op computerniveau. Hierbij zal de MES-laag alle gegevens die het krijgt van de onderliggende lagen opslaan in databases, die dan ter beschikking worden gesteld aan de ERP laag onder de vorm van trendanalyses en Bruno Accou
Hoofdstuk 1 : Cimplicity
-16-
historiekcurven. Verder wordt de ERP-laag ook gebruikt om nieuwe orders of instructies door te geven naar de onderliggende lagen. Dit is een zeer complex systeem waarin er vele data doorgegeven moeten worden, het is evenwel niet tijdskritisch. Hier spreken we van minuten. 1.3
Proficy/Cimplicity – algemeen Nu we ons een beeld kunnen vormen van alle termen in de CIM-piramide kunnen we de software-pakketten Cimplicity en Proficy situeren.
•
Cimplicity Machine Edition vinden we terug op laag 2 en 3. Het spreekt voor zich dat het daarmee ook alles op laag 1 kan controlleren. Het omvat alle benodigde PLC-logica en SCADA-applicaties die bijna overal toepasbaar zijn. De PLC-logica bestaat onder de vorm van soft-plc, of kan gedownload worden in een PLC-systeem van FANUC. De visualisatie is rechtstreeks geïntegreerd in het PLC/PC-programma. Dit laat toe de programmeertijd van het totaalpakket sterk te reduceren, en de snelheid van de ‘real-time’ visualisatie op te drijven.
•
Proficy verspreidt zich over de volledige range van software in een fabriek, zelfs tot de leveranciers toe. Dit pakket beschrijft dus 4 van de 5 lagen van de CIM-piramide. Van ERP tot en met PLC/DCS. Het is een verzameling van verschillende programma’s, elk met hun specifieke functie.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-17-
Fig 1.3 : Proficy Cimplicity Machine Edition is een onderdeel van Proficy. In de onderstaande lijst vinden we Cimplicity Machine Edition terug als een verzameling van HMI/SCADA en Programming & Control. Naast Machine Edition vinden we nog tal van andere programma’s terug.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-18-
Real-Time Information Portal Proficy Real-Time Information Portal Plant Performance & Execution Proficy Batch Execution Proficy Batch Analysis Proficy Efficiency Proficy Production Proficy Tracker Integrated Quality Proficy Quality Proficy Shop Floor SPC Asset Management Proficy Entreprise Asset Management Proficy Change Management
Plant Data Repository Proficy Historian HMI/SCADA Proficy HMI/SCADA – iFIX Proficy HMI/SCADA – CIMPLICITY Proficy View – Machine Edition Programming & Control Proficy Logic Developer – Machine Edition Proficy Motion Developer – Machine Edition Services Proficy GlobalCare Support Proficy Professional Services Proficy Training
Tabel 1.1 : Proficy Proficy biedt zelfs de mogelijkheid om aan de leveranciers toegang te verlenen tot de databases. Zo hebben ze toegang tot de aanwezige voorraden en dienen er geen overbodige bestellingen te gebeuren. De leverancier kan zelf zien of de voorraad moet aangevuld worden of niet.
Fig 1.4 : Real-time decision support Bijna in iedere laag van de CIM-piramide bestaat de mogelijkheid in Proficy om met concurrentiele software samen te werken.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-19-
Fig 1.5 : Connectivity Op de bovenste laag van de CIM-piramide bestaat er een 100% connectiviteit met andere programma’s. Proficy maakt daarvoor gebruik van adapters die steeds te verkrijgen zijn. In de meeste gevallen wordt Proficy gebruikt t.e.m. MES en gebruikt men SAP als ERP-pakket, omdat dit pakket al behoorlijk geïntegreerd is in grotere bedrijven.
Fig 1.6 : Proficy entreprise connector 1.4
Cimplicity Machine Edition 1.4.1
Inleiding
Cimplicity Machine edition is een zeer krachtig programma, gebaseerd op de IEEC-normen. Het biedt de mogelijkheid om bijna alle mogelijke applicaties onder verschillende vormen te programmeren. Onder “verschillende applicaties” verstaan we de volgende termen: • • • • • 1.4.2
Logic developer – State Logic developer – PLC Logic developer – PC View Motion Applicaties
Logic developer–state
Bruno Accou
Hoofdstuk 1 : Cimplicity
-20-
State logic is een alternatieve manier om controllers en PLC’s te programmeren, door hen te beschrijven als een opéénvolging van toestanden en acties. Deze manier van programmeren kan zowel grafisch (diagram) als in tekstvorm, waarbij de programmeur een volledig vrije tekstvorm kan opstellen. Dit maakt het voor de ontwikkelaar gemakkelijk, en voor iemand die het programma niet kent en moet aanpassen. Wanneer je een nieuw project aanmaakt krijg je volgende structuur:
Fig 1.7 : Boomstructuur
De boomstructuur van het programma in fig 1.7 geeft een duidelijk overzicht van alle geimplementeerde functies. Het programma bestaat uit een opéénvolging van acties (tasks) die in een ‘state logic task group’ gedefinieerd worden. Deze tasks zijn vrij te programmeren. Het programmeren in vrije tekstvorm ziet er als volgt uit:
Bruno Accou
Hoofdstuk 1 : Cimplicity
-21-
Fig 1.8 : Vrije tekstvorm – State logic
In fig 1.8 is een duidelijk voorbeeld te zien van deze programmeervorm. Er kan vlot over het programma gelezen worden, zoals in een gewone tekst.
Het programmeren in diagram vorm werkt als volgt :
Fig 1.9 : Vrije diagramvorm – State logic
Een voorbeeld van vrije diagramvorm is te zien in figuur 1.9. Deze manier van programmeren is gebaseerd op een opéénvolging van blokken, waar per blok een functie of een voorwaarde kan toegekend worden. Dit is gebaseerd op het principe van flowcharts, met meer vrijheid voor de programmeur. Wanneer je online het proces bekijkt krijg je het ‘watchwindow’ als in figuur 1.10.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-22-
Fig 1.10 : Vrije diagramvorm online
Logic developer – PLC Deze mode bestaat uit een geavanceerde software-tool om GE-Fanuc PLC’s te programmeren. In deze mode kan er geprogrammeerd worden in de meest gekende vormen namelijk Instruction List, Structured Text en Ladder. •
Instruction List is bij de meesten onder ons gekend en bestaat uit een beperkt aantal commando’s die alle acties uitvoeren via de accumulatoren van de controller. Een voorbeeld uit een programma: LD_BOOL V_I00001 AND( LD_BOOL V_I00002 OR V_T00010 AND V_T00011 OR( LD_BOOL V_T00032 OR V_T00033 ST_BOOL V_M00077 ANDN V_T00088 ) AND V_T00088 OR V_Q00067 ) ST_BOOL V_T00099
'Load 1st accumulator 'AND 1st accumulator with expression 'Load 2nd accumulator 'OR 2nd accumulator with variable 'AND 2nd accumulator with variable 'OR 2nd accumulator with expression 'LOAD 3rd accumulator 'OR 3rd accumulator with variable 'Store 3rd accumulator to variable 'AND 3rd accumulator with inverse of variable 'End expression 'AND 2nd accumulator with variable 'OR 2nd accumulator with variable 'End expression 'Store 1st accumulator to variable
Fig 1.11 : Programma in Instruction List
•
Structured tekst biedt een overzichtelijkere manier van programmeren. Maar ook hier zijn de commando’s beperkt. Deze manier van
Bruno Accou
Hoofdstuk 1 : Cimplicity
-23-
programmeren geeft een duidelijke logische opbouw uit voorwaarden zoals ‘IF-THEN’ en ‘DO-WHILE’. Ook rekenkundige instructies zijn eenvoudig te programmeren. Een voorbeeld uit een programma vind je in figuur 1.12. if ((ingangen & 16#0002) = 2) then in_start:= #true; else in_start:= #false; end_if;
Hulp1:=shl(links_velocitywoordMSW,16); Hulp2:=Hulp1+links_velocitywoordLSW; hulp3:=Hulp2*60; links_actual_velocity:=hulp3/4096; if (links_actual_velocity<=0) then links_actual_velocity:=0; end_if;
Fig 1.12 : Programma in Structured tekst
•
Ladder diagramma’s worden eerder gebruikt om een duidelijk elektrisch overzicht te geven. Een voorbeeld uit een ladderprogramma is te zien in figuur 1.13.
Fig 1.14 : Programma in Ladder
Bruno Accou
Hoofdstuk 1 : Cimplicity
-24-
Logic developer – PC PC-developer is, naast alle andere modes, een zeer krachtige applicatie bestaande uit een programmeermogelijkheid en een soft-plc. Deze soft-plc kan op dezelfde manieren geprogrammeerd worden als in de PLC-mode samen met nog twee extra programmeermogelijkheden. Deze mode biedt dus 5 programmeermogelijkheden zijnde: ST, IL, LD, Function Block en Sequential Function Chart Program (ook bekend als Grafcet). Deze soft-plc biedt het voordeel dat, in combinatie met de View-mode, een zeer snelle visualisatie bekomen kan worden. •
Function block heeft als voordeel dat het een zeer overzichtelijke manier van programmeren biedt bij complexe machines. Ieder onderdeel van de machine kan in een block geschreven worden, en iedere block kan meerdere malen worden opgeroepen met andere in- en outputs. Op deze manier kan van een zeer complexe machine een handige structuur opgebouwd worden, bestaande uit enkele blokken. Een voorbeeld van een block is terug te vinden in figuur 1.15.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-25-
Fig 1.15 : Voorbeeld van een function Block
•
Sequential Function Chart Program is gebaseerd op het principe van een flowchart. Een flowchart is een opéénvolging van stappen. Per stap kan één of meerder acties toegekend worden. Tussen de opéénvolgende stappen worden er voorwaarden (conditions) toegekend. De acties worden aangeroepen als ‘tasks’. Zo kan op een eenvoudige manier een kettingproces voorgesteld worden. Deze manier van programmeren kan enkel in de PC-mode. De pagina’s waarin wordt gewerkt zijn opgedeeld in cellen. Per cel kan een ‘step’ , een ‘task’ of een ‘condition’ toegevoegd worden. Een voorbeeld van een stap met enkele ‘tasks’ is te zien in figuur 1.16.
Fig 1.16 : Stap in SFC- programma
Een volledig project kan bestaan uit een combinatie van deze 5 programmeermethoden. Zo’n project wordt opgesplitst in een boomstructuur, die te zien is in figuur 1.17.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-26-
Fig 1.17 : Gecombineerd programma
View De grootste troef van de View modes is dat de variabelen, nodig om aan de gewenste visualisatie te komen, rechtstreeks in de programmeeromgeving beschikbaar zijn. Cimplicity ME maakt gebruik van targets. Meerdere targets kunnen gecombineerd zijn in één project, waaronder automatisch ook alle variabelen. De View-mode biedt evenveel opties en mogelijkheden als de hedendaagse programma’s die beschikbaar zijn op de markt. Deze mode kan ook afzonderlijk gebruikt worden om een scada/HMI-applicatie uit te werken. De manier van opstellen van een visualisatiepagina is gelijkaardig aan alle andere (concurrentiële) visualisatieprogramma’s. Een voorbeeld van een eenvoudige visualisatiepagina is te zien in figuur 1.18
Bruno Accou
Hoofdstuk 1 : Cimplicity
-27-
Fig 1.18 : Voorbeeld van een visualisatiepagina
Motion Control Naast alle andere modes is ook dit een enorm handige applicatie van Fanuc. In deze mode kan er in enkele minuten een volledige motion-structuur opgebouwd worden. Dit kan via wizards of manueel. Deze mode van programmeren maakt gebruik van motion-blocks, die in een programma eenvoudig en na elkaar afgelopen kunnen worden. De programmeertalen zijn opnieuw vrij te kiezen: LD, IL en ST. Het geschreven programma kan gedownload worden in de beschikbare motion-drives/controllers, waarvan er 2 vervat zijn in dit eindwerk. Deze programmeermode wordt uitvoeriger besproken in hoofdstuk 2. 1.5 Handleiding Cimplicity Machine edition 1.5.1 1.5.1.1
Logic developer – PC Nieuw project
Bij het opstarten van Cimplicity kan een nieuw project aangemaakt worden, of kan een bestaand geopend worden. In figuur 1.19 werd er gekozen om een nieuw project aan te maken. In deze figuur komen alle applicaties en combinaties van deze applicaties uit hoofdstuk 1.4.2 tevoorschijn.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-28-
Fig 1.19 : New project De Project template bepaalt de aard van het programma. De eerder uitgelegde mogelijkheden zoals ‘logic developer –PC’ en ‘View’ kunnen samen in één project gegoten worden. Dit is ook de manier waarop het eindwerk gemaakt is. We maken een project aan met als template ‘Logic developer PC and View” en met de gewenste resolutie.
Na het kiezen van de programmeermode wordt volgend werkscherm verkregen. Figuur 1.20 geeft een duidelijk beeld van de verschillende vensters die gebruikt worden in Cimplicity.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-29-
Fig 1.20 : Overzichtsvenster Cimplicity Dit venster kan bestaan uit verschillende tabs. • Navigator : De boomstructuur van het project. Alle applicaties in het project kunnen hier aangemaakt en gewijzigd worden. • Properties inspector : Hierin staan alle eigenschappen van het object dat geselecteerd is geweest. Dit kan zowel een variabele als een target zijn. • Companion : Dit venster biedt informatie tijdens het programmeren, maar doet dit enkel per object. Er kan niet verder gezocht worden. • Infoviewer : Dit is een tweede soort ‘help’ die automatisch informatie biedt als een object is geselecteerd. In dit venster kun je wel aanverwante onderwerpen aanroepen. • Toolchest : Bevat alle ‘tools’ aanwezig in Cimplicity. • Feedback zone : Hierin komt alle informatie na het compileren en/of downloaden. • Data watch : Hierin kunnen variabelen online opgevolgd worden. • Editor view : Hierin wordt het project geprogrammeerd. Als programmeertaal kan zowel ST, IL als LAD gekozen worden. De tabs in figuur 1.20 kunnen één voor één geactiveerd worden. Hiervoor zijn een aantal buttons voorzien in de toolbar. Deze zijn te zien in figuur 1.21.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-30-
Fig 1.21 : Tools toolbar In Cimplicity kan er overal rechts geklikt worden. Cimplicity biedt over ieder onderwerp of object een helpfunctie aan. In de taakbalk van Cimplicity zijn de symbolen terug te vinden zoals in figuur 1.22.
Fig 1.22 : Control toolbar Wanneer deze toolbar niet zichtbaar is, is ze terug te vinden onder ‘Tools’ ‘Logic developer – PC’. De symbolen uit figuur 1.22 staan voor : •
Compileren
•
Compileren en downloaden
•
Compileren + downloaden + starten runtime
•
Online/offline
•
Reset controller
•
Start controller
•
Stop controller + sluit runtime
•
De symbolen van ‘new’, ‘open’ en ‘save’ zijn bij de meesten bekend.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-31-
In de navigator tab zijn er verschillende tabbladen. Deze tabbladen zijn te zien in figuur 1.23.
Fig 1.23 : Tabbladen navigator •
In het project -tabblad
is de boomstructuur van het programma
terug te vinden. •
In het variables–tabblad
zijn alle variabelen terug te vinden. Hier
dienen ze ook te worden aangemaakt en/of aangepast. •
Het help–tabblad
spreekt voor zich. Er kan nog meer informatie
teruggevonden worden onder ‘Help’ ‘Index’. •
Onder het manager–tabblad
zijn alle aangemaakte projecten terug
te vinden. •
kunnen de instellingen voor de gebruiker van
In het options-tabblad
het programma aangepast worden. •
In het utilities–tabblad
kunnen de communicatie-instellingen van het
programma worden ingesteld.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-32-
1.5.1.2
Targets
De boomstructuur in de navigator-tab van ‘Target1’ in figuur 1.24 is voorbeeld van een ‘logic developer – PC + view’ project.
Fig 1.24 : Logic developer – PC + View In deze boomstructuur zijn er verschillende bekende termen aanwezig. Het wordt duidelijk dat ‘view’ en ‘logic’ door elkaar in één project zijn gegoten. De drie voornaamste termen in dit project zijn de ‘Graphical Panels’ , ‘Logic’ en ‘Control I/O drivers’. • • •
Onder ‘Logic’ bevinden zich alle programma’s die het systeem besturen. Onder ‘Graphical Panels’ valt alle visualisatie te programmeren. Deze bestaat meestal uit verscheidene pagina’s. De ‘Control I/O drivers’ bevatten de logische/softwarematige verbinding naar een profibus-kaart die ook gebruikt is in dit eindwerk. Hier wordt op terug gekomen in hoofdstuk 3.2.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-33-
De andere termen zijn • Alarm groups: Deze functies bezitten de mogelijkheid om een fout te detecteren in een machine, en daarmee een fout naar de gebruiker toe te genereren en te visualiseren. Dit kan op de meest verschillende manieren. Meestal verschijnt er in de visualisatie een pop-up met de fout. Deze alarm groups worden opgedeeld in ‘bit-alarms’, ‘word-alarms’ en ‘Root Alarmgroup’. • Application Scripts: Deze application scripts kunnen aangemaakt worden in 2 mogelijke programmeertalen. Ofwel in Visual Basic, ofwel in een ‘ViewScript’ , een scripttaal eigen aan Cimplicity. Het spreekt voor zich dat de ‘Viewscripts’ enkel kunnen gebruikt worden in de visualisatie. De VB-scripts kunnen gebruikt worden om complexe berekeningen op een eenvoudige manier te programmeren. Deze scripts kunnen zowel periodisch, conditioneel als bij opstarten en afsluiten opgeroepen worden. • Data watch lists: Dit spreekt voor zich. Hier kunnen verschillende lijsten opgemaakt worden om te monitoren. • Languages: Hier kan aan de visualisatie verschillende talen worden toegekend. Dit gebeurt met pointers. • Logging groups: Met deze functie bestaat de mogelijkheid om variabelen of parameters te loggen gedurende het proces. Dit kan gebruikt worden in de visualisatie. • OPC-cliënt : De ‘OLE for Process Control’ client driver wordt gebruikt door een target om de verbinding te leggen of te communiceren met een OPC-server. Hierbij leest en schrijft de cliënt naar variabelen die vrijgegeven zijn op de OPC-server. • PLC-access drivers: Hier kan de verbinding gelegd worden naar externe I/O modules die aangesloten zijn op een PLC. Deze drivers zijn alleen te gebruiken indien het programma gedownload wordt in een PLC. • Supplemental files: Hier kunnen nog bestanden ingevoegd worden in dit pakket. Dit kan een handleiding zijn of andere hulpbestanden. Deze tag is onderverdeeld in drie mappen. • Web documents : Hier kunnen er webpagina’s aangemaakt worden om via explorer de visualisatie te bekijken.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-34-
Ieder project kan meerdere targets bevatten. In dit eindwerk zijn er drie targets aanwezig, één soft-PLC en twee motion drives. In figuur 1.25 zijn deze drie te zien. Om een target actief te maken: rechts klikken -> ‘set as active target’. Enkel op deze manier kunnen de aanpassingen die gemaakt zijn aan deze target gedownload worden in die target.
Fig 1.25 : Meerdere targets
Bruno Accou
Hoofdstuk 1 : Cimplicity
-35-
1.5.1.3
Variabelen
Ieder programma heeft variabelen nodig. Deze variabelen zijn samengevoegd in een lijst. De variabelenlijst ziet er uit als in figuur 1.26.
Fig 1.26 : Variabelen lijst In deze variabelenlijst kunnen er filters aangemaakt worden. Op deze manier kan er overzichtelijk gewerkt worden. Deze filters kan men terugvinden door rechts te klikken in de variabele tab.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-36-
In figuur 1.26 zijn enkele variabelen te zien van de 3 targets in het eindwerk. De variabelen zijn te onderscheiden door hun voorvoegsel, gescheiden met een punt. In de bovenstaande variabelenlijst zijn twee van de 3 controllers te zien: Soft_PLC en S2K_controller_links.
Ter info: de variabelen zijn rechtstreeks te slepen in de programmeerruimtes. (‘drag and drop’). Er zijn verschillende datatypes voor variabelen ter beschikking. INT COUNTER DINT DATE UINT DATE_AND_TIME REAL STEP LREAL STRUCTURE BYTE TIME WORD TIMER DWORD TIME_OF_DAY BOOL STRING Tabel 1.2 : Datatypes variabelen In de linkerkolom van tabel 1.2 staan de meer bekende datatypes. In de linkerkolom staan variabelen die eigenlijk voorgedefinieerde structuren zijn. Een voorbeeld: Voor een timer dient er een variabele te worden aangemaakt: ‘Timer1’ met als datatype ‘TIMER’. Deze variabele bezit bij dit datatype 4 onderliggende eigenschappen: • • • •
Timer1.PT : Preset Time: de tijd die moet ingesteld worden voor de timer in milliseconden. (DINT) Timer1.ET : Elapsed Time : de tijd die verstreken is sedert de timer gestart is in milliseconden. (DINT) Timer1.Q : Done bit: deze bit wordt 1 wanneer de verstreken tijd de preset tijd heeft bereikt. (BOOL) Timer1.TI: Timing bit: deze bit wordt 1 wanneer de timer aan het lopen is. (BOOL)
Bruno Accou
Hoofdstuk 1 : Cimplicity
-37-
1.5.1.4
Properties inspector
1.5.1.4.1
Eigenschappen variabelen
De eigenschappen van de variabelen zijn terug te vinden in de ‘properties inspector’. In figuur 1.27 zijn de eigenschappen van een ‘REAL’-variabele te zien.
Fig 1.27 : Properties van een ‘REAL’-variabele In figuur 1.27 zijn de eigenschappen te zien van een variabele die gebruikt wordt om een foutmarge te berekenen in %. Enkele belangrijke eigenschappen zijn : •
Data source : Hier wordt beslist waar deze variabele zal worden bijgehouden en gewijzigd. Bij deze soft-plc moet dit ingesteld worden op ‘Internal’. Hiermee wordt deze variabele toegewezen aan de soft-plc. De andere mogelijke datasources zijn te zien in figuur 1.28.
Fig 1.28 : Datasources
Bruno Accou
Hoofdstuk 1 : Cimplicity
-38-
•
•
• •
In de variabelenlijst van dit eindwerk (fig 1.26) is te zien dat er 3 verschillende data sources gebruikt worden: ‘Internal’, ‘Control’ en ‘Motion’. Onder de data source ‘Control’ is ook te zien uit welk type (Input of Output) deze variabelen bestaan. Data type : Wanneer een floating point variabele nodig is, dan moet er geopteerd worden voor LREAL. Deze long real variabele bestaat uit 8 bytes. Het is zeer belangrijk om tijdens het programmeren aandacht te besteden aan de notaties van de verschillende datatypes. Deze ‘LREAL’variabelen kunnen enkel met een decimale waarde met een punt (‘.’) geladen worden. Wanneer dit vergeten wordt, zal de compiler een fout genereren, waarbij meestal niet naar de plaats wordt gewezen waar de fout zich voordoet. Dit kan voor veel tijdsverlies zorgen. Initial value : Dit is een preset value die de controller bij opstarten laadt. Wanneer er een boolean variabele wordt aangemaakt met een ‘preset value=on’, kan deze gebruikt worden om een initialisatie functie aan te maken. Current value : De controller zal automatisch de huidige waarde van deze variabele aanpassen wanneer in ‘online ‘ mode wordt gewerkt. ‘range limits : Zijn handig wanneer een variabele gebruikt wordt voor berekeningen, en deze niet buiten bepaalde limieten mag gaan. Deze limieten kunnen hier worden ingesteld.
Variabelen en parameters van externe controllers of drives die over een veldbus moeten worden binnengehaald, krijgen als data source ‘Control’. De drivers voor deze veldbus bevinden zich onder de control I/O drivers. In dit eindwerk maakte ik gebruik van PROFIBUS. Hoe deze variabelen worden binnengehaald wordt besproken in het hoofdstuk van PROFIBUS.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-39-
1.5.1.4.2
Eigenschappen van de controller:
De eigenschappen van de controller komen automatisch tevoorschijn in de properties inspector wanneer de controller in de navigatortab geselecteerd wordt. Deze eigenschappen zijn te zien in figuur 1.29.
Fig 1.29 : Properties Soft-PLC De ‘Target Scan Time’ dient zeker zeer klein gezet te worden indien deze controller gebruikt wordt voor real-time toepassingen. Hier kan met een voldoende grote waarde begonnen worden. Daarna kan men met één milliseconde per keer verkleinen, en testen of de controller niet in de fout gaat. In dit eindwerk is de minimum cylcustijd van het systeem 6 ms. Dit is getest. Er dient ook rekening gehouden te worden met de PC die deze toepassing moet runnen. De tijd stijgt nl. naarmate er simultaan meerdere programma’s draaien op die PC. Het is dus sterk aan te raden om de onnodige programma’s af te sluiten, anders kan de PC blokkeren.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-40-
Bij iedere aanpassing van de eigenschappen van een object, target, variabele en dergelijke dient er opnieuw gedownload te worden. De controller kan online gedownload worden, maar in sommige gevallen moet de controller gestopt worden om de aanpassingen te kunnen downloaden. Het downloadvenster is te zien in figuur 1.30.
Fig 1.30 : Download to controller Bij wijzigingen aan de eigenschappen van de controller, of in gebruikname van nieuwe variabelen, dient de controller gestopt te worden. In de meeste andere gevallen kan een ‘run mode store’ gedaan worden. Hierbij zal de controller zijn processen verder uitvoeren zonder onderbreking. Wanneer alle wijzigingen gedownload zijn zal de controller de wijzigingen in de daarop volgende cyclus overnemen. Het kan zijn dat in een programma om veiligheidsredenen de toestand van de controller moet kunnen worden achterhaald. Ook andere statussen moeten kunnen worden gelezen. Deze zijn allemaal terug te vinden in de variabelelijst. Hiervoor moet wel de ‘no system variables’-filter afgezet worden, die bij het starten van Cimplicity altijd wordt geactiveerd. Rechts klikken in de variabelenlijst ‘No filter’ aanvinken. Wanneer dit gebeurd is komen alle variabelen tevoorschijn. De systeem-variabelen zijn te herkennen door een ‘#’teken voor hun naam. In dit eindwerk werd de variabele ‘Soft_PLC.#IOFault’ gebruikt als indicator voor het wegvallen van de voeding van de 2 S2K-controllers. Wanneer er een fout is in de controller zelf komt de bit ‘Soft_PLC.#Fault’ actief. De status van de controller kan ook bekeken worden in het statuswoord ‘Soft_PLC.#Status’. Er zijn ook 2 interessante bits aanwezig in de controller nl ‘Soft_PLC.#TRUE’ en ‘Soft_PLC.#FALSE’. Bruno Accou
Hoofdstuk 1 : Cimplicity
-41-
Een deel van de beschikbare systeemvariabelen zijn te zien in figuur 1.31.
Fig 1.31 : Systeemvariabelen
Bruno Accou
Hoofdstuk 1 : Cimplicity
-42-
1.5.1.5
Feedback Zone
Wanneer een project gecompileerd wordt, komen de resultaten in de ‘feedbackzone’, te zien in figuur 1.32.
Fig 1.32 : Feedback zone De gerapporteerde errors kunnen bekeken worden met ‘F4’. Op deze manier zal Cimplicity naar de plaats springen in het project waar de error voorkwam. Meestal wordt ook aangegeven wat er incorrect is. In deze feedback zone bestaan er opnieuw verschillende tabbladen. Het ‘references’-tabblad is zeer interessant om te achterhalen waar een bepaalde variabele overal gebruikt wordt. Dit kan door de variabele te selecteren in de variabelenlijst. Meteen komt een lijst tevoorschijn waar deze variabele gebruikt werd. In onderstaand voorbeeld is te zien dat deze variabele gebruikt wordt in 4 onderdelen. Er is te zien dat deze variabele gedefinieerd is in de Control I/O driver. Ze wordt gebruikt in de visualisatiepagina ‘Home’ , de programma’s ‘hoofdprogramma’ en ‘berekenen_startsnelheid’.
Fig 1.33 : References
Bruno Accou
Hoofdstuk 1 : Cimplicity
-43-
1.5.1.6
DataWatch Window
Monitoren van variabelen kan in het ‘Watch Window’. De variabelen kunnen toegevoegd worden door ze erin te slepen, of rechts te klikken op de variabelen en ‘Watch’ aan te klikken. Om deze variabelen online te bekijken dient de online/offline (bliksem) knop geactiveerd te worden. Dit ‘Watchwindow’ werkt niet perfect maar het is de enige manier. Het kan gebeuren dat floating-point variabelen de waarde ‘0.0’ houden, terwijl ze in de controller wel correct zijn. Het ‘Watchwindow’ is te zien in figuur 1.33
Fig 1.33 : WatchWindow - Static Er kan een lijst samengesteld worden in de ‘static’- tab, maar er kan ook in de ‘auto’ tab gekeken worden. De variabelen komen in de ‘auto’ tab wanneer ze geselecteerd worden in het programma. Zo kunnen vlug enkele variabelen één voor één bekeken worden door er enkel op te klikken.
Fig 1.34 : WatchWindow - Auto
Bruno Accou
Hoofdstuk 1 : Cimplicity
-44-
1.5.1.7
Printen
Printen van een programma van het type IL en ST kan niet rechtstreeks. Hier voor moet er in de navigator tab rechts worden geklikt op het programma report. Dan verschijnt het programma in een html-pagina. Nu kan de optie ‘print’ onder ‘File’ wel geselecteerd worden. 1.5.1.8
Smart lists
Tijdens het programmeren kan overal een variabele of een expressie ingevoegd worden. Dit kan door rechts te klikken. Bij het kiezen van een variabele (‘Insert variabele’) of expressie (‘Insert keyword’) komt een ‘Smart List’ tevoorschijn.
Fig 1.35 : Smart List 1.5.1.9
Toolchest
In de toolchest zijn alle functies van Cimplicity terug te vinden. Van ActiveXapplicaties tot symbolen in Ladder. De ‘toolchest’ is ingedeeld in groepen. De groepen zijn bovenaan te kiezen. Er is een ruim aanbod van mogelijkheden. De functies in deze toolchest kunnen rechtstreeks in de programma’s gesleept worden.
Fig 1. 36 : Toolchest Bruno Accou
Hoofdstuk 1 : Cimplicity
-45-
1.5.2 1.5.2.1
View Inleiding
Waarom visualiseren en hoe moet nu zo’n pagina worden aangemaakt? Door te visualiseren kan een zeer overzichtelijke grafische voorstelling worden aangemaakt, die de gebruiker een klaar en duidelijk beeld geeft van wat er in de machine gebeurt. In de meeste gevallen wordt de opstelling van de machine, of een onderdeel ervan in een 2D tekening gebracht. Iedere waarde, die binnengelezen of uitgestuurd wordt door de controller, kan in beeld worden gebracht in de visualisatie. Deze visualisatie kan op een gewone PC draaien, maar kan ook op speciaal ontworpen panels werken. Meestal zijn zo’n panels uitgerust met een touch-screen, wat tot een gebruiksvriendelijke visualisatie leidt. De programmeur is volledig vrij in dit gedeelte van automatisering. De duidelijkheid en de stijl van de visualisatie hangt volledig af van de creativiteit van de programmeur. 1.5.2.2
Graphical Panels.
De visualisatie in Cimplicity kan opgemaakt worden in ‘graphical panels’. Dit zijn pagina’s waarop figuren kunnen worden ingevoegd, en waar enkele eigenschappen worden aan toegevoegd. Deze eigenschappen kunnen variëren van kleurovergangen tot een schakelaar die ‘aan’ en ‘uit’ schakelt. Aanmaak : Rechts klikken op ‘Graphical Panels’ ‘New panel’. naam toekennen. De properties zijn te zien in figuur 1.37.
Fig 1.37 : Properties Graphical Panel
Bruno Accou
Hoofdstuk 1 : Cimplicity
-46-
•
•
• • •
•
•
‘Top’ en ‘‘Left’ : Bepalen de coördinaten van de linkerbovenhoek van dit panel. ‘Width’ en ‘Height’ bepalen de grootte van de pagina zelf. Deze eigenschappen zijn afhankelijk van de resolutie waarmee er gewerkt wordt. Background color: Dit is de achtergrondkleur van de pagina. Er kan geen afbeelding geladen worden als background, daarvoor moet een bitmap-object ingevoegd worden. Visible at startup : Bepaalt of deze pagina de eerste pagina is die tevoorschijn komt wanneer de visualisatie runt. Thick border : Bepaalt of er een dikke zwarte rand rond deze pagina komt. Panel type : 3 mogelijkheden: o Overlapped : Wanneer deze pagina wordt opgeroepen komt hij boven de onderliggende pagina’s te staan. Wanneer deze pagina wordt weggeklikt, zullen de onderliggende opnieuw op de voorgrond staan. o Replace : Ieder panel dat in de voorziene ruimte van deze pagina staat wordt gesloten en dit panel komt ervoor in de plaats. o Pop-up : Komt boven alle andere panels tevoorschijn. Dit wordt gebruikt om korte berichten over te brengen. Security : Dit getal kan variëren van 0 tot 999. Deze waarde wordt vergeleken met een een veiligheidsniveau waarop de gebruiker is ingelogd. Dit kan dus gebruikt worden als een manier om toegangsrechten toe te kennen. Publish : Indien ‘True' kan deze pagina bekeken worden vanop het netwerk of internet.
Tekenen: Er zijn werkbalken ter beschikking met tools om het tekenen te vergemakkelijken. Deze kunnen geactiveerd worden onder ‘Tools’ ‘Toolbars’ ‘View’. De vorige toolbars van Logic developer verdwijnen hiermee. Om deze terug te krijgen, klikken op ‘Logic developer – PC’. Alle tools om te tekenen zijn ook in de pagina’s zelf terug te vinden door rechts te klikken, dan verschijnt de volledige lijst ook. Er kunnen gewone figuren en objecten getekend worden, zoals cirkels en ovalen, vierkanten en rechthoeken. Om een perfecte cirkel of vierkant te tekenen moet de Shift toets ingedrukt worden tijdens het tekenen. Meerdere figuren selecteren kan, door de CTRL-toets ingedrukt houden.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-47-
Deze verschillende onderdelen (lijnen, figuren,…) kunnen aan elkaar gekoppeld worden op 2 manieren. • Lock object : Op deze manier wordt een tekening aanzien als één deel, maar er kunnen geen verdere eigenschappen of animaties aan toegevoegd worden. • Create symbol : Op deze manier wordt een tekening ook aanzien als één deel én er kunnen nog bijkomende animaties worden toegevoegd. Animaties toekennen aan een object of een symbool kan door dubbel te klikken op het object.
Fig 1.38 : Animation – Color Er zijn opnieuw verschillende tabbladen ter beschikking, met elk een verschillende animatie. De eerste pagina is color. Hier kan er gekozen worden tussen discrete of analoge animatie. Discreet zal de figuur of het object groen kleuren als de waarde van de bool variabele ‘true’ is. Analoog is ook mogelijk. Daarbij verandert de kleur van de linkse kleur naar de rechtse kleur naarmate de waarde in die variabele stijgt. De kleuren zijn uiteraard ook te veranderen. Een rekenkundige operatie in het variabelenveld is ook mogelijk. Zo kan je een variabele aanroepen en deze in dit veld omzetten naar een percentage. Dit kan door op het lampje te klikken en ‘Math operator’ te kiezen.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-48-
Andere mogelijkheden dan deze kleuranimatie zijn : • Fill • Size • Slider • Position • Rotate • Touch • Visibility • Value In het touch-tabblad zijn er nog meerdere eigenschappen toe te kennen aan dit object. Zo kan een script aangeroepen worden dat een grotere actie kan uitvoeren.
Fig 1.39 : Animation - Touch Het script kan ook geschreven worden in het witte beschikbare venster, maar daarvoor moet de ‘Language’ op ‘Viewscript’ ingesteld worden. Wanneer een vbscript gewenst is, kan in ‘Language’ een ‘Vbscript’ aangeroepen worden. Het is ook hier dat een eigenschap moet worden toegekend om naar een andere visualisatiepagina te springen wanneer op dit object geklikt wordt. Dit valt onder OpenPanel. Meerdere acties zijn mogelijk onder deze tab. Het aantal mogelijkheden van animaties zijn ook afhankelijk van het object. Bij een ‘symbol’ zijn er enkel 5 animaties mogelijk. Bruno Accou
Hoofdstuk 1 : Cimplicity
-49-
Naast deze gewone tekenfuncties zijn er ook voorgedefinieerde objecten. Er zijn twee types: • Dynamic tools : Deze tools zijn enkel en alleen bestemd om variabelen te displayen. Er kunnen geen acties mee uitgevoerd worden. • Interactive tools : Deze tools hebben twee functies: de toestand van een variabele tonen, en de mogelijkheid om ze aan te passen in de visualisatie. Een voorbeeld van een dynamic tool is een ‘numeric data display’ en is te zien in figuur 1.40.
Fig 1.40 : Dynamic tool Het eerste wat Cimplicity vraagt is de variabele die aan dit object moet gekoppeld worden. Dit kan enkel een getal zijn met een numerieke waarde. ‘Integer’ of ‘Real‘ zijn mogelijk. Er zijn opnieuw enkele tabbladen ter beschikking in de ‘properties inspector’. Data format : Het belangrijkste hier is ‘data tekst format’. Wanneer er met floating point variabelen wordt gewerkt dient deze op ‘Float’ te worden gezet. Het ‘Number of digits’ bepaalt waar de komma komt. ‘Fill zeroes’ bepaalt of de resterende nullen zichtbaar zijn of niet.
Fig 1.41 : Data format
Bruno Accou
Hoofdstuk 1 : Cimplicity
-50-
Legend : Hier kan de legende aangepast worden die zichtbaar is op de visualisatiepagina. De ‘Text’ die wordt ingegeven komt op de visualisatie zichtbaar. Er kunnen ook nog enkele kleuren aangepast worden.
Fig 1.42 : Legend Position : Bepaalt de grootte en de positie van dit object. Dit is hetzelfde principe zoals bij het aanmaken van een panel.
Fig 1.43 : Position
Bruno Accou
Hoofdstuk 1 : Cimplicity
-51-
Een voorbeeld van een interactive tool : ‘numeric data entry’:
Fig 1.44 : Numeric Data Entry Het instellen van deze tool is bijna identiek aan die van de ‘numeric data display’. Het enige verschil is dat er in de visualisatie op deze button kan geklikt worden, en de waarde van de variabele kan worden aangepast. Wanneer er in de visualisatie op deze button geklikt word, verschijnt de volgende popup:
Fig 1.45 : Popup value Hier kan enige verwarring ontstaan. De decimale waarde kan rechtstreeks ingetypt worden, maar de cursor kan niet op het getal gezet worden. Aan deze tools kunnen geen extra eigenschappen of animaties worden toegekend. Wanneer dit wel gebeurt, dan verliezen deze eigenschappen hun koppeling naar de variabele.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-52-
ActiveX-objecten : Deze objecten zijn terug te vinden in de toolchest.
Fig 1.46 : Toolchest In dit eindwerk werd er één ActiveX object gebruikt. Dit was de ‘Momentary switch’. Deze objecten kunnen gesleept worden naar de visualisatiepagina’s. Wanneer de muisknop wordt losgelaten, verschijnt de vraag naar een variabele. Deze ActiveX-objecten vragen eigen types variabelen. Er dient dus een naam te worden gegeven aan de variabele. Dit is gelijkaardig aan het principe van de timers en counters en dergelijke.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-53-
Bij deze ‘momentary switch’ wordt een variabele van het type ‘momentary switch’ verkregen. De variabelenlijst met dit type is te zien in figuur 1.47.
Fig 1.47 : Momentary Switch type in de variabelenlijst Deze variabele is een gestructureerde variabele, die verschillende onderliggende eigenschappen heeft. Bij deze switch zijn er 3 onderliggende variabelen. ‘Caption’, ‘Rotate’ en ‘State’. De ‘Caption’ is het label, waar de tekst in moet komen. Deze is van het type string. Deze string is in te stellen in de ‘properties inspector’, wanneer de variabele ‘caption’ geselecteerd is. De andere twee variabelen zijn van het type bool. De switch kan worden bediend door de naam van de variabele van het type ‘momentary switch’ met toevoegsel ‘.state’ gelijk stellen aan een gewone boolean variabele. ‘visualisatie schakelaars Links_enable.State:=links_ok_visu; rechts_enable.State:=rechts_ok_visu; in_keuzeswitch.State:=in_keuzeschakelaar; fig 1.48 : Aanspreken ‘Momentary Switch’ in programmataal
Bruno Accou
Hoofdstuk 1 : Cimplicity
-54-
2. De S2K-controller 2.1
Inleiding
Zoals in ieder automatiseringsproject zijn er componenten nodig die snel operaties kunnen uitvoeren op bitniveau. In dit geval heb ik gebruik gemaakt van de S2K-motion controller van Fanuc. Deze S2K-motion controller is een standalone controller. Hij kan perfect autonoom, maar ook als een slave van een industrieel netwerk functioneren.
Fig 2.1: S2K-controller
Bruno Accou
Hoofdstuk 1 : Cimplicity
-55-
2.2
Specificaties 2.2.1
typenummer
Het typenummer van de controller heeft uiteraard zijn betekenissen.
Fig 2.2: Typenummer declaratie In dit eindwerk heb ik gebruik gemaakt van twee IC800SSI 104RP2-controllers. Deze controllers zijn van het servo-type en hebben een geïntegreerde drive en controller. Deze controllers zijn te voeden met een spanning tussen 90 en 250V AC. De servo drive kan tot 4.3A RMS leveren aan de motor. De terugkoppeling van de motor gebeurt via een resolver met een PROFIBUS-connectie ter beschikking.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-56-
2.2.2
Controller dimensies
De afmetingen van de controller zijn terug te vinden in figuur 2.3 en 2.4.
fig 2.3: Afmetingen S2K-controller
Fig 2.4: Dimensies S2K-controller
Bruno Accou
Hoofdstuk 1 : Cimplicity
-57-
2.2.3
Aansluitingen
De controller bevat verschillende aansluitmogelijkheden voor zowel de in– als uitgangen. Een samenvatting van alle aansluitmogelijkheden is te zien in figuur 2.5.
Fig 2.5: Connecties S2K-controller Deze aansluitmogelijkheden bestaan uit: •
Optional network : PROFIBUS of DeviceNet als veldbus
•
I/O connector: Alle digitale in- en outputs
•
Serial communication: RS232 seriële verbinding
•
Differential auxiliary encoder input: Een optionele encoder ingang
•
Servo feedback: De terugkoppeling van de encoder of resolver van de motor.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-58-
2.2.3.1
Auxiliary connector
Deze connectie op de S2K-controller wordt gebruikt om de analoge in- en uitgangen te sturen, en bevat tevens een tweede encoder-ingang. De connector is een DB25-pins-connector die ook bij computers gebruikt wordt als parallelle poort. De aansluitingen per pin zijn weergegeven in figuur2.6.
Fig 2.6: Auxiliary connector pins
Bruno Accou
Hoofdstuk 1 : Cimplicity
-59-
2.2.3.2
Digitale in- en outputs
De in- en uitgangen zijn geschakeld met de “sinking connection”. Er wordt een externe voeding gebruikt van Siemens met een rimpelloze 24V DC spanning. De connecties zijn weergegeven in figuur 2.7.
Fig 2.7: Inputs en outputs 2.2.3.3
Voeding
De controller kan aangesloten worden op een 2– en 3-fasig net. In het geval van dit eindwerk gebruiken we een 2-fasige aansluiting op het 230V net.
Fig 2.8: VAC input
Bruno Accou
Hoofdstuk 1 : Cimplicity
-60-
2.2.3.4
Encoder
De position feedback van de encoder wordt binnengelezen via een seriële connector (DB9). De verbindingen zijn te zien in figuur 2.9.
Fig 2.9: Position Feedback 2.2.3.5
PROFIBUS connectie
In hoofdstuk 3 wordt het principe en de werking van het veldbus-systeem PROFIBUS besproken. De aansluiting op de S2K-controller is als volgt:
fig 2.10: PROFIBUS connectie
Bruno Accou
Hoofdstuk 1 : Cimplicity
-61-
Onderaan de S2K-controller bevinden er zich nog enkele dipswitches. Deze dipswitches stellen het adres in van de controller die zich als slave op de PROFIBUS zal gedragen. Wanneer de configuratie van de PROFIBUS correct is, licht de netwerkstatusled van de controller groen op. Naast deze led komt op de display het ingestelde adres, tussen de andere codes, tevoorschijn. De switches zijn volledig vrij in te stellen aan de hand van de tabel in figuur 2.11.
Fig 2.11: Dipswitch standen
Bruno Accou
Hoofdstuk 1 : Cimplicity
-62-
2.2.4
opstellingen
De stand-alone controller kan zowel als single-axis als multi-axis gemonteerd worden. Hierbij worden verschillende S2K-controllers naast elkaar geplaatst om tot een opéénvolgend systeem te komen. Dit systeem kan toegepast worden in lange transportbanden, die op verschillende plaatsen aandrijving vereisen. Een voorbeeld van ‘single axis’ en ‘multi axis’ is te zien in figuur 2.12.
Fig 2.12: Mogelijke opstellingen Deze S2K-series bieden perfecte ondersteuning voor borstelloze servomotoren en stappenmotoren in een stand-alone geïntegreerd pakket. De S2K-series bevatten alle digitale versterkingstechnologie om zeer snelle en hoge snelheidsvariaties te bereiken. De volledige besturing kan tevens gebeuren via een industrieel netwerk. Er zijn verschillende netwerkconnecties mogelijk: Modbus, DeviceNet en PROFIBUS. In dit eindwerk werd gebruik gemaakt van PROFIBUS. Men kan gecombineerd tewerk gaan. Er kunnen bijvoorbeeld verschillende motion blocks in de controller geladen worden, waarop de controller van het netwerk het commando kan krijgen om een bepaald motion block uit te voeren. Dit maakt het netwerk veel efficiënter dan wanneer alle parameters doorgegeven moeten worden. In figuur 2.13 is een netwerkopstelling te zien met S2K-controllers.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-63-
Fig 2.13: Netwerkopstelling De S2K-controllers worden geprogrammeerd met Cimplicity Machine Edition. Dit programma biedt enorm veel mogelijkheden. Door dit programma kan deze standalone controller opgenomen worden in een volledig netwerk, en kunnen alle gegevens, ongeacht het merk, opgevraagd en aangepast worden. Een illustratie van een gecombineerd netwerk is te zien in figuur 2.14.
Fig 2.14: Gecombineerd netwerk
Bruno Accou
Hoofdstuk 1 : Cimplicity
-64-
2.2.5
Hardwarematig
De S2K-controller bevat enorm veel technische snufjes. Alle technisch mogelijke en logisch haalbare functies zijn erin geïntegreerd. Deze S2K-controller is eigenlijk een servodrive met een eigen PLC ingebouwd. Deze servodrive bevat een ingebouwde en dynamisch regelbare koppellimiet, die softwarematig in te stellen is. Er kunnen tijdens de acceleratie en deceleratie volledig schokloos zeer complexe motion profielen uitgevoerd worden,. De controllers zijn beschikbaar met drie verschillende netwerkinterfaces, zoals vermeld in de inleiding. Deze netwerkinterfaces zijn vast geïntegreerd in de controllers. Dit heeft het nadeel dat de controllers niet kunnen veranderen van netwerkprotocol. De netwerkinterface moet dus reeds gekozen worden tijdens aankoop. Er zijn digitale in- en uitgangen ter beschikking, alsook 2 analoge ingangen en één analoge uitgang. Er kan een tweede encoder toegevoegd worden. 2.2.5.1
Electronisch
Analoge output: De analoge uitgang kan voor verschillende doeleinden gebruikt worden. In de meeste gevallen gaat men deze uitgang gebruiken als indicator voor de Following Error, Velocity of Actual Output Current ( die evenredig staat aan het koppel). De analoge output kan naar een bepaalde spanning geforceerd worden door de controller, ingesteld door de programmeur of gebruiker.
Fig 2.15: Analoge uitgang elektronisch
Bruno Accou
Hoofdstuk 1 : Cimplicity
-65-
Enable ingang: De enable ingang wordt gebruikt om de drive te enablen/disablen. Bij het disablen wordt de vermogenskoppeling naar de motor onderbroken, waarbij de motor volledig wordt losgelaten. Na het enablen van de motor moet de fout “lost enable” gereset worden vooraleer het vermogen terug naar de motor kan gebracht worden. De huidige toestand van de enable kan opgevraagd worden in het FC (faultcode) register. Als deze ingang elektronisch bekeken wordt (fig 2.16) zien we dat deze galvanisch gescheiden is.
Fig 2.16: Enable ingang
OK output: Deze output wordt gebruikt als indicator van de status van de drive. Deze uitgang wordt hoog wanneer er geen foutmeldingen meer zijn. Het interne elektronische schema is te zien in figuur 2.17.
Fig 2.17: OK output
Bruno Accou
Hoofdstuk 1 : Cimplicity
-66-
Analoge inputs: Er zijn 2 analoge ingangen ter beschikking die elk ingelezen worden via een 12-bit DSP processor. Dit is een heel hoge resolutie die dient om tot hoge nauwkeurigheden te komen. Deze ingangen kunnen een bereik lezen tot ±10V.
Fig 2.18: Analoge inputs
Bruno Accou
Hoofdstuk 1 : Cimplicity
-67-
2.2.6
Softwarematig algemeen
2.2.6.1
Architectuur
Deze stand-alone controller bevat de ‘dual processor architecture’. Dit wil zeggen dat men gebruik maakt van 2 processoren, die elkaar perfect ondersteunen tijdens het uitvoeren van motion blocks.
Fig 2.19: Dual Processor architecture 2.2.6.2
Cyclussen
De motion controller bevat naast de dual-processing technologie ook een sterk operating system, dat 4 voorgedefinieerde programma’s simultaan naast elkaar runt. De controller kan perfect deze 4 programma’s, samen met een motion block en een communicatie taak, simultaan uitvoeren. De 4 programma’s kunnen gebruikt worden als tijdskritische processen, maar meestal gebruikt men het vierde programma als foutprogramma. De controller activeert dit programma wanneer er een fout is opgetreden. De tijd die de controller erover doet om deze 4 programma’s te runnen, is de uiteindelijke cyclustijd van deze controller. De cyclus van de S2K-controller is grafisch te zien in figuur 2.20.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-68-
Fig 2.20: Cyclus S2K-controller Deze 4 programma’s kunnen elk nog opgedeeld worden in 999 labels. Dit biedt m.a.w. de mogelijkheid om tot 999 subroutines te schrijven per programma. Er kunnen tot 256 bit-variabelen, 2048 floating point variabelen en 4096 integer variabelen aangemaakt worden. Vervolgens kunnen er nog 144 string-variabelen aangemaakt worden. Naast deze 4 programma’s kunnen er tot 100 motion blocks ingeladen worden in de controller. Er kan uiteraard maar één motion block per keer uitgevoerd worden. Deze motion blocks laten toe om zeer snel en efficiënt te programmeren. 2.2.6.3
Operaties
De controller kan zeer snel operaties op bitniveau uitvoeren. Dit is te zien aan de verschillende mogelijkheden in figuur 2.21.
Fig 2.21: Operaties op bitniveau
Bruno Accou
Hoofdstuk 1 : Cimplicity
-69-
2.2.6.4
communicatie
De controller kan geprogrammeerd worden via een seriële interface. Dit gebeurt met een RS232-connector. Via deze kabel worden alle programma’s en motion blocks ingeladen in de controller. Men kan ook variabelen online bekijken over deze verbinding.
Fig 2.22: Seriële communicatie Naast deze seriële communicatie kan de controller bestuurd worden over PROFIBUS, maar via deze weg kunnen er geen programma’s ingeladen worden in de controller.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-70-
2.3
Foutmeldingen
De S2K-controller is voorzien van een LED-display waar de status van de controller op weergegeven wordt. Wanneer de drive in fout gaat wordt een verkorte term van de fout weergegeven. Zijn er meerdere fouten actief, dan wordt er om de seconde veranderd van foutweergave en dit volledig in lusvorm. Wanneer er geen fout is in de controller komt de status “OK” op de display. De foutcodes zijn terug te vinden in figuur 2.23. Wanneer er met PROFIBUS gewerkt wordt en de module in het netwerk actief is, zal deze drive zijn eigen PROFIBUS-adres weergeven tussen de andere meldingen.
Fig 2.23: Foutcodes S2K-controller
Bruno Accou
Hoofdstuk 1 : Cimplicity
-71-
2.4
Programmatie
De S2K-controller valt te programmeren met Cimplicity Machine edition, onder de tag ‘Motion’. Hieronder volgt een kleine handleiding om een motion programma op te stellen. Eerst en vooral dient er een nieuw project te worden aangemaakt: File-> new project. Het scherm dat verkregen wordt is te zien in figuur 2.24.
Fig 2.24: New motion project Het belangrijkste in dit scherm is de ‘Project Template’. Hier moet er geopteerd worden voor Motion Controller. Nadat er aangegeven is dat er met Motion zal gewerkt worden vraagt het programma welke controller er gebruikt wordt en welke motor erop is aangesloten. Dit is te zien in figuur 2.25.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-72-
Fig 2.25: Select Controller Na het instellen van de correcte apparaten krijgen we de navigator tab als in figuur 2.26.
Fig 2.26: Navigator tab Hier vallen meteen enkele zaken op. Zoals eerder vermeld maakt de S2Kcontroller gebruik van 4 programma’s. Het 4de programma wordt meestal gebruikt als foutprogramma. Naast deze programma’s zien we dat deze mode CAM-profielen kan volgen. Dit is zeer handig wanneer er meerdere aandrijfmotoren nodig zijn op een aaneengeschakeld systeem. Hierbij gaat er één motor een bepaald motion
Bruno Accou
Hoofdstuk 1 : Cimplicity
-73-
profiel doorlopen, en zullen de andere motoren dit perfect volgen aan de hand van de encoder op de ‘master’ motor. Vooraleer er motion blocks of programma’s kunnen worden opgesteld, dient eerst de configuratie te worden doorlopen. Dit kan ofwel manueel gebeuren in ST-taal, of via de voorziene wizard. (rechts klikken-> wizard). De wizard is te zien in figuur 2.27.
Fig 2.27: Configuration Wizard In deze tab zien we de eerste pagina in de configuratie. Hier zien we opnieuw welke controller en welke bijhorende motor er gebruikt wordt. In het rood zijn enkele parameters omcirkeld. Dit zijn de parameters die de servomotor instelt. Wanneer deze op ‘default’ blijven staan, zal de motor wanneer de schijf met het lint erop bevestigd is, instabiel worden. Deze parameters worden best niet manueel ingesteld. Dit kan volledig automatisch met de functie autotune die straks wordt uitgelegd. Naast de waarden kan er per term een ‘Help’ ingeroepen worden. We klikken op venster als in figuur 2.28. Bruno Accou
Hoofdstuk 1 : Cimplicity
en verkrijgen het
-74-
Fig 2.28: Communication paramers Op de pagina die daarop volgt kan de manier van communiceren ingesteld worden. De S2K-controllers dienen serieel geprogrammeerd te worden met een baudrate van 9600.
.
Fig 2.29: Axis Units Configuration In figuur 2.29 kunnen er nog enkele andere parameters ingesteld worden. We stellen de eerste regel in met ‘rev’. Dit wil zeggen dat we rekenen in toeren, in plaats van pulsen. Wanneer de motor op een machine wordt gemonteerd, met daartussen een reductiekast, dan moet deze reductiefactor worden ingesteld. We klikken op
Bruno Accou
en verkrijgen het venster als in figuur 2.30.
Hoofdstuk 1 : Cimplicity
-75-
Fig 2.30: Encoder Configuration Wanneer de opstelling beschikt is voor CAM-profielen dient een externe encoder ingesteld te worden. Dit kan in figuur 2.30. We klikken op
.
Fig 2.31: General Configuration In figuur 2.31 kan er geopteerd worden voor hard– en software eindeloopschakelaars. Daarnaast kan de ‘Following Error’ en de ‘Positio Error’ ingesteld worden. In de opstelling van het eindwerk heb ik ondervonden dat deze error’s te nauwkeurig staan ingesteld. In de opstelling van het eindwerk staat de FE op 1.0 en de PE op 0.1. We klikken op
Bruno Accou
.
Hoofdstuk 1 : Cimplicity
-76-
Fig 2.32: I/O configuration Op deze pagina kunnen er enkele constanten die in sommige opstellingen vereist zijn worden toegevoegd. De filter tijdsconstanten bij de digitale ingangen zijn bedoeld om de overgangsverschijnselen bij een contact niet door te geven naar de controller. Anders bestaat de kans dat de controller veel meer dan 1 overgang ziet. We klikken op
.
Fig 2.33: Application Type
Bruno Accou
Hoofdstuk 1 : Cimplicity
-77-
In figuur 2.33 kan er gekozen worden op welke manier er zal geprogrammeerd worden. We kiezen voor ‘Use the script Editor’. Daarna klikken we op ‘Finish’. We komen in de startpagina op een menu als in figuur 2.34. Deze tab is de ‘main wizard’.
Fig 2.34: Main Wizard Met de eerste drie termen krijgen we vorige reeks van instellingen terug. Het enige verschil is dat ze nu één voor één kunnen ingesteld worden. Bij de vierde term ‘Utilities’ zit er onder andere één zeer interessant onderdeel: ‘autotune’. Het ‘autotune’ venster is te zien in figuur 2.35.
Fig 2.35: Autotune Op deze pagina zien we de parameters terug die we in het begin van de wizard zijn tegengekomen. Deze parameters kunnen automatisch worden ingesteld in deze optie. We kiezen rechts bovenaan voor ‘Run Autotune’. Hierbij zal de controller de motor testen op enkele voorgedefinieerde functies, waarop deze functie de waarden aanpast op deze pagina. Na deze waarden te hebben verkregen dienen ze nog worden opgeslagen in de controller: ‘Update target’. Daarna opnieuw ‘Finish’. Het ‘Main Wizard’ menu komt opnieuw tevoorschijn. Het is aan te raden om deze instellingen te compileren en te downloaden. Dit kan via .
Bruno Accou
Hoofdstuk 1 : Cimplicity
-78-
De parameters opgemeten in dit eindwerk zijn: • Accelration Feedforward: 3799 • Proportional Gain control: 80 • Integral Gain control: 4933 • Derivate Gain control: 2620 • Filter time constant: 5 Deze hoge parameterwaarden zijn te wijten aan een hoge inertie van de schijven ten opzichte van de rotorinertie van de servomotoren. De ‘Main Wizard’ kan je ook verkrijgen door rechts te klikken op ‘target1’ in de navigator tab. In het lijstje van ‘Utilities’ staat er nog een tab die zeer belangrijk is: ‘Controller Functions’. Deze is te zien in figuur 2.36.
Fig 2.36: Controller Functions Op deze pagina kan de S2K-controller bediend worden. Er kunnen programma’s en motion blocks gestart of gestopt worden. Er kan gecommuniceerd worden via een terminal. Deze terminal is gelijkaardig met hyper-terminal van ‘windows’. Hier kunnen via eenvoudige commando’s de toestand van de controller, alsook van verschillende variabelen opgevraagd worden. De commando’s van deze ‘terminal’ zijn terug te vinden in de ‘Help’ van Cimplicity. Een ander belangrijk deel op deze pagina is dat alle fouten die aanwezig zijn in de controller gerapporteerd worden. Deze fouten kunnen met ‘reset’ terug gewist worden. Indien een fout gegeven wordt, staat er meestal een mogelijke oplossing naast de fout. Deze oplossing is weergegeven in tekstvorm. Bruno Accou
Hoofdstuk 1 : Cimplicity
-79-
Wanneer alle instellingen voltooid zijn kan er worden overgegaan naar het programmeren voor de applicatie zelf. Hierbij wordt er nog een onderscheid gemaakt tussen een programma dat runt op de controller en een motion block. Het programmeren van deze motion blocks gebeurt in de volgende stappen. •
•
•
Rechts klikken op ‘Motions’ in de navigator tab -> Add. Er verschijnt: ‘Motion01’. De naam van deze block kan ook aangepast worden onder de properties-tab. Dubbelklikken op ‘motion01’. De pagina als in figuur 2.37 komt tevoorschijn. Op deze pagina kan er geopteerd worden voor een driehoek – of trapeziumvormige ‘motion’. Na het ingeven van de snelheid, totale tijd, acceleratie– en deceleratie tijd moet de controller de volledige motion berekenen. Dit kan via ‘calculate’. Er zijn twee manieren om deze motion in te stellen. De eerste is met de acceleratie en deceleratie tijd, de andere mogelijk bestaat uit de ‘distance’. Wanneer alle waarden worden ingegeven moet er manueel voorberekend worden zodanig dat alle waarden kloppen, anders geeft het programma een fout. Alle andere motion-blocks dienen op dezelfde manier te worden ingegeven.
Fig 2.37: Motion Block wizard
Bruno Accou
Hoofdstuk 1 : Cimplicity
-80-
De controller weet nu natuurlijk nog niet welke motion-block hij eerst moet uitvoeren. Dit kan gebeuren via de ‘programs’. Het spreekt voor zich dat er maar 1 motion tegelijk kan worden uitgevoerd, hoewel er 4 programma’s tegelijk draaien. Deze programma’s open je door rechts te klikken, en te kiezen voor ‘text view’. Daarna dubbelklikken op het gewenste programma, en er zal een leeg blad verschijnen in de ‘motion script editor’. Wanneer de wizard gebruikt wordt van Cimplicity dan verschijnt er een fout, dus je bent verplicht om in text view te programmeren. In onderstaand programma zal de S2K-controller een analoge waarde binnenlezen op zijn eerste analoge ingang. Hij zal deze waarde vermenigvuldigen met een factor 6. Deze analoge waarde komt binnen als een floating-point, die varieert tussen 0.0 en 10.0. De factor 6 wordt gebruikt omdat de controller per seconde rekent. Dus er wordt een maximum opgelegd van 60tr/sec, wat gelijk is aan 3600tr/min. De controller zal ook zijn 4 digitale uitgangen bedienen met het principe van een volumemeter, maar hierbij wordt de snelheid gebruikt als indicator. Digitale ingang 1 wordt gebruikt als start-stop. 010 if not di1 goto 020 MAC = 0.1 MDC = 0.1 MVL = 30 RVF
(* (* (* (*
acceleratie deceleratie motion velocity Run forward based on velocity.
020 if di1 goto 010 ht (* halt motion goto 010
Fig 2.38: Programma 1 Wanneer alle programma’s in de controller zijn geladen, dan zal de controller het eerste programma starten. Wanneer er een fout voorkomt dan zal de controller programma 4 doorlopen. In programma 4 moet dan ook de foutreset gebeuren. In dit voorbeeld wordt digitale ingang 4 gebruikt om alle fouten te resetten. Het foutprogramma ziet er uit als in figuur 2.39. 010 IF NOT DI4 GOTO 020 KLALL RSF EXPHOOFDPROGRAMMA
(* kill all programs (* reset faults (* execute ‘hoofdprogramma’
020 IF NOT DI4 GOTO 010
Fig 2.39: Programma 4
Bruno Accou
Hoofdstuk 1 : Cimplicity
-81-
Er kan ook nauwkeuriger worden gewerkt. In figuur 2.40 wordt er conditioneel gereset op fouten. 010 IF NOT FC0 GOTO 020 RSF 020 IF NOT FC3 GOTO 030 IF DI4 THEN RSF 030 if not FC21 goto 040 if di4 then RSF 040 goto 010
(* power failure (* lost enable
(* following error
Fig 2.40: Programma 4
Bruno Accou
Hoofdstuk 1 : Cimplicity
-82-
3. PROFIBUS DP 3.1
Algemene informatie 3.1.1 Inleiding
PROFIBUS is in Europa het meest gebruikte open veldbus systeem. Het systeem is gestandaardiseerd in de EN50170 (Europese Norm). PROFIBUS is ook beschreven in de Duitse norm DIN19245. Daardoor kunnen componenten van verschillende fabrikaten, door elkaar heen worden gebruikt mits ze aan EN50170 voldoen. Er zijn drie PROFIBUS versies, DP, FMS en PA. Deze zijn te zien in figuur 3.1.
Fig 3.1: PROFIBUS versies PROFIBUS-DP (Decentral Periphery): Heeft een hoge snelheid (tot 12Mbit/s) en lage aansluitkosten en is bedoeld voor communicatie tussen geautomatiseerde procesbesturingssystemen (zoals PLC's) en de in het proces verspreidde in- en uitgangen (ook wel decentrale periferie genaamd). PROFIBUS-FMS (Fieldbus Message Specification): Is ontworpen voor de communicatie tussen PLC's, PC's, enc… onderling.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-83-
PROFIBUS-PA (Proces Automation): Speciaal ontworpen voor de procesautomatisering. Communiceert met sensoren en actuatoren. Men gebruikt dit vooral in intrinsiek-onveilige gebieden zoals explosiegevaarlijke delen van een installatie. Het is mogelijk om zowel de gegevens als de voeding over twee draden te transporteren (volgens IEC 1158-2). 3.1.2 Stations PROFIBUS werkt met twee soorten stations: • •
Actieve, ook wel ‘masters’ genoemd. Dit zijn PLC's, PC's, enzovoorts. Passieve, de slaves. Hieronder vallen in- en uitgangseenheden, sensoren, actuatoren, aandrijvingen, gateway's naar andere bussystemen, etc...
Fig 3.2: Token ring Het bussysteem kan bestaan uit meerdere masters. Hierbij geven de masters een zogenaamde ‘token’ aan elkaar door (vergelijkbaar met een estafettestokje). Binnen een te configureren cyclustijd hebben alle masters het token één keer gehad.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-84-
De master die het token heeft kan: • • •
Een gegeven naar een slave sturen, bijvoorbeeld:
Een gegeven opvragen aan een slave, bijvoorbeeld: Communiceren met een andere master. Hij krijgt antwoord wanneer die andere master het token heeft.
De slave kan alleen: • •
Bevestigen aan de master dat hij een sturing heeft ontvangen, Een opgevraagde waarde aan de master doorgeven.
Een slave kan dus nooit zelf beginnen met communiceren. Een master kan alleen beginnen met communiceren als hij het token heeft. 3.1.3 Segmenten De stations worden aangesloten op segmenten. Zogenaamde repeaters kunnen meerdere segmenten aan elkaar koppelen. Een segment zonder stations heet een koppelsegment.
Fig 3.3: Segmenten
Bruno Accou
Hoofdstuk 1 : Cimplicity
-85-
3.1.4 Lagenmodel Het PROFIBUS protocol is gebaseerd op het OSI (Open System Interconnection) model zoals dat is vastgelegd in de standaard ISO 7498. Dit model bestaat uit 7 lagen met elk zijn eigen precies vastgelegde taak. PROFIBUS-DP maakt gebruik van laag 1,2 en 7. Zo definieert laag 1 de fysieke eigenschappen van de communicatie (spanning, stroom, aantal aders, etc..). Laag 2 legt vast hoe het toegangsprotocol voor de busverbinding in elkaar zit. Laag 7 definieert de applicatie functies. De lagen zijn te zien in de tabel in figuur 3.4. PROFIBUS-FMS
PROFIBUS-DP
PROFIBUS-PA
Gebruikerslaag
FMS apparaat profielen
DP profielen
PA profielen
Laag 7
Fieldbus Message Specification
niet gebruikt
niet gebruikt
Laag 3-6
niet gebruikt
niet gebruikt
niet gebruikt
Laag 2
Fieldbus Data Link
IEC interface
Laag 1
RS485 of glasvezel
IEC 1158-2
Fig 3.4: Lagenmodel In figuur 3.4 is te zien dat PROFIBUS-FMS en DP identieke functies hebben op laag 1 en 2. Hierdoor kunnen deze twee protocols op dezelfde kabel werken. 3.1.5 Transmissietechnieken Er zijn drie verschillende transmissie-technieken bij PROFIBUS mogelijk; RS485, glasvezel of IEC 1158-2. Welke techniek er wordt toegepast, is afhankelijk van de benodigde betrouwbaarheid, de te overbruggen afstand en de gewenste transmissiesnelheid. De verschillende technieken worden hieronder uitgebreider toegelicht.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-86-
3.1.5.1
RS485 voor PROFIBUS-DP en PROFIBUS-FMS.
Dit principe wordt in de praktijk het meest toegepast. De eigenschappen zijn: • •
• • • • •
Hoge transmissie snelheid (9,6 Kbit/s - 12 Mbit/s); Een simpele kabel, afgeschermde (Shielded) twisted pair. De afscherming is nodig in gebieden met elektromagnetische storingen. De afscherming moet aan beide uiteinden van de kabel geaard worden. Is er geen elektromagnetische storing dan mag de afscherming achterwege worden gelaten. Stations kunnen geplaatst of verwijderd worden zonder invloed op de andere stations. 32 stations (masters of slaves) in één segment, met repeaters maximaal 127 stations. De stations worden bij voorkeur aangesloten met een 9 pins D sub connector. Actieve bus afsluitingen aan beide einden van de bus. Maximale afstand afhankelijk van de snelheid (zie tabel). Baudrate (Kbit/s)
Segment met stations(m)
Koppelsegment zonder stations(m)
9,6
1200
3300
19,2
1200
2800
93,75
1200
2000
187,5
1000
1600
500
400
1200
1500
200
400
12000
100
------
Deze tabel is gebaseerd op een kabel met de volgende eigenschappen: impedantie: 135-165 ohm draad diameter: 0,64 mm capaciteit: <30 pF/m
draad doorsnede: >0,34 mm2
kring weerstand: 110 ohm/km Fig 3.6: RS485 voor PROFIBUS DP en FMS
Bruno Accou
Hoofdstuk 1 : Cimplicity
-87-
•
De cyclustijd van de PROFIBUS wordt bepaald door het aantal gebruikers, en door de aard van de gebruikers.
Fig 3.7: Cyclustijden 3.1.5.2
Glasvezel
Glasvezel kabels worden voor PROFIBUS gebruikt: • In omgevingen met grote elektromagnetische storingen • Als er een grote afstand overbrugd moet worden Er zijn twee voorname soorten glasvezel: • Goedkope plastic fiber, voor afstanden tot 50 m • Glas fiber, voor afstanden tot 1 km. Het is eenvoudig om van RS485 naar glasvezel en omgekeerd over te gaan. Veel fabrikanten leveren daarvoor namelijk speciale bus connectors. 3.1.5.3
IEC 1158-2 voor PROFIBUS-PA
Transmissie kabels die aan de IEC 1158-2 voldoen zijn geschikt voor gebruik in intrinsiek-onveilige gebieden. Dit wordt vereist in de (petro)chemische industrie. Bovendien kunnen de veldapparaten (sensoren, …) via deze kabel gevoed worden. Veld apparaten met een eigen voeding mogen alleen worden gebruikt als ze zijn geïsoleerd volgens EN 50020. PROFIBUS PA is duidelijker te zien in figuur 3.8.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-88-
Fig 3.8: PROFIBUS PA vs DP De eigenschappen van IEC 1158-2 zijn: • • • • • •
Elk segment heeft slechts één voeding. Er staat geen voeding op de bus als een station aan het zenden is. Elk veld apparaat gebruikt in rust een constante basis stroom van min. 10mA. Het veldapparaat moduleert tijdens het zenden +/- 9 mA op de basisstroom. De veldapparaten gedragen zich als passieve stroom gebruikers. Passieve bus afsluitingen aan beide einden van de bus. Zie figuur 3.9.
Fig 3.9: Passieve aansluiting • • •
Lineaire, boom en ster netwerken zijn mogelijk. Er kan een redundante bus worden aangelegd om de betrouwbaarheid te vergroten. De overgang van RS485 naar IEC 1158-2 gaat via een segment-coupler. Deze past de signalen van RS485 en IEC 1158-2 aan elkaar aan en voedt bovendien het IEC 1158-2 segment. Dit is geïllustreerd in figuur 3.10.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-89-
Fig 3.10: Segment gekoppeld netwerk Verdere eigenschappen zijn te vinden in de tabel in figuur 3.11. Data transmissie
digitale, bit synchroon, Manchester code
Transmissie snelheid
31,25 Kbit/s, spannings mode
Data veiligheid preamble
foutloze start en eind aanduiding
Aantal stations tot 32 per segment, totaal maximaal 126 Repeaters
maximaal 4 repeaters Fig 3.11: Verdere eigenschappen
Voor PROFIBUS-PA wordt de kabel met de eigenschappen uit figuur 3.12 aanbevolen.
Kabel soort
afgeschermde pair
Draad doorsnede
0,8 mm2 (AWG18)
Kring weerstand
44 ohm/km
Impedantie KHz
bij
31,25
twisted
100 ohm ±20%
Verzwakking bij 39 KHz
3 dB/km
Capacitieve asymmetrie
2 nF/km
Fig 3.12: Kabel vereisten
Bruno Accou
Hoofdstuk 1 : Cimplicity
-90-
Een segment kan maximum bestaan uit 32 stations. Dit aantal moet verder omlaag als het vermogen van de voeding van het segment beperkt is in verband met de explosie bescherming eisen van het gebied waarin de PROFIBUS-PA ligt.
Type
Toepassings Gebied
Voedings spanning
Maximale voedingsstroom
Maximaal vermogen
Aantal stations
I
Eex ia/ib IIC
13,5 V
110 mA
1.8 W
8
II
Eex ib IIC
13,5 V
110 mA
1.8 W
8
III
Eex ib IIB
13,5 V
250 mA
4,2 W
22
IV
niet intrinsiek24 V veilig
500 mA
12 W
32
Fig 3.13: Vereisten PROFIBUS PA Hierbij wordt ervan uitgegaan dat een station 10 mA gebruikt. Als dat meer is kunnen er nog minder stations geplaatst worden. 3.1.5.4
Dataoverdracht
Hoewel er verschillende types PROFIBUS zijn, bespreken we alleen de dataoverdracht van PROFIBUS-DP. Bij PROFIBUS-DP zijn vier verschillende busacties mogelijk. • Communicatie tussen masters en systeem configuratie en bedieningsapparatuur (a-cyclisch). • Communicatie tussen configuratie en bedieningsapparatuur en slaves (acyclisch). • Communicatie tussen masters onderling (a-cyclisch), • Communicatie tussen master en slaves (cyclisch en a-cyclisch). Zijn er op de bus meerdere masters aangesloten, dan spreken we van een multimastersysteem. Bij multi-master systemen wordt voor de communicatie tussen actieve deelnemers (masters) onderling het token-bus systeem toegepast. Een master kan alleen met een andere deelnemer (master of slave) communiceren als deze het token heeft. Het token wordt steeds na een in te stellen tijd (Token Rotation Time, TRT) doorgegeven aan de volgende actieve deelnemer (master). Een passieve deelnemer (slave) kan het token niet vasthouden.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-91-
Indien er maar één master op de bus is aangesloten, zal de enige master het token naar zichzelf sturen. Bij de communicatie tussen een actieve deelnemer (master) en passieve deelnemer (slave), wordt het master-slave principe toegepast. De master roept de slave aan waarna de slave antwoordt. Voor deze communicatie, zet de master een request frame op de bus. Dit frame wordt door de slave ontvangen en herkend. Hierop antwoordt de slave met een response frame. Achtereenvolgens worden alle slaves afgehandeld, waarna de cyclus opnieuw begint. Parallel aan de cyclische data stromen is ook a-cyclisch data verkeer mogelijk. Hiermee kunnen parameters en meetwaarden verwerkt worden. Figuur 3.14 geeft de opbouw van frames weer tussen een master en een slave.
Fig 3.14: Frame opbouw Bij modulaire opbouw van de deelnemer, die uit een basismodule en een aantal I/O-modules bestaat, gaat de adressering op dezelfde wijze. Hierbij geeft het slotnummer de module aan en de index de plaats in de module. Slotnummer 0 is altijd toegewezen aan de basis module. Elk datablok kan 256 bytes bevatten. Het slotnummer is meestal in te stellen op de slave zelf met dipswitches.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-92-
Fig 3.15: Modulaire opbouw De transmissie tussen de master en de slave is te verdelen in twee fasen. • •
Parameterdata Procesdata
Gedurende de parameterinstelling wordt de configuratie van de slave vergeleken met de gegevens die in de master zijn opgenomen. Als deze bij elkaar passen gaat het systeem over naar de data overdrachtsfase. Het type deelnemer, het informatieformaat en de lengte van de informatie evenals het aantal in- en uitgangen moeten met de werkelijke situatie overeenkomen. Deze test voorkomt parameterfouten tijdens het proces. Ook bij PROFIBUS moet elke deelnemer een eigen, uniek adres hebben. De methode van adressering van de datablokken gaat ervan uit dat een slave modulair is opgebouwd of intern voorzien is van logische functies. PROFIBUS maakt gebruik van adressen op twee niveaus: • •
Het netwerkadres 0 t/m 126. En per netwerkadres een aantal LSAPs (Local Service Access Points) 0 t/m 63, 128 en 255.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-93-
Het netwerkadres kun je vergelijken met een telefoonnummer, terwijl een LSAP is te vergelijken met een doorkiesnummer. Bij dit netwerk geeft het netwerknummer een deelnemer aan en een LSAP geeft een bepaalde functie aan binnen een deelnemer. Een PROFIBUS deelnemer kan dus meerdere functies hebben. Welke functie een LSAP heeft, is door de fabrikant van de deelnemer bepaald. De eigenschappen van een deelnemer staan opgeslagen in een zogenaamde GSD (Geräte Stammdaten Datei) of EDS (Electronic Data Sheet). Deze files worden op een diskette meegeleverd of kunnen van het Internet gedownload worden. Overdrachtsprotocol: Bij PROFIBUS is de overdracht van data ‘teken georiënteerd’. Elk overgedragen teken bestaat uit 11 bits, 3 stuurbits en 8 databits. We noemen dit een UARTteken.
Fig 3.16 UART teken. De overdracht gaat altijd bloksgewijs in frames die gevormd worden uit een ketting UART-tekens. Deze frames komen voor in 4 verschillende formaten. •
Met vaste informatie veldlengte zonder data (L=3, zie het gekleurde vak).
Fig 3.17: PROFIBUS frame zonder data •
Met vaste informatie veldlengte (L=11) met data.
Fig 3.18: PROFIBUS frame met vaste veldlengte •
Met variabele informatie veldlengte (L= 4 tot 249).
Fig 3.19: PROFIBUS frame met variabele veldlengte
Bruno Accou
Hoofdstuk 1 : Cimplicity
-94-
•
Token-frame: vaste lengte voor de volledige frame, zonder data.
Fig 3.17: Token frame Tekenverklaringen: SD1 ... Startbyte (Start Delimiter) SD4 FCS
Testbyte (Frame Check Sequence)
DA
Doeladres (Destination Address)
SA
Bronadres (Source Address)
FC
Controlebyte (Frame Control)
LE, Ler Lengtebyte (Length) ED
Eindbyte (End Delimiter) Fig 3.18: Tekenverklaringen
Beveiligingsmechanismen Wordt er in een frame een fout vastgesteld, doordat bijvoorbeeld de Testbyte (FCS) niet de juiste waarde heeft, dan leidt dit tot de volgende reactie van de deelnemer: • Een fout ontvangen oproep wordt principieel niet uitgevoerd. De oproep moet herhaald worden. • Wordt er een fout antwoord ontvangen, dan moet de oproep eveneens herhaald worden. • PROFIBUS is in staat om uitgevallen deelnemers te herkennen en kenbaar te maken, omdat de adreslijst met actieve en passieve deelnemers steeds geactualiseerd wordt.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-95-
3.1.6 Aansluiten van de PROFIBUS-DP-kabel Voor de aansluiting van PROFIBUS-DP-kabel zijn geen bijzondere voorwaarden gesteld. Het is echter aan te bevelen de kabel niet in de buurt van sterkstroomleidingen te leggen, om overdracht van stoorsignalen (EMC) te voorkomen. De kabel die toegepast wordt is over het algemeen een 2-aderige afgeschermde twisted pair-kabel. Afhankelijk van de toepassing is ook de doorsnede afhankelijk van de lengte en de belasting.
Fig 3.19: PROFIBUS kabel Aan deze kabel wordt aan beide uiteinden een connector gemonteerd. Er zijn twee typen connectoren in gebruik. • Een 9-polige sub-D-connector.
Fig 3.20: 9-polige sub-D-connector
Bruno Accou
Hoofdstuk 1 : Cimplicity
-96-
•
Een ronde 5-polige connector
Fig 3.21: 5-polige ronde connector
Aansluitingen: Bij gebruik van de sub-D-connector wordt de kabel in de connector doorgelust. De connector is daarom uitgevoerd met twee invoeropeningen.
Fig 3.22: 9-polige sub-D-connector De pinnen van de 9-polige sub-D-connector hebben volgens RS485 de volgende functie: Pin
Signal Name
Meaning
1
Shield
Shield, Protective Ground
2
RP
Reserved for Power
3
RxD/TxD-P
Receive / Transmit -Data-P
4
CNTR-P
Control-P
5
DGRND
Data Ground
6
VP
Voltage Plus
7
RP
Reserved for Power
8
RxD/TxD-N
Recieve / Transmit -Data-N
9
CNTR-N
Control-N
Fig 3.23: 9-polige sub-D-connector aansluitpinnen
Bruno Accou
Hoofdstuk 1 : Cimplicity
-97-
Bij de 9-polige sub-D-connector worden maar drie pinnen gebruikt, n.l. de pinnen 1, 3 en 8. Bij de PROFIBUS-kabel wordt de rode ader aangesloten op pin 3, de groene ader op pin 8 en de afscherming op pin 1. Bij gebruik van de ronde 5-polige connector wordt de signaalkabel op een veldmodule doorgelust. Als voor enkele actoren en sensoren een externe voeding vereist is, wordt hiervoor een aparte bus aangelegd. Hierbij kunnen bij een aftakking in de voedingskabel T-stukjes worden toegepast.
Fig 3.24: T-stuk voor ronde PROFIBUS connector Bij deze connectoren wordt de rode ader op pin 2, de groene ader op pin 4 en de afscherming op midden pin 5 aangesloten. Afsluitweerstanden: Om reflectie van de signalen op de bus te voorkomen moet de bus aan beide uiteinden worden afgesloten met een weerstand. Bij de sub-D-connector kan de weerstand van 220 Ώ in de connector gemonteerd worden. Bij toepassing van de ronde connectoren zijn er speciale afsluitweerstanden in de handel die op de uitgang van de laatste veldmodule geschroefd kunnen worden.
Fig 3.25: Afsluitweerstanden
Bruno Accou
Hoofdstuk 1 : Cimplicity
-98-
3.1.7 Topologie PROFIBUS-DP mag niet afwijken van de busstructuur.
Fig 3.26: Busstructuur met repeaters Bij uitgebreide installaties kan in een busstructuur een zeer lange kabel nodig zijn. De maximaal toegestane lengte van de kabel is echter beperkt. Als de benodigde lengte groter is dan de maximale toegestane lengte, moet er een repeater (signaalversterker) worden toegepast. Ook moet er een repeater worden toegepast als het aantal aan te sluiten deelnemers groter is dan 32. Door het toepassen van repeaters kan er ook afgeweken worden van de busstructuur waardoor op kabel bespaard kan worden.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-99-
3.2
Toegepast op de S2K-controller 3.2.1 Installatie
Het opzetten van een correct netwerk met PROFIBUS verloopt in enkele stappen. Stap 1: In hoofdstuk 2.2.3.5 staat beschreven hoe de dipswitches moeten ingesteld worden. Let op: alleen de dipswitches verplaatsen indien de voedingsspanning afstaat van de controller. Stap 2: De PROFIBUS-master configureren. Dit gebeurt in Cimplicity, want de soft-PLC is de master via een PROFIBUS PCI kaart. Om deze kaart in gebruik te kunnen nemen, dienen er ook enkele stappen gevolgd te worden. o Steek de kaart in het PCI-slot. o Start de PC op en run de configuratie-cd. o Volg de instructies op de cd, totdat alle drivers geïnstalleerd zijn. o Start de pc opnieuw op. o Ga naar configuratiescherm systeem hardware apparaatbeheer en klik rechts op de SST-kaart. Kies daarop voor ‘Dit apparaat uitschakelen’. o Start de PC opnieuw op en de installatie is voltooid. Stap 3: De drivers installeren in Cimplicity: Start Cimplicity op, open het project waarin gewerkt moet worden. Klik rechts op ‘Control I/O-drivers’, kies ‘New driver’ PROFIBUS I/O. In het scherm ernaast verschijnt de kaart met zijn gegevens.
Fig 3.27: PROFIBUS drivers Rechts klikken op deze kaart, en onder ‘configure slave’ kan je de instellingen doen uit figuur 3.28.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-100-
Fig 3.28: Instellingen SST-kaart Hier kan de naam aangepast worden van de kaart. Het stationnummer van PROFIBUS is het nummer dat de Master krijgt. Dit moet op 0 staan.
Fig 3.29: Instellingen netwerk parameters Controleer of de netwerkinstellingen kloppen. Klik daarna opnieuw rechts op de kaart en kies voor ‘Add slave’.
Fig 3.30: Slave toevoegen
Bruno Accou
Hoofdstuk 1 : Cimplicity
-101-
Onder de ‘GE FANUC AUTOMATION’ folder bevinden zich enkele slaves. De gewenste slave voor dit eindwerk is: ‘S2K Standalone Motion Controller’. De GSD-file staat volledig beschreven in figuur 3.31. ;----------------------------------------------------; GSD File Standalone Motion Controller ; ; Version V1.0 ;----------------------------------------------------#PROFIBUS_DP GSD_Revision = 1; ;General Parameters Vendor_Name = “GE Fanuc”; Model_name = “S2K Standalone Motion Controller”; Revision = “V1.0”; Ident_Number = 0x05E9; Protocol_Ident = 0; Station_type = 0; FMS_supp = 0; Hardware_Release = “D”; Software_Release = “V1.0”; 9.6_supp = 1; 19.2_supp = 1; 93.75_supp = 1; 187.5_supp = 1; 500_supp = 1; 1.5M_supp = 1; 3M_supp = 1; 6M_supp = 1; 12M_supp = 1; MaxTsdr_9.6 = 60; MaxTsdr_19.2 = 60; MaxTsdr_45.45 = 250; MaxTsdr_93.75 = 60; MaxTsdr_187.5 = 60; MaxTsdr_500 = 100; MaxTsdr_1.5M = 150; MaxTsdr_3M = 250; MaxTsdr_6M = 450; MaxTsdr_12M = 800; Redundancy = 0; Repeater_Ctr_Sig =2; 24V_Pins = 0 ; Implementation_Type = « DPC31 » ; ;Slave Specification :
Bruno Accou
Hoofdstuk 1 : Cimplicity
-102-
Freeze_Mode_supp = 1 ; Sync_Mode_supp = 1 ; Auto_Baud_supp = 1; Set_Slave_add_supp = 0; User_Prm_Data_Len = 3 ;3 bytes for DPV1 User_Prm_Data = 0x00,0x00,0x00; Fail_Safe = 1; Min_Slave_Intervall = 1; Max_Diag_Data_Len = 6; Modul_Offset =0; Slave_family = 1 ; Drive Family Modular_Station = 1; Max_Module = 1 ;Only One module @ a time Max_Input_Len = 20; ; 20 bytes input data Max_Output_Len = 20; ; + 20 bytes output data Max_Data_Len = 40; ; = 40 bytes I/O data Module = “PPO-Type 1” 0xF3, 0xF1; EndModule; Module = “PPO-Type 2” 0xF3, 0xF5; EndModule; Module = “PPO-Type 3” 0xF1; EndModule; Module = “PPO-Type 4” 0xF5; EndModule; Fig 3.31: GSD-file S2K-controller Indien de gewenste drive zich niet in deze lijst bevindt, dan moet de GSDfile van deze drive geladen worden via ‘Have disk’. Als de correcte controller geselecteerd is, veschijnt het venster zoals in figuur 3.32.
Fig 3.32: Properties S2K-controller Bruno Accou
Hoofdstuk 1 : Cimplicity
-103-
Hier is het belangrijk om het juiste PROFIBUS-adres te selecteren van uw controller. Dit is ingesteld met dipswitches. Deze S2K-controller maakt gebruik van 4 verschillende PPO-types om te communiceren over PROFIBUS. Dit is ook te zien in de GSD-file. PROFIBUS communiceert over 2 verschillende kanalen: •
•
PPO PPO PPO PPO
Parameter data kanaal (PKW): via dit kanaal gebeuren de instellingen van de drive. Dit datakanaal wordt minder gebruikt dan het procesdata kanaal. Dit kanaal bestaat uit 8 bytes, of 4 datawoorden. Procesdata kanaal (PZD): over deze weg wordt de drive bestuurd. Hier is de keuze ongeveer vrij over hoeveel woorden er zal gecommuniceerd worden. Dit staat beschreven in de 4 PPO-types.
type 1: bestaat uit 4 PKW woorden en 2 PZD woorden. (PZD woord 5 en 6) type 2: bestaat uit 4 PKW woorden en 6 PZD woorden. type 3: bestaat uit 0 PKW woorden en 2 PZD woorden. (PZD woord 5 en 6) type 4: bestaat uit 0 PKW woorden en 6PZD woorden.
Fig 3.33: De verschillende PPO-types In dit eindwerk werd ‘PPO type 2’ gebruikt want dit kanaal biedt de meeste informatie. Dit is in te stellen onder ‘modules’. Klik op Add, en PPO type 2 selecteren. Zie figuur 3.34.
Fig 3.34: Selecteren PPO-type
Bruno Accou
Hoofdstuk 1 : Cimplicity
-104-
Na deze instellingen verschijnt de volledige lijst in het tabblad ‘Control I/O’. Deze is te zien in figuur 3.35.
Fig 3.35: Control I/O drivers Er is duidelijk te zien dat er 10 inputwoorden en 10 outputwoorden zijn. Deze 10 zijn opgesplitst in 4 parameterdata woorden en 6 procesdata woorden. In dit eindwerk zijn er twee controllers gebruikt, dus er dient nog een controller te worden toegevoegd op dezelfde manier. Daarna moet de configuratie gedownload worden in de Soft-PLC. Indien het netwerk correct is geconfigureerd, dan lichten de groene leds op de S2K-controllers op. Dit is verduidelijkt in figuur 3.36.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-105-
Fig 3.36: Netwerk Status led De status van de Soft-PLC kan ook opgevraagd worden indien er op het logo geklikt wordt, dat zich in Windows onderaan naast de tijd bevindt. Het venster als in figuur 3.37 komt tevoorschijn. Als de controller correct functioneert, dan is dit logo volledig groen. Is de controller in een foutstatus, dan staat er een ‘F’ in het logo.
Fig 3.37: Status Soft-PLC
Bruno Accou
Hoofdstuk 1 : Cimplicity
-106-
Aanspreken van deze datawoorden in Cimplicity kan gemakkelijk door een naam toe te kennen aan de woorden. Dit is volledig toegepast in figuur 3.38.
Fig 3.38: Symbolic names toegekend aan de Control I/O drivers Vb: IW0 kan nu aangesproken worden door links_outputw1 in Cimplicity.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-107-
3.2.2 Werking PROFIBUS maakt gebruik van in- en output datawoorden. Deze woorden worden onderverdeeld in procesdata en parameter data. 3.2.2.1
Output data words
De schematische voorstelling van de Output data words ziet er uit als in figuur 3.39.
Fig 3.39: Output data words
Bruno Accou
Hoofdstuk 1 : Cimplicity
-108-
Het parametergedeelte bestaat dus uit 4 woorden. Het eerste parameterwoord is onderverdeeld in 2 zones. Eén bit is gereserveerd. De ‘task ID’ bepaalt de bewerking die moet worden uitgevoerd. Dit is vastgelegd in een tabel. Zie figuur 3.40.
Fig 3.40: Task ID’s Het parameternummer is het nummer dat bepaalt welke gebeurtenis er wordt volbracht in de parameterdata. Het tweede parameterwoord kan verdere informatie bevatten over de bewerking die wordt uitgevoerd. De index wordt gebruikt wanneer een array gebruikt wordt. Dit is van toepassing bij parameternummers 90 tem 120 en bij de ‘faultarray’ met PNU (parameternummer) 947. Alle codes die worden doorgestuurd worden hexadecimaal opgesteld. Het derde en vierde parameterwoord worden gebruikt om data te transporteren. Dit kan met 4 bytes per transactie. Dit ‘double woord’ is opgedeeld in een LSW (Least significant word) en een MSW (most significant word).
Bruno Accou
Hoofdstuk 1 : Cimplicity
-109-
Het procesdata gedeelte bestaat uit 6 woorden. Het eerste van deze 6 outputwoorden is het controlewoord. Dit controlewoord bestuurt de controller. Dit controlewoord is opgedeeld in 16 bits. Dit is te zien in figuur 3.41.
Fig 3.41: Controle woord Zoals er te zien is in figuur 3.41 is het controlewoord opgesplitst in 2 delen. Er zijn 2 modes om te werken met de S2K-controller, net zoals alle andere servodrives. Er is ‘speed-control’ en ‘position-control’. In dit eindwerk zijn allebei de modes gebruikt. Om de controller te veranderen van mode dient parameternummer 930 aangesproken te worden. 1= speed control, 2= position control. Het statuswoord voor deze 2 modes wordt in de figuren 3.42 en 3.44 volledig uitgelegd.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-110-
Output controle woord : Speed control mode (1).
Fig 3.42: Speed control mode Om de drive volledig te laten starten zonder fouten dient de instructie als in figuur 3.43 doorgezonden te worden naar outputwoord5. links_outputw5:=16#04FF; rechts_outputw5:=16#04FF;
‘ beide drives terug enablen
Fig 3.43: Outputwoord 5
Bruno Accou
Hoofdstuk 1 : Cimplicity
-111-
Output controle woord : Position control mode (1).
Fig 3.44: Position Control mode Bruno Accou
Hoofdstuk 1 : Cimplicity
-112-
Bit 12 is een belangrijke bit in dit controlewoord. Hier wordt bepaald of de beweging relatief of absoluut moet gebeuren. Om een relatieve beweging uit te voeren is de instructie als in figuur 3.45 nodig. rechts_outputw5:=16#14BF; '14BF-> B voor de edge die moet geg. W.
Fig 3.45: Relatieve beweging starten Om deze instructie te kunnen uitvoeren dient er natuurlijk eerst een positie doorgegeven te worden. Ook in snelheidsmode moet de snelheid eerst doorgegeven worden vooraleer de drive kan starten. De snelheid wordt doorgegeven in outputwoorden 7 en 8. Dit zijn de ‘velocity setpoints’. De positie wordt doorgegeven in outputwoorden 9 en 10. Dit zijn de ‘position setpoints’. Dan rest er enkel nog outputwoord 6: Outputwoord 6 bepaalt de digitale uitgangen op de controller. Om de PROFIBUS master het recht te verlenen om deze uitgangen te setten/resetten op de controller, moet er eerst een parameter gewijzigd te worden in de parameterdata. Deze instelling gebeurt als in figuur 3.46. links_outputw1:=16#2047; links_outputw4:=16#000F;
’Parameter 71 : output control.
Fig 3.46: Output control activeren De ‘F’ staat toe om alle uitgangen te bedienen. Deze waarde kan ook dienen als filter. Daarna kan outputwoord 6 aangesproken worden om een uitgang te bedienen. In figuur 3.47 wordt enkel de waarde van een bepaalde bit gewijzigd. Er kan ook rechtstreeks geschreven worden naar outputwoord 6. links_outputw6 := links_outputw6 + 16#0100;
Fig 3.47: Uitgang activeren
Bruno Accou
Hoofdstuk 1 : Cimplicity
-113-
Outputwoord 6 heeft nog een eigenschap. Er kunnen in de S2K-controller motion blocks gestart worden. Dit kan door het nummer van de motion block in outputwoord 6 te schrijven, én nadien via het controlewoord te starten. Het is zeer belangrijk om eerst het parameternummer aan te passen, én dan pas de waarde te schrijven naar het 3de en/of het 4de parameterdata woord. Zie figuur 3.48. rechts_outputw1:=16#3020; rechts_outputw4:=16#1000; Fig 3.48: Gebruik van parameterwoorden Zoniet kunnen er waarden voorkomen, die niet voor deze parameter bedoeld zijn. Er moet ook gecontroleerd worden of de parameterwijziging is doorgevoerd, anders kunnen er fouten ontstaan! Dit is de ‘IF’-conditie in figuur 3.49. if (rechts_inputw1=16#2020) then CASETELLER:=5; end_if; Fig 3.49: conditioneel werken
Bruno Accou
Hoofdstuk 1 : Cimplicity
-114-
3.2.2.2
Input data words
De schematische voorstelling van de Input data words is te zien in figuur 3.50.
Fig 3.50: Input data words Het parametergedeelte (PKW) uit figuur 3.50 bestaat dus ook uit 4 woorden. Het eerste parameterwoord is onderverdeeld in 2 zones. Eén bit is gereserveerd. De ‘task ID’ geeft de bewerking die momenteel wordt uitgevoerd weer. Dit is vastgelegd in figuur 3.51.
Fig 3.51: Task ID’s input data words De werkwijze met de parameternummers is identiek aan die van de Output data words.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-115-
De drie andere parameterwoorden werken ook op hetzelfde principe als de Output data words. Enkel het 4de outputwoord heeft nog een extra functie. Bij het overbrengen van een verkeerde instructie over de Output data words, kan response ID = 7 komen, waarbij het ‘error’ nummer in PKW4 wordt geschreven. De types ‘errors’ zijn te zien in figuur 3.52.
Fig 3.52: Error nummers
Bruno Accou
Hoofdstuk 1 : Cimplicity
-116-
Het procesdata gedeelte (PZD) uit figuur 3.50 bestaat ook uit 6 woorden. Het eerste van deze 6 outputwoorden is het statuswoord. Dit statuswoord geeft de toestand van de controller weer. Dit statuswoord is opgedeeld in 16 bits.
Fig 3.53: Statuswoord Bij de Input data words wordt ook op het principe gewerkt van ‘speed control mode’ en ‘position control mode’. Het statuswoord wordt daarom opnieuw opgesplitst per mode, deze twee woorden zijn terug te vinden in figuren 3.54 en 3.56.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-117-
Input status woord: Speed control mode (1).
Fig 3.54: Speed control mode - inputwoord Zoals te zien is in figuur 3.54, bezit bit 15 een alternerende mode, met een tijdsinterval van 100ms. Om gemakkelijk te werken, wordt in dit eindwerk deze ‘heartbeat’ bij het inlezen van het statuswoord eruit gefilterd. Dit is te zien in figuur 3.56. statuswoord_w2:=links_inputw6; statuswoord_w2:= statuswoord_w2 & 16#7fff; Fig 3.55: Heartbeat filteren uit statuswoord
Bruno Accou
Hoofdstuk 1 : Cimplicity
-118-
Input status woord: Position control mode (1).
Bruno Accou
Hoofdstuk 1 : Cimplicity
-119-
Fig 3.56: Position control mode – inputwoord In het statuswoord zijn naast de gewone status van de controller enkele bits zeer belangrijk. • •
•
Bit 3: Bij een fout in de controller zal deze bit hoog worden. De exacte fouten kunnen achterhaald worden via parameters 947 en 952. Bit 11: ‘Reference Point Set’. De drive zal enkel functioneren in positiemode als dit referentiepunt is geactiveerd. Hoe dit gebeurt wordt later in dit hoofdstuk besproken. Bit 14: ‘Torque Limit’. De S2K-controller bezit een functie waarbij een koppellimiet kan ingesteld worden. Dit wordt ook gebruikt in het programma ‘refereren_motoren’. Wanneer deze limiet bereikt wordt, dan komt deze bit hoog.
De actuele snelheid wordt weergegeven in inputwoorden 7 en 8. De actuele positie wordt weergegeven in inputwoorden 9 en 10. Inputwoord 6 geeft de toestand van de digitale ingangen weer, samen met het motion block die momenteel actief is.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-120-
3.2.2.3
Refereren
Het refereren gebeurt via het parameterdata kanaal. Er wordt gebruik gemaakt van verschillende parameternummers. Deze zijn te zien in figuur 3.57.
Fig 3.57: Parameternummers voor refereren Via parameter 29 kan de actuele positie gewijzigd worden naar een bepaalde waarde. In dit eindwerk wordt deze waarde op 0 gezet. Parameter 30 t.e.m. 32 bepalen de snelheden en versnellingen van de motor gedurende het refereren. Parameter 33 bepaalt het type van refereren. Er zijn 3 types. • • •
0 = home input, DI1 wordt gebruikt om een switch binnen te lezen. 1 = Marker input = resolver nulpunt of encoder index. 2 = OT input. (DI2 = forward, DI3 = reverse).
Het refereren van de drive en de motor kan op 3 manieren gebeuren. De eerste manier gebeurt zoals het meest toegepast in de industrie: met een hardwareswitch. In dit eindwerk is dit niet van toepassing. Op de tweede manier kan het referentienulpunt van de resolver gezocht worden. Hier zal de drive maximum één toer draaien, tot hij zijn nulpositie vindt. Daarna zal het referentiepunt geactiveerd worden. De derde manier gebeurt via een externe hardwareswitch waarbij, wanneer deze ingang continu hoog blijft, de motor niet zal bewegen en direct zijn referentienulpunt zal activeren. Deze methode wordt toegepast in dit eindwerk. Digitale input 3 wordt hiervoor gebruikt.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-121-
De programmataal voor beide motoren is te zien in figuur 3.58. 2:
links_outputw1:=16#301E;’ PNU 30 reference velocity op 0 zetten. Rechts_outputw1:=16#301E;’ referencepoint setten zonder beweging links_outputw3:=0; links_outputw4:=0; rechts_outputw3:=0; rechts_outputw4:=0; if (rechts_inputw1=16#201E) and (links_inputw1=16#201E) then CASETELLER:=3; end_if;
3:
links_outputw1:=16#201F; ‘ marker velocity op 0 zetten rechts_outputw1:=16#201F; if (rechts_inputw1=16#101F) and (links_inputw1=16#101F) then CASETELLER:=4; end_if;
4:
links_outputw1:=16#3020; ‘reference acc en dec mag niet 0 zijn. Rechts_outputw1:=16#3020; links_outputw4:=16#1000; rechts_outputw4:=16#1000; if (rechts_inputw1=16#2020) and (links_inputw1=16#2020) then CASETELLER:=5; end_if;
5:
links_outputw1:=16#2021;’ reference position type: 2 : OT input, rechts_outputw1:=16#2021; ‘ we gebruiken input 3 (in_stop) als nc. Links_outputw4:=16#0002; rechts_outputw4:=16#0002; if (rechts_inputw4=16#0002) and (links_inputw4=16#0002) then CASETELLER:=6; end_if;
6:
links_outputw5:=16#0CFF; ‘ start referencing rechts_outputw5:=16#0CFF; if ((rechts_inputw5&16#0800)=16#0800) then ‘if ref=ok,ga verder if ((links_inputw5&16#0800)=16#0800) then CASETELLER:=7; end_if; end_if;
Fig 3.58: Programma voor refereren
3.2.2.4
Enabling
Om de drive te disablen kan bit 3 van het controlewoord gereset worden. Om de drive terug te enablen moet bit 3 geset worden.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-122-
3.2.2.5
Foutcontrole
Het actief worden van bit 3 van het statuswoord, duidt aan dat een fout is opgetreden. Om de fout te achterhalen, moeten parameters 947 en 952 aangesproken worden. In parameter 952 staat het aantal fouten die opgetreden zijn. Dit nummer (+1) kan als index gebruikt worden om in de ‘faultarray’ fout per fout te gaan aflopen. De ‘faultarray’ bevindt zich onder parameternummer 947. Om deze arary aan te spreken dient ID-nummer=6 gebruikt te worden. De structuur is te zien in figuur 3.59.
Fig 3.59: Foutcode arrays Per element in de array staat opnieuw een nummer. Ieder nummer staat voor een foutcode. De meest voorkomende fouten staan beschreven in figuur 3.60.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-123-
Fig 3.60: Foutcodes S2K-controller
Bruno Accou
Hoofdstuk 1 : Cimplicity
-124-
4. De opstelling. 4.1
Inleiding
Als opstelling voor dit eindwerk werd geopteerd voor een wikkelsysteem. Hierbij staan 2 motoren, waarop twee schijven bevestigd zijn, met elkaar in verbinding via één lint. Dit lint moet via drie geleidingswielen, afrollen van de ene schijf naar de andere schijf. Nadien wordt van draairichting gewisseld. Om het voorbeeld te volgen van de andere labo-opstellingen werd de opstelling gemaakt op een bord met driehoekvormige steunplaten. Deze opstelling is vervaardigd uit plaatstaal. Deze plaat is met laserstralen uitgesneden, en nadien in de juiste vorm geplooid. De twee motoren zijn vast gemonteerd op deze metalen plaat. Twee geleidingswielen zijn ook vast gemonteerd via rollagers. Het derde geleidingswiel is op een plaat gemonteerd, dat aan zijn ene uiteinde met een as bevestigd is op de hoofdplaat. Op deze as zit een potentiometer die de beweging van dit geleidingswiel moet opmeten. De waarde van deze potentiometer wordt analoog binnengelezen in de rechter S2K-controller. Op deze plaat is een bakje gemonteerd met de in– en uitgangen. Er zijn 8 digital ingangen, 5 digitale uitgangen en 2 analoge ingangen. Er is ook een externe optische encoder in potentiometervorm bevestigd op deze plaat, maar wegens tijdsgebrek is deze encoder niet gebruikt in dit eindwerk. Als beveiliging is een doorzichtige plaat in plexiglas bevestigd bovenop de schijven waar het lint op bevindt. Er is een Lenze-veiligheidscontact bevestigd die de controller laat weten als deze plaat geopend is. Dit contact is aangesloten op de digitale ingangen. 4.2
Ontwerp tekeningen
De mechanische tekeningen zijn terug te vinden in de bijlagen.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-125-
4.3
Resultaat
De werkelijke opstelling is te zien in figuur 4.1.
Fig 4.1: Foto opstelling
Bruno Accou
Hoofdstuk 1 : Cimplicity
-126-
5. Het programma. 5.1
Inleiding
Het programma voor dit eindwerk valt op te delen in verschillende programma’s. Een aantal programma’s draaien continu, de andere zijn voorwaardelijk. De werking is verduidelijkt in de flowchart in figuur 5.1.
start van de controller
refereren motoren hulpprogramma's berekenen startsnelheden
hoofdprogramma
Fig 5.1: Volledig programma in flowchart Wanneer de controller opstart, doorloopt hij eerste twee functies vooraleer hij in zijn hoofdprogramma terecht komt. Deze twee functies zijn noodzakelijk om de motoren én de opstelling te refereren en te initialiseren. Het bovenstaande schema is vertolkt in het ‘main-ladder’ programma.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-127-
5.2
Refereren
De functie refereren heeft 2 belangrijke taken. Ten eerste de motoren zelf refereren, en ten tweede de opstelling refereren. Hoe de motoren zelf moeten gerefereerd worden, staat beschreven in hoofdstuk 3. Het refereren van de opstelling gebeurt op een eenvoudige manier. Zoals eerder vermeld, bestaat de opstelling uit twee schijven waarop één lint is bevestigd. Hoe kan je nu zonder externe sensoren bepalen hoeveel lint er op de beide schijven ligt? Dit kan je perfect berekenen wanneer de twee schijven op de motor identiek dezelfde zijn, en wanneer je de minimumdiameter (volledig afgewonden) en de maximumdiameter (volledig opgewonden) weet. Deze twee parameters werden manueel opgemeten. Hiervan kan gemakkelijk de gemiddelde waarde berekend worden, waarmee verder gewerkt wordt. Wanneer het commando gegeven wordt om te starten met refereren, zal de controller de rechterdrive gaan disablen, zodanig dat hij zijn motor loslaat. Daarna zal de controller de linkerdrive in positioneermode één volledige toer doen draaien. Wanneer dit voltooid is, zal de controller de verdraaiing opmeten in de rechter motor aan de hand van het aantal pulsen in de huidige positie. Deze twee positieveranderingen worden door elkaar gedeeld, waardoor er een verhouding wordt verkregen van de twee diameters. Als bij toeval de linkerschijf volledig is opgewonden, dan kan er niet meer verder gedraaid worden. Dit wordt gedetecteerd via de koppellimiet. Vóór het refereren begint, zal de koppellimiet geactiveerd worden. Als het lint volledig is opgewonden, en de schijf kan niet meer verder opwikkelen, zal de motor het koppel opdrijven tot hij wel aan zijn volledige toer kan komen. Wanneer de koppellimiet wordt bereikt, dan zal er gedraaid worden van richting, en zal de rechtermotor één toer draaien, terwijl de linkermotor gedisabled is.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-128-
5.3
Berekenen startsnelheid
In de functie ‘berekenen_startsnelheid’ wordt de basis gelegd van de werking van het systeem. Hier wordt eerst de verhouding van de diameters berekend. Dit is te zien in figuur 5.2. gemeten_verhouding_stralen:= (int_to_real (links_positionwoordLSW) /int_to_REAL (rechts_positionwoord_LSW));
Fig 5.2: Berekenen verhouding diameters De diameters worden berekend aan de hand van de regels in figuur 5.3. gevr_straal1:=(((1.0-gemeten_verhouding_stralen) /(1.0 +gemeten_verhouding_stralen)) * gemiddelde_straal); gevr_straal1:= gemiddelde_straal + gevr_straal1;
Fig 5.3: Berekenen diameters De startsnelheid wordt berekend zoals in figuur 5.4. start_snelheid1:=real_to_int((hulpsnelh/ (2.0*3.141592654*gevr_straal1))*4096.0);
Fig 5.4: Berekenen snelheid De hulpsnelheid is een referentiesnelheid die in het programma wordt gemanipuleerd. Dit principe wordt ook toegepast in het hoofdprogramma waar de diameter continu berekend wordt, en het gemiddelde van de laatste 5 diameters wordt genomen. In deze functie wordt ook bepaald welke richting er eerst wordt gedraaid. Hiervoor wordt gekeken op welke schijf het meeste lint ligt. Dan zal deze schijf zich afwinden. Er werd 1 bit gebruikt als indicator voor de draairichting. Dit is te zien in figuur 5.5. if (gevr_straal1<=gevr_straal2) then draairichting_motoren:=#false; else draairichting_motoren:=#true; end_if;
Fig 5.5: Eerste richting bepalen
Bruno Accou
Hoofdstuk 1 : Cimplicity
-129-
5.4
Omrekenen snelheden
Deze functie is één van de kleine functies die naast de hoofdcyclus draaien. In deze functie worden de snelheden van de motoren berekend in toeren per minuut. De snelheid die wordt binnengelezen staat in pulsen per seconde, en is gesplitst in 2 ‘double-woorden’. Dit is te zien in figuur 5.6. Hulp1:=shl(links_velocitywoordMSW,16); Hulp2:=Hulp1+links_velocitywoordLSW; hulp3:=Hulp2*60; links_actual_velocity:=hulp3/4096;
Fig 5.6: Berekenen snelheden in tr/min 5.5
Ingangenkopieerfunctie
In deze functie worden enkele variabelen die aangemaakt zijn in Cimplicity gemanipuleerd aan de hand van het tweede statuswoord in de linkse controller. De digitale ingangen zijn aangesloten op deze controller. In figuur 5.7 is een deel van deze functie te zien. statuswoord_w2:=links_inputw6; statuswoord_w2:= statuswoord_w2 & 16#7fff; ingangen := statuswoord_w2 AND 16#3F00; ingangen := shr(ingangen, 8); if ((ingangen & 16#0001) = 1) then in_resetNS:= #true; else in_resetNS:= #false; end_if; if ((ingangen & 16#0002) = 2) then in_start:= #true; else in_start:= #false; end_if;
Fig 5.7: Ingangenkopieerfunctie
Bruno Accou
Hoofdstuk 1 : Cimplicity
-130-
5.6
Startstopfunctie
In de functie in 5.8 wordt een virtueel startstopcontact bediend. Deze functie is opgesteld in ladder. Deze bit wordt over heel het hoofdprogramma gebruikt.
Fig 5.8 : Startstop programma 5.7
Hoofdprogramma
Het hoofdprogramma is samengesteld uit verschillende subroutines. De reden hiervoor staat beschreven in het hoofdstuk 6: Problemen. Om deze structuur van subroutines intact te houden is een kunstmatige ‘case’ aangemaakt. De variabele hiervoor is ‘wisselteller’. De verschillende subroutines en hun volgorde is te zien in figuur 5.9. Hoofprogramma
draairichting bepalen en doorgeven
foutdetectieprogramma
uitgangenkopieerfunctie
Herberekenen diameters tijdens runnen
PI regelaar
Referentiesnelheid berekenen
Fig 5.9: Flowchart subroutines •
•
Bepalen draairichting: Er wordt één bit gebruikt om de draairichting aan te geven. De draairichting wordt doorgegeven als parameterdata naar de drives. Foutdetectieprogramma: Een fout wordt gedetecteerd door de foutbit in in beide statuswoorden. Als in één van de drives een fout gedetecteerd wordt, dan zal de controller de andere drive disablen. Er wordt ook een
Bruno Accou
Hoofdstuk 1 : Cimplicity
-131-
•
•
•
‘foutbit’ geset als indicator voor de fout. Deze foutbit zal het startstopnetwerk verbreken. Uitgangenkopieerfunctie. Hier worden de uitgangen bediend. Per digitale uitgang is een variabele aangemaakt met de correcte benaming. Deze variabelen kunnen niet rechtstreeks doorgestuurd worden, want alle uitgangen moeten via outputwoord6 gecontroleerd worden. Herberekenen diameters tijdens runnen: Hier wordt het principe gebruikt van het refereren van de machine. Per toer dat de linkse motor draait, zal de verdraaiing opgemeten worden in de rechtse motor. Hiermee wordt opnieuw de verhouding berekend, waarmee beide diameters worden berekend. Aan de hand van deze diameters worden ogenblikkelijk opnieuw de snelheden berekend. De referentiesnelheid berekenen: Gebeurt aan de hand van de analoge potentiometer die zich op de opstelling bevindt. Deze analoge waarde varieert tussen 0 en 6V. Deze waarde wordt met een factor vermenigvuldigd om voor het lint een gewenste snelheid te bekomen in mm/sec.
De PI-regelaar. Deze regelaar wordt gebruikt om de snelheid aan te passen op de linkse motor. Daarmee wordt de positie van het derde (losse) geleidingswiel bepaald. Dit wiel moet op een vaste positie blijven. Hiervoor moest een PI-regelaar gebruikt worden. Het regelschema is te zien in figuur 5.10.
Kp Uitgang in % begrenzing
Fout in percent
+
Ki
begrenzing +
-1
Z
Fig 5.10: Regelschema PI-regelaar
Bruno Accou
Hoofdstuk 1 : Cimplicity
-132-
De fout die wordt binnengelezen is uitgedrukt in percent. Ook de uitgang is begrensd en in percent uitgedrukt. Deze uitgang wordt omgerekend naar de snelheid van de linkermotor. Per 100 pulsen worden maximum 10 pulsen bijgeteld of afgetrokken. De versterkingsfactoren werden bepaald met ‘de natte vinger’. Er werd ook vastgesteld dat deze factoren moesten dalen naarmate de snelheid stijgt. Dit is eigenlijk normaal, want het gedrag van het proces verandert bij een varierende snelheid. Deze afname gebeurt lineair met de snelheid. De deelfactor werd ook proefondervindelijk vastgesteld. De bemonsteringsfrequentie is afhankelijk van de snelheden van beide motoren. Hiervoor worden vanaf een bepaald punt beide snelheden opgeteld, en vergeleken met de vorige bemonsteringspositie. Wanneer deze 4096 (gedeeld door een factor) pulsen verder is dan vorige opgeslagen positie, dan wordt de vorige uitgang van de I-regelaar terug gekopieerd. De PI-regelaar is geschreven in ST-taal en wordt weergegeven in figuur 5.11. Pfout:= Kp * fout_level_percent; ifout:= Ki * fout_level_percent; iofout_tss:= ifout + ifout_oud; iofout:=iofout_tss; if ( iofout >= 100.0 ) then iofout:=100.0; end_if; if ( iofout <= -100.0 ) then iofout:= -100.0; end_if; if (passbit=#true) then ifout_oud:=iofout; passbit:=#false; end_if; if (gewenste_snelheid=0) then ifout_oud:=0.0; end_if; fout_out_percent:=Pfout + iofout; fout_out_visu:=Pfout + iofout; if (fout_out_percent >= 200.0) then fout_out_percent:=200.0; end_if; if (fout_out_percent< -200.0) then fout_out_percent:= -200.0; end_if;
Fig 5.11: Regelschema in ST-taal
Bruno Accou
Hoofdstuk 1 : Cimplicity
-133-
5.8
Visualisatie
De visualisatie bestaat uit verschillende onderdelen. Er zijn 3 hoofdpagina’s. Op de eerste pagina staat een 2D weergave van de opstelling. Hierbij staan ook alle waarden weergegeven.
Fig 5.12: Hoofdpagina opstelling In figuur 5.12 wordt alles aangepast zoals in de werkelijke opstelling. • • • • • •
De twee schijven varieren mee met de positie van het lint. De beweging van het derde geleidingswiel is ook te zien, met het percentage van de afwijking. De lampen, drukknoppen en schakelaars worden weergegeven zoals in de werkelijke opstelling. De snelheid van het lint wordt uitgedrukt in mm/sec. De snelheden van de motoren worden aangeduid in toeren/minuut. De stralen van de schijven zijn ook geintegreerd.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-134-
Onderaan de pagina kan naar de twee andere pagina’s gesprongen worden. De tweede pagina verduidelijkt de PI-regelaar. De pagina ziet uit als in figuur 5.13.
Fig 5.13: PI-regelaar In figuur 5.13 zijn alle waarden van de regelaar weergegeven. Ook alle snelheden worden in een schematische voorstelling aangeduid. Op deze pagina staat een snelkoppeling naar een pagina waar de inkomende fout en de uitgaande regeling wordt uitgezet in een grafiek in functie van de tijd. Deze grafiek is te zien in figuur 5.14. Hier is te zien dat de regelaar goed is afgesteld. De pieken komen voor bij het omkeren van draaizin. Dit is afhankelijk van de traagheid van het systeem. De rode trend is de binnenkomende fout. De blauwe trend is de uitgang van de regelaar.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-135-
Fig 5.14: Foutmarges in trendgrafiek De derde pagina, te zien in figuur 5.15, duidt een overzicht aan van de snelheden en de posities van de motoren, alsook de toestand van het startstoprelais. Een aantal andere waarden zijn ook weergegeven.
Fig 5.15: Pagina met snelheden en posities
Bruno Accou
Hoofdstuk 1 : Cimplicity
-136-
In figuur 5.15 kan ook een trendgrafiek geactiveerd worden van de snelheden in functie van de tijd. Een momentopname van deze trendgrafiek is te zien in figuur 5.16.
Fig 5.16: Trendgrafiek motorsnelheden Op deze trend is duidelijk de lineariteit te zien tussen beide motoren.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-137-
6. Problemen Er zijn twee grote problemen opgetreden tijdens dit eindwerk. Eerste probleem: Het programma, dat de volledige werking van deze wikkelaar bepaalt, is een samenvoeging van vele kleine testprogramma’s. Het spreekt voor zich dat dit geen eenvoudige opdracht was, waarbij veel problemen optraden. Deze problemen waren vooral te wijten aan Windows, het operating system waar deze soft-plc op draait. De volledige cyclus van de soft-PLC is te zien in de flowchart in figuur 6.1.
I/O lezen
Ladder uitvoeren
SFC uitvoeren
ST-blocks uitvoeren
FBD-blocks uitvoeren
schrijven naar I/O
Fig 6.1: Cyclus Soft-PLC
Bruno Accou
Hoofdstuk 1 : Cimplicity
-138-
Wanneer de controller verschillende programma’s heeft van hetzelfde type, zal hij deze simultaan uitvoeren indien ze niet geforceerd worden om afzonderlijk te worden uitgevoerd. Op dit moment kan er in windows-termen gesproken worden over concurrentiële processen. Hier kunnen variabelen die door meerdere programma’s worden aangesproken een verkeerde waarde krijgen. Dit was het geval bij de output data woorden van PROFIBUS. Eerst was het hoofdprogramma opgedeeld in meerdere subroutines, allemaal van het type ST. Deze subroutines spraken allemaal dezelfde outputwoorden aan, om parameterdata heen en weer te brengen. Op zo’n moment liep alles in het honderd, omdat deze programma’s allemaal naar deze woorden wilden schrijven. Dit probleem is opgelost geweest door alles in één programma te schrijven, met een onderlinge ‘wisselteller’, die bepaalde wanneer de subroutine was vervolledigd. Er moest namelijk ook aandacht gevestigd worden op de al dan niet trage werking van het veldbussysteem. Bij het overbrengen van een parameternummer met zijn data moest er gekeken worden of deze data wel effectief was overgebracht naar de controller. Indien hier geen rekening mee gehouden werd, dan ging het proces té snel, en werden verschillende waarde niet overgebracht. Een tweede probleem kwam voor bij de PI-regelaar. Deze was zeer moeilijk af te regelen. Vooral bij de vraag van een zeer snelle snelheidsverandering was het systeem erg ondynamisch. Na raad van enkele docenten werd snel duidelijk dat de soft-plc niet snel genoeg reageerde. Dit werd onderzocht en de cyclystijd van deze controller stond inderdaad veel te traag (500ms). Voor een tijdskritisch proces is dit onaanvaardbaar. De cyclustijd werd verkleind, en per milliseconde werd getest of de PC nog kon volgen. Uiteindelijk werd een cyclustijd van 6ms ingesteld waarop de regelaar perfect werkte. Het systeem werd niet meer instabiel en reageerde hoogdynamisch.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-139-
Besluit Eerst en vooral mag er besloten worden dat de hoofddoelstelling bereikt is. Deze bestond erin om de term ‘Motion Control’ uit de doeken te doen en te integreren in het labo automatisering. Dit eindwerk is een perfecte illustratie van ‘Motion Control’. De daarop volgende doelstellingen zijn ook stuk voor stuk bereikt. De opgedane kennis van het programma Cimplicity werd overgebracht op 2 manieren. Een grondige uitleg en demonstratie aan een docent uit de richting Automatisering, en een handleiding die het mogelijk moet maken om perfect met dit programma om te gaan. De opstelling kan zeker en vast gebruikt worden als educatieve proef in het labo, hetzij om het ontwikkelde besturingsprogramma te herprogrammeren of te verbeteren, ofwel als proef om een regelaar te ontwerpen. Dit eindwerk kan tevens dienst doen als project om een SCADA/HMI applicatie te ontwerpen.
Bruno Accou
Hoofdstuk 1 : Cimplicity
-140-
Bibliografie Titel: S2K Series - Standalone Motion Controller , User’s Manual Bestandsnaam: GFK-1848G.pdf Titel: GE Fanuc Automation - Computer Numerical Control Products - Alpha Series Motors and Modular Drives, Maintenance Manual. Bestandsnaam: GFZ65165E02.pdf Titel: Motion solutions Auteur: Jeff Hill Titel: Motion solutions catalog gfa483 Auteur: Suzanne Nifong Website: www.gefanuc.com
Bruno Accou
Hoofdstuk 1 : Cimplicity
-141-