Innen industriell automatisering er stigelogikk fortsatt et av de mest brukte programmeringsspråkene; For mer komplekse kontrollobjekter er imidlertid objektorientert-programmering absolutt en svært effektiv tilnærming. La oss først diskutere objekt-orientert programmering:
Objekt-orientert programmering er et avansert programmeringsparadigme i dataspråk på{1}}høyt nivå. Denne designfilosofien kan også brukes på PLS-programmer i industrielle kontrollsystemer. Selv om vi ikke kan implementere mange av de utmerkede funksjonene til objekt-orientert programmering-som "arv"-og PLS-språket kanskje ikke engang har egenskapene til et objekt-orientert programmeringsspråk, er de grunnleggende konseptene for objekt-orientert programmering klasser og klasseforekomster (dvs. objekter). Vi trenger bare å bruke disse begrepene. I dataprogrammering må vi abstrahere og generalisere visse enheter for å definere klasser. I industrielle kontrollsystemer er imidlertid kontrollobjekter som motorer og ventiler klart definerte kontrollkategorier; vi kan definere klasser for dem direkte uten behov for abstraksjon. De følgende delene vil bruke Siemens' Step7-programmeringsspråk og Schneiders Unity-programmeringsspråk for å forklare objekt{16}}orientert programmering for PLS-er.
I. Implementeringsmetoder
Objekt-orientert programmering i trinn 7 implementeres ved hjelp av funksjonsblokker (FB). Når dette emnet kommer opp, tenker folk ofte på den modulære programmeringsmetoden foreslått av Siemens. Dette er faktisk det samme konseptet, men termer som "modularisering", "bakgrunnsdatablokker" og "flere bakgrunner" introdusert av Siemens tillater ikke alltid brukere å forstå og anvende denne utmerkede designfilosofien.
Men hvis du nærmer deg det fra objektorientert-programmeringsperspektiv, kan du få en mye bedre forståelse av dette designmønsteret. En "FB-blokk" betraktes som en "klasse"; det kan sees på som en gruppering av kode for lignende kontrollobjekter. For eksempel, for MM440 variabel-frekvensomformer, kan du skrive en FB-blokk kalt "MtrMM440." I objekt-orientert programmering kalles dette en "klasse". Når du trenger å programmere kontroll for en bestemt motor, kan du tilordne en bakgrunns-DB-blokk til den-i objekt-orientert programmering, dette kalles implementeringen av klassen (dvs. å lage en forekomst av klassen: et objekt). Når du trenger å kontrollere flere motorer, kan du tilordne forskjellige bakgrunns-DB-er til denne FB-blokken, noe som tilsvarer å lage flere forekomster av klassen.
Trinn 7 har en annen type programblokk: FC-blokken. Programmering primært ved bruk av FC-blokker blir referert til som strukturert programmering i Siemens-systemer, som kan analogiseres til prosedyreprogrammering i dataprogrammering-det vil si programmering som er rent funksjonsbasert-.
Programmering med Schneiders Unity-programvare gir en bedre forståelse av objekt-orientert programmering. DFB-definisjonene inkluderer input/output-parametere, private/offentlige variabler og kodeimplementering-som er nettopp de grunnleggende elementene i en "klasse" i dataobjektorientert-programmering. Å lage en forekomst av en klasse (et objekt) er like enkelt som å lage en vanlig "boolsk" variabel; du trenger bare å definere en variabel av denne "klassen" i "Funksjonsblokker".
Både Step7 og Unity støtter både prosessuelle og objektorienterte-programmeringsmetoder. Skillet mellom disse to tilnærmingene ligner forskjellen mellom programmering i C og C++ på høy-dataspråk.
I den følgende forklaringen vil FB-er i trinn 7 og DFB-er i Unity bli referert til som "klasser", mens kombinasjonen av en FB og bakgrunns-DB i trinn 7, samt forekomster av DFB-er i Unity, vil bli referert til som "objekter".
II. Objekt-orientert programmeringsarkitektur
Diskusjonen ovenfor dekker implementeringsdetaljer, men programmeringsfilosofi er bygget på programarkitektur. Bare å bruke objekt-orienterte metoder i en bestemt del av koden betyr ikke at hele programmet er objekt-orientert. Denne typen programmering krever en tilnærming basert på følgende aspekter:
1. Strukturert kretsdesign.
Denne delen fokuserer først og fremst på automatiserte produksjonslinjer; for frittstående maskinverktøy kan en forenklet struktur brukes:
<1>Automatisert produksjonslinjelag: Dette er det høyeste nivået, med en hoved-PLS som kontrollerer de forskjellige sonene under den.
<2>Prosjektlag: Dette laget har et uavhengig kraftdistribusjonssystem, men ingen PLS; den består kun av distribuerte moduler kontrollert av den automatiserte produksjonslinjen. Som navnet tilsier, har den en høy grad av uavhengighet og kan designes og produseres som et eget prosjekt. Når den automatiserte produksjonslinjen er relativt liten, kan dette laget utelates.
<3>,Funksjonelt gruppenivå: Basert på prosessdivisjoner, grupperes utstyrssegmenter som utfører en spesifikk prosessfunksjon i en funksjonell gruppe. Denne gruppen tilhører Engineering Level; når ingeniørnivået er utelatt, tilhører det det automatiske produksjonslinjenivået. Objekt-orientert programmering krever ikke nødvendigvis bruk av strukturen ovenfor, men en godt-utformet elektrisk struktur er mer gunstig for objekt-orientert programmering.
2. All logikk for et kontrollobjekt er implementert i en "klasse".
For å oppnå dette er det nødvendig å analysere informasjon knyttet til kontrollobjektet. For en motor må for eksempel følgende relevant informasjon vurderes:
Inndatainformasjon:
<1>, Informasjon om kretsbeskyttelse, for eksempel motorens kretsbryter og termisk relé.
<2>,Funksjonell beskyttelsesinformasjon, som grensebrytere for bevegelsesmotorer, trykkbrytere for vifter og oljenivåbrytere for oljepumper.
<3>Start- og stoppforhold: Selv om kretsbeskyttelsen og funksjonsbeskyttelsen nevnt ovenfor kan føre til at motoren slutter å gå, og en tilbakestilling kan utløse en omstart, er forholdene det refereres til her de for start og stopp under normal drift-som trinn i en sekvensiell kontrollprosess.
<4>Kontrollmoduser: som manuell og automatisk.
<5>Tilbakestilling av feil: Restart av systemet via tilbakestillingssignaler.
Utdatainformasjon:
<1>Kontrollutganger, slik som hovedkontaktoren som styrer motoren.
<2>Statusinformasjonsutganger
<3>Feil utganger
Status lagringsinformasjon:
Mellomvariabler brukt for kodeimplementering, samt statusvariabler som kan leses av HMI. Integrer all informasjonen ovenfor i en enkelt klasse og standardiser klasseparametrene så mye som mulig. Det er imidlertid fortsatt noen forskjeller sammenlignet med-programmeringsspråk på høyt nivå. For trinn 7 er standarden som skal følges: programstruktur er implementert ved hjelp av FC-er, og objektkontroll implementeres ved hjelp av FB-er, som illustrert av følgende strukturelle rammeverk (hvis elektriske struktur er basert på introduksjonen ovenfor): Dette er bare en grov PLS-programarkitektur; en god arkitektur bør være mer omfattende og vitenskapelig.
3. Planlegg datastrukturer nøye
Å definere datastrukturer er avgjørende, og du bør strebe etter å forene disse strukturene så mye som mulig uten å bekymre deg for lagringsplass; moderne PLS-minne er tilstrekkelig til å romme store datamengder. Det er verdt å merke seg at i trinn 7 bør du unngå å definere bruker-definerte typer (UDTs) utenfor klassene når det er mulig; definer dem i stedet innenfor klassene. Selv om dette kan resultere i dupliserte definisjoner av samme struktur på tvers av forskjellige klasser, øker det uavhengigheten til klassene.
I de følgende delene vil vi sammenligne disse to programmeringsmetodene:
Fordeler med objekt-orientert programmering Sammenlignet med stigelogikk gir objekt-orientert programmering følgende fordeler:
• Koden er bærbar og enkel å gjenbruke;
• Det er enkelt å bruke matematiske funksjoner, løkker og andre konstruksjoner;
• Objekt-orientert programmering undervises i praktisk talt alle dataprogrammeringskurs;
• Kode kan kjøres på ulike maskinvareplattformer.
For å mestre objektorientert-programmering må du først forstå konseptet med objekter og hvordan du bruker dem. Når et objekt eller en klasse er skrevet, kan den enkelt gjenbrukes gjennom flere samtaler. Lag for eksempel et objekt for å kontrollere en motor, som håndterer alle innganger, utganger og feil. Ved behov kan flere motorer styres ved å instansiere dette enkelt kontrollobjektet flere ganger. Dette er kjent som -on-demand-instansering. Når flere motorer må kontrolleres, kan dette enkeltobjektet brukes gjentatte ganger. Den kalles opp ved behov, og forekomster opprettes etter hvert som de brukes.
Hver forekomst av hver motor har sine egne egenskaper, som motorstopp, motorkjøring, motorhastighet og motoroverbelastning. Det meste av programmeringsarbeidet er fullført når objektet først opprettes. Dette er en annen måte å tenke på enn stigelogikk, og den er kraftigere fordi når et objekt først er bygget, er det enkelt å bruke og gjenbruke. Objekt-orientert programmering gjør det enklere å utføre komplekse matematiske funksjoner, sløyfeberegninger, matriser og nestede underrutiner. Så godt som alle dataprogrammeringskurs-enten på videregående skole, høyskole eller nettbaserte opplæringsprogrammer-lærer bort dette konseptet. Koden som lages er bærbar og kan kjøres på forskjellige maskinvareplattformer.
"Stigelogikk følger formatet til elektriske stigediagrammer som brukes i relékontrollsystemer, og de fleste kan raskt lære og mestre det."
Sammenlignet med stigelogikk har objektorientert-programmering imidlertid følgende ulemper:
• Høyere kostnad;
• En brattere læringskurve;
• Feilsøking er ikke spesielt lett for vedlikeholdspersonell;
• Kompilering er vanligvis nødvendig før du laster opp kildekoden til prosessoren.
Sammenlignet med stigelogikk krever objektorientert-programmering ofte mer minne og større prosessorkraft, noe som resulterer i høyere kostnader. Det kan ta lengre tid å lære et objektorientert programmeringsspråk-. Klasseromsundervisning er sannsynligvis nødvendig, og mestring av kjernekonseptene krever betydelig tid, øvelse, testing og anvendelse. Programmerere må ofte studere objektorientert-programmering for å bruke sporere for å spore kode eller feilsøkere for å feilsøke logikk. Med denne typen programmering på høyt-nivå kan det være vanskelig å implementere sanntids-nettovervåkingsfunksjoner.
Før du laster ned kildekoden til kontrolleren, må den kompileres. Vanligvis er kildekoden ikke lagret i prosessorens minne. Dette betyr at man må ta sikkerhetskopi av kildekoden, siden kompilert kode vanligvis ikke kan redigeres. Med objekt-orientert programmering må bibliotekfiler kobles til andre ressurser som brukes under kompileringsprosessen. Uten forståelse for koblinger og ressurser vil det være vanskelig å få programmet til å kjøre.
Fordeler med Ladder Logic:
Stigelogikk er en enkel og selv{0}}dokumenterende kodemetode-noen stiller til og med spørsmål om den kvalifiserer som et programmeringsspråk. Det følger formatet til stigediagrammer som brukes i relékontrollsystemer, og de fleste kan raskt lære og mestre det. Det har vært det eneste programmeringsspråket som er mye brukt innen maskinautomatisering i flere tiår, og det vil forbli et av de primære programmeringsspråkene i automasjonsindustrien i overskuelig fremtid.
Over tid, etter hvert som folk fra ulike bakgrunner og felt har kommet inn i bransjen, har ulike programmeringsspråk blitt introdusert i verktøysettet for industriell automasjon. Disse inkluderer funksjonsblokkprogrammering, strukturert tekst, tilstandsprogrammering og sekvensielle funksjonsdiagrammer. Disse fire programmeringsspråkene, sammen med stigelogikk, utgjør standard programmeringsspråk definert av International Electrotechnical Commission (IEC) standard IEC 61131-3.
Logikken bak IEC 61131 er at hvis hver leverandør følger denne standarden, vil-i det minste til en viss grad-en person bare trenge å lære disse fem programmeringsspråkene for enkelt å bytte mellom plattformer som tilbys av forskjellige leverandører. Dette er imidlertid ikke tilfelle.
Det samme gjelder grunnleggende stigelogikk (som bruk av relékontakter og spoler); Men når man programmerer, må man lære hver leverandørs syntaks og brukeropplevelse, samt detaljene for hvordan man bruker deres programmeringsplattform. Til tross for mangelen på standardisering, tilbyr stigelogikk følgende fordeler fremfor objektorientert-programmering:
• Den er godt-egnet for maskin- og prosesskontroll;
• Det er lettere å forstå fordi det i seg selv-dokumenterer;
• Det letter feilsøking av det kontrollerte systemet;
• Det er enkelt å feilsøke;
• Kildekoden kan vanligvis lagres i prosessoren.
Stigelogikk er godt-egnet for maskin- og prosesskontroll, spesielt for automasjonssystemer med et stort antall diskrete innganger og utganger (I/O). Gjennom årene har stigelogikk også blitt kontinuerlig forbedret for å håndtere analog I/O, noe som gjør den mer egnet for et bredt spekter av prosesskontrollapplikasjoner
Sammenlignet med maskinkontrollapplikasjoner har prosessapplikasjoner typisk en høyere andel analog I/O.
Fordi stigelogikk er enklere å bruke enn objektorientert-programmering, kan mange dyktige teknikere og ingeniører raskt lære det. Logikken er svært systematisk og organisert, og dens selv-dokumenterende natur gjør den lettere å forstå og mestre. Før en enhet aktiveres, må hver kodelinje evalueres til sann. Hvis det er fem motorer som skal kontrolleres, kreves det minst fem linjer med kode, noe som forenkler prosessen betraktelig.
"Kildekode for stigelogikk og beskrivelser er vanligvis lagret i kontrolleren, noe som eliminerer behovet for å få tilgang til kildekoden og fjerner dermed frustrasjonen som programmerere ofte opplever når de prøver å forstå kompilerte programmer."
For elektroingeniører og vedlikeholdspersonell er stigelogikk svært intuitiv. Selv om stigelogikk krever en annen tankegang enn objekt-orientert programmering, kan den mestres raskt gjennom studier, og det tar mindre tid å forstå kode skrevet av andre. Det er krystallklart når logikken er sann og når den er usann. Selv de med begrenset programmeringserfaring kan lett forstå konsepter som av/på-tilstander, spoleenergisering, sammenligningsvariabler og vanlige matematiske funksjoner.

Den er enkel og lett å bruke, og effektiviserer feilsøking og feilsøking. Når du overvåker logikken, er det lett å forstå gjeldende driftsforhold. Ingen programvaregrad eller avanserte programmeringskunnskaper kreves. Med stigelogikk kan vedlikeholds- og ingeniørpersonell enkelt spore prosessen og forstå hva som skjer. Stigelogikk kan betraktes som en sannhetstabell: hvis logikken til venstre er sann, aktiveres logikken til høyre.
Kildekode for stigelogikk og beskrivelser er vanligvis lagret i kontrolleren. Dette eliminerer frustrasjonen som programmerere ofte opplever når de prøver å forstå kompilert kode uten tilgang til kildekoden-et problem som også er vanlig i objektorientert-programmering.
Sammenlignet med objektorientert-programmering har imidlertid stigelogikk også følgende ulemper:
• Dataprogrammerere og IT-fagfolk er ikke kjent med stigelogikk;
• Det er vanskelig å utføre matematiske funksjoner, tekstbehandling og databehandling;
• Den er avhengig av skannetid;
• Det krever spesialisert maskinvare for å utføre, for eksempel en programmerbar logisk kontroller (PLC).
Stigelogikk er et symbolspråk som dataprogrammerere og IT-fagfolk er ukjente med, siden de ikke lærer det på skolen. Håndtering av matematiske funksjoner, tekststrenger og data i stigelogikk kan være vanskelig, først og fremst fordi stigelogikk opprinnelig ikke ble designet for å håndtere disse funksjonene.
Stigelogikk avhenger også av skannetid. Større programmer krever mer tid til å skanne og behandle logikken. Når du utfører stigelogikk, leser systemet innganger, skanner logikken, oppdaterer datatabeller og utganger, utfører kommunikasjon og gjentar deretter syklusen. Funksjoner som avbrudd og andre programmeringsteknikker kan implementeres for å sikre raskere utførelse av viss logikk.
Selv om programvare-baserte PLS-er konfigurert med ladder-logikk kan kjøres på en PC, må maskinvaren (for eksempel en PLS) vanligvis være kompatibel med programmeringsprogramvaren, og det er best å kjøpe begge fra samme leverandør. Dette sikrer kompatibilitet, men det er ikke spesielt praktisk hvis du ønsker å bytte leverandør.
I tillegg til å sammenligne fordeler og ulemper med stigelogikk og objekt-orientert programmering, bør brukere også vurdere hvordan disse programmeringsspråkene vil bli brukt i miljøet der de skal distribueres. Hvis en fabrikk eller et anlegg allerede har standardisert på stigelogikk, anbefales det ikke å erstatte den med objekt-orientert programmering, selv om sistnevnte er bedre egnet for applikasjonen. Ettersom bruken av objekt-orientert programmering fortsetter å vokse, forventes det å eksistere side om side med stigelogikk i flere tiår fremover. En fremtidsrettet-automatiseringstekniker vil være lurt- å mestre begge språkene.




