OOP - Klass
Källkod som kapslas in och som skydda mot otillåtna anrop utifrån

Objektorienterad programmering ser till maskinens komponenter och låter programmeraren implementera dessa som klasser
Objektorienterad programmering, OOP, bygger på inkapsling av källkod. Därmed kan inte anrop från andra processer och trådar som inte har tillträde till den skyddade koden genomföras. Det är en stor fördel. När källkod kan anropa alla olika subrutiner och variabler utan någon som helst validering får man stora problem ju större och mer komplext ett program blir. Detta löser OOP. När källkoden till en klass är utvecklad, testad och klar så implementerar man nästa klass.
Kapsla in koden och skydda den från utomstående, icke tillåtna, anrop
Problem som kan uppstå i stora och komplexa projekt men som avhjälps med OOP
Ju större ett projekt är och ju mer källkod det innefattar desto viktigare är det att man har följt en tydlig linje vid implementationen. Det är då man verkligen drar nytta av OOP. Nedan listar vi ett par punkter och problem som ofta uppkommer vid mjukvaruutveckling. OOP, däremot, är framtagen för att lösa dessa problem.
När man hittat en bugg som ska rättas till så måste man med största sannolikhet göra samma ändring på flera ställen Ändringar och uppdateringar i källkod riskerar samtidigt att införa andra fel som man inte förutsett Ju fler gånger man har ändrat och uppdaterat källkoden desto svårare är det att följa strukturen Desto större program desto svårare blir det att läsa och förstå källkoden Program som utvecklats av en programmerare kan vara svåra att tyda av andra. De kan även vara svåra för programmeraren själv efter ett par år. Alla dessa punkter är inget problem för OOP
Klass - Implementerad källkod som beskriver en verklig komponent - sök efter substantiven
När vi söker möjliga klasser att implementera letar vi efter substantiven i vår specifikation. Vi gör inte klasser av alla substantiv.
Vid början av programutvecklingen defineras klasserna som ska representera maskinen mjukvarumässigt. Ju mer noggrann man är desto mer tid sparar man i slutändan. En klass hittas enklast genom att leta igenom de substantiv som finns i specifikationen av maskinen. Det brukar vara en bra början. Vi kommer att använda en förpackningsmaskin i vårt exempel. I detta exempel så kommer förpackningsmaskinen att ha ett par luftcylindrar som har till uppgift att vika ihop bottnen av en låda samt stänga locket, det innebär att de kommer att köra mellan sina två ändlägen. Vi skapar en klass som heter Actuator.
Klassen är en beskrivning av en verklig komponent, omsatt i källkod Leta efter substantiv - bra början vid identifieringen av möjliga klasser. Noggrann identifiering av klasser sparar tid och kostnader längre fram i ert projekt
Varje klass har klienter, servers och metoder
LASAL har integrerat OOP redan från början. Vi använder ingen tredjeparts leverantör för själva den objektorienterade programmering. En klass har klienter för att ansluta till andra komponenter och göra anrop eller be om resultat från en beräkning. Klienten är den aktiva delen i ett program. En klient ansluts till en server. Servern svarar på tilltal och kan samtidigt anropa andra interna metoder. Det finns både globala och privata metoder att implementera hos en klass.
Klienter frågar efter resultat eller skickar anrop till andra komponenter Servern svarar klienten och kan vid ett anrop också anropa egna metoder Privata metoder är bara åtkomliga inom klassen Globala metoder är öppna utåt mot de maskinkomponenter som har tillåtelse att anropa
Standardmetoderna som anropas automatiskt av operativsystemet

Varje klass har flera standardmetoder som när de aktiverats av programmeraren anropas cykliskt av operativsystemet
Varje klass har möjligheten att implementera olika standardmetoder som anropas cykliskt av operativsystemet. De heter Init, RtWork, CyWork och Background. Init-metoden anropas vid uppstart av maskinen. RtWork (Realtime) är den metod som har högst prioritet och som vi implementerar uppgifter som kräver cykeltider med samma delta-tid varje gång. CyWork (Cyclic) har näst högst prioritet och används för att övergripande kontroll och iteration av maskinens program. Background är den standardmetod som sköter det rent visuella upp mot maskinens HMI. Background-metoden har lägst prioritet.
När vi lokaliserat våra klasser så ska de implementeras
Nu implementerar vi vad som ska ske när vi anropas vår luftcylinder beroende på de två metoderna. Forward innebär att vi sätter vår hårdvarutugång hög. Backward innebär att vi sätter vår hårdvarutgång låg.
Efter att vi valt ut maskinens komponenter som vi vill implementera som klasser gäller det att definera egenskaper och metoder som har till uppgift att få vår komponent att agera. I vår förpackningsmaskin har vi ett par luftcylindrar. Vi har redan skapat en klass Actuator. I ett första skede väljer vi att implementera två metoder Forward() och Backward() som har till uppgift att ställa vår luftcylinder i sina ändlägen.
En metod kan ha inparametrar för att kunna agera dynamiskt, ex. när vi ska positionera en motor. Då använder vi position, hastighet, acceleration och deceleration som inparametrar till vår metod Själva implementationen inuti metoden skiljer sig inte mycket från vanlig programmering. Det är strukturen och sättet man kapslar in koden som är det smarta med OOP
Förtydligar med en övergripande klass PackagingMachine - Styr hela förpackningsmaskinen
Klassen PackagingMachine har en CyWork-metod där följande if-satser implementeras. De har itlluppgift att kontrollera om våra booleans bFoldBottom och bCloseLid är true och när de är så ska vi anropa metoderna Forward() för att starta vikprocessen av vår låda.
För att tydligare beskriva hur vi anropar metoderna i Klassen Actuator skapar vi även en klass PackagingMachine som vid klartecken (boolean variabel bFoldBottom = true) viker botten på lådan och därefter vid nästa klartecken (boolean variabel CloseLid = true) stänger lådans lock. Denna kodsnutt är implementerad i CyWork-metoden hos klassen PackagingMachine. Det innebär att CyWork anropas cykliskt av operativsystemet.
Så ser resultatet ut med anslutna objekt

TIll vänster presenterar vi vårt objekt av klassen Actuator med sin klient till vänster (cToActuator) och sen server till höger (ClassSvr). Till höger ser vi hur de är anslutna i skarpt läge och det övervakande objektet PackagingMachine1 som har implementerats för att sköta hela processen av maskinen.
När vi vill testa vår implementerade metod skapar vi objekt av våra klasser och placerar dem i ett "nätverk". Klienter och servrar ansluts som vi har tänkt och vi kompilerar. I bilden har vi även implementerat en klass som sköter förpackningsmaskinens alla processer. I detta skede styr vi bara våra luftcylindrar men det underlättar för förståelsen att se den objektorienterade källkoden grafiskt
Saker som definerar komponentens egenskaper sparas i variabler Förändringar vi kan göra på vår verkliga komponent implementeras som metoder
Kortfattat - Klasser beskriver verkliga komponenter, maskinen består av dessa komponenter
Den objektorienterade programmeringstekniken bygger på klasser, klasser som är modeller av verkliga komponenter och som implementerats med källkod. Detta gör att OOP passar alldeles utmärkt till programmering av maskiner. Maskiner består ju av verkliga komponenter. Klassen kapslar in källkoden och skyddar den från anrop utifrån, anrop som inte har tillåtelse att exekvera metoder i vår klass.
Maskiner består av verkliga komponenter -. OOP bygger modeller av verkliga komponenter Klassen kapslar in källkoden och skyddar den därmed från yttre anrop som saknar tillåtelse
- Styrsystem
- IO-System
- Human Machine Interface
- Motion Control
- Safety System
- Fältbuss - VARAN
- LASAL utvecklingsverktyg
- LASAL CLASS - mjukvara
- LASAL SCREEN - mjukvara
- LASAL MOTION mjukvara
- LASAL Safety Designer - mjukvara
- LASAL SERVICE - mjukvara
- Objektorienteringens fördelar inom automation
- ->OOP - Klass<-
- OOP - Objekt
Meny
-
SAI 041 - säker analog ingångsmodul
-
Mobil operatörspanel med multi-touch och en kraftfull visualisering: HGT 1053
Senaste produktnyheterna
-
Kundcase: Up close to the Action and Safe
-
Det hänger på mjukvaran