Inom området industriell automation är steglogik fortfarande ett av de mest använda programmeringsspråken; Men för mer komplexa kontrollobjekt är objektorienterad-programmering verkligen ett mycket effektivt tillvägagångssätt. Låt oss först diskutera objektorienterad-programmering:
Objekt-orienterad programmering är ett avancerat programmeringsparadigm i hög-datorspråk. Denna designfilosofi kan även appliceras på PLC-program i industriella styrsystem. Även om vi inte kan implementera många av de utmärkta funktionerna i objekt-orienterad programmering-som "arv"-och PLC-språket kanske inte ens har egenskaperna hos ett objekt-orienterat programmeringsspråk, är de grundläggande begreppen för objekt-orienterad programmering klasser och klassinstanser (dvs. objekt). Vi behöver bara använda dessa begrepp. I datorprogrammering behöver vi abstrahera och generalisera vissa enheter för att definiera klasser. I industriella styrsystem är dock styrobjekt såsom motorer och ventiler tydligt definierade styrkategorier; vi kan definiera klasser för dem direkt utan behov av abstraktion. Följande avsnitt kommer att använda Siemens Step7-programmeringsspråk och Schneiders Unity-programmeringsspråk för att förklara objekt{16}}orienterad programmering för PLC:er.
I. Implementeringsmetoder
Objekt-orienterad programmering i steg 7 implementeras med hjälp av funktionsblock (FB). När det här ämnet kommer upp tänker folk ofta på den modulära programmering som föreslås av Siemens. Detta är faktiskt samma koncept, men termer som "modularisering", "bakgrundsdatablock" och "flera bakgrunder" som introducerats av Siemens tillåter inte alltid användare att tydligt förstå och tillämpa denna utmärkta designfilosofi.
Men om du närmar dig det utifrån objektorienterad programmeringsperspektiv kan du få en mycket bättre förståelse för detta designmönster. Ett "FB-block" betraktas som en "klass"; det kan ses som en gruppering av kod för liknande kontrollobjekt. Till exempel, för MM440 variabel-frekvensomformare kan du skriva ett FB-block med namnet "MtrMM440." I objekt-orienterad programmering kallas detta en "klass". När du behöver programmera styrning för en specifik motor kan du tilldela ett bakgrunds-DB-block till den-i objekt-orienterad programmering, detta kallas implementeringen av klassen (dvs att skapa en instans av klassen: ett objekt). När du behöver styra flera motorer kan du tilldela olika bakgrunds-DB till detta FB-block, vilket motsvarar att skapa flera instanser av klassen.
Steg 7 innehåller en annan typ av programblock: FC-blocket. Programmering som primärt använder FC-block kallas strukturerad programmering i Siemens-system, vilket kan jämföras med procedurprogrammering i datorprogrammering-det vill säga programmering som är rent funktionsbaserad-.
Programmering med Schneiders Unity-programvara ger en bättre förståelse av objekt-orienterad programmering. Dess DFB-definitioner inkluderar in-/utdataparametrar, privata/offentliga variabler och kodimplementering-som är exakt de grundläggande elementen i en "klass" i datorobjektorienterad-programmering. Att skapa en instans av en klass (ett objekt) är lika enkelt som att skapa en vanlig "boolesk" variabel; du behöver bara definiera en variabel av denna "klass" i "Funktionsblock".
Både Step7 och Unity stöder både procedurmässiga och objektorienterade-programmeringsmetoder; skillnaden mellan dessa två metoder liknar skillnaden mellan programmering i C och C++ på hög-datorspråk.
I följande förklaring kommer FBs i Steg 7 och DFBs i Unity att hänvisas till som "klasser", medan FBs i kombination med bakgrundsdatabaser i Steg 7 och instanser av DFBs i Unity kommer att hänvisas till som "objekt".
II. Objekt-orienterad programmeringsarkitektur
Diskussionen ovan täcker implementeringsdetaljer, men programmeringsfilosofin bygger på programarkitektur. Att bara använda objekt-orienterade metoder i en specifik del av koden betyder inte att hela programmet är objekt-orienterat. Denna typ av programmering kräver ett tillvägagångssätt baserat på följande aspekter:
1. Strukturerad kretsdesign.
Detta avsnitt fokuserar främst på automatiserade produktionslinjer; för fristående verktygsmaskiner kan en förenklad struktur användas:
<1>Automatiserat produktionslinjelager: Detta är den högsta nivån, med en huvud-PLC som styr de olika zonerna under den.
<2>Projektlager: Detta lager har ett oberoende kraftdistributionssystem men ingen PLC; den består endast av distribuerade moduler som styrs av den automatiserade produktionslinjen. Som namnet antyder har den en hög grad av oberoende och kan designas och tillverkas som ett separat projekt. När den automatiserade produktionslinjen är relativt liten kan detta skikt utelämnas.
<3>Funktionell gruppnivå: Baserat på processkrav grupperas utrustningssegment som utför en specifik processfunktion i en funktionell grupp. Denna grupp tillhör ingenjörsnivån; när ingenjörsnivån utelämnas tillhör den nivån för automatiserad produktionslinje. Objekt-orienterad programmering kräver inte nödvändigtvis användningen av ovanstående struktur, men en väl-designad elektrisk struktur är mer gynnsam för objekt-orienterad programmering.
2. All kontrollobjektlogik är implementerad inom "klasser"
För att uppnå detta är det nödvändigt att analysera information relaterad till kontrollobjektet. Till exempel, för en motor, måste följande relevant information beaktas:
Inmatningsinformation:
<1>,Kretsskyddsinformation, såsom motorns strömbrytare och termiska relä.
<2>,Funktionell skyddsinformation, såsom gränslägesbrytare för rörelsemotorer, tryckbrytare för fläktar och oljenivåbrytare för oljepumpar.
<3>Start- och stoppförhållanden: Även om kretsskyddet och funktionsskyddet som nämns ovan kan få motorn att sluta gå, och en återställning kan utlösa en omstart, hänför sig villkoren som hänvisas till här till start- och stoppförhållandena under normal drift-såsom stegen i en sekventiell kontrollprocess.
<4>Kontrolllägen: såsom manuell och automatisk.
<5>Felåterställning: Återstart av systemet via återställningssignaler.
Utdatainformation:
<1>,Kontrollutgångar, såsom huvudkontaktorn som styr motorn.
<2>,Statusinformationsutgångar
<3>,Felutgångar
Statuslagringsinformation:
Mellanvariabler som används för kodimplementering, såväl som statusvariabler som kan läsas av HMI. Integrera all ovanstående information i en enda klass och standardisera klassparametrarna så mycket som möjligt. Det finns dock fortfarande vissa skillnader jämfört med hög-programmeringsspråk. För steg 7 är standarden att följa: programstrukturen implementeras med FC:er och objektkontroll implementeras med FB:er, vilket illustreras av följande strukturella ramverk (vars elektriska struktur är baserad på introduktionen ovan): Detta är bara en grov PLC-programarkitektur; en bra arkitektur borde vara mer omfattande och vetenskaplig.
3. Planera datastrukturer noggrant
Att definiera datastrukturer är avgörande, och du bör sträva efter att förena dessa strukturer så mycket som möjligt utan att oroa dig för lagringsutrymme; modernt PLC-minne är tillräckligt för att rymma stora mängder data. Det är värt att notera att i steg 7 bör du undvika att definiera användardefinierade typer (UDTs) utanför klasser när det är möjligt; istället definiera dem inom klasserna. Även om detta kan resultera i dubbla definitioner av samma struktur över olika klasser, ökar det klassernas oberoende.
I följande avsnitt kommer vi att jämföra dessa två programmeringssätt:
Fördelar med objekt-orienterad programmering Jämfört med steglogik erbjuder objekt-orienterad programmering följande fördelar:
• Kodportabilitet och enkel återanvändning;
• Lätt att använda matematiska funktioner, loopar och andra konstruktioner;
• Objekt-orienterad programmering lärs ut i praktiskt taget alla datorprogrammeringskurser.
• Kod kan köras på en mängd olika hårdvaruplattformar.
För att behärska objektorienterad-programmering måste du först förstå konceptet med objekt och hur du använder dem. När ett objekt eller en klass väl har skrivits kan det enkelt återanvändas genom flera anrop. Skapa till exempel ett objekt för att styra en motor, som hanterar alla ingångar, utgångar och fel. Vid behov kan flera motorer styras genom att instansiera detta enda kontrollobjekt flera gånger. Detta är känt som instansiering på-begäran. När flera motorer behöver styras kan detta enda objekt användas upprepade gånger. Det anropas när det behövs, och instanser skapas allt eftersom de används.
Varje instans av varje motor har sina egna egenskaper, såsom motorstopp, motordrift, motorhastighet och motoröverbelastning. Det mesta av programmeringsarbetet är klart när objektet skapas första gången. Detta är ett annat sätt att tänka från steglogik, och det är mer kraftfullt eftersom när ett objekt väl är byggt är det lätt att använda och återanvända. Objekt-orienterad programmering gör det lättare att utföra komplexa matematiska funktioner, loopberäkningar, arrayer och kapslade subrutiner. Praktiskt taget alla datorprogrammeringskurser-oavsett om det är på gymnasiet, gymnasiet eller onlinehandledningar-lär ut detta koncept. Koden som skapas är portabel och kan köras på olika hårdvaruplattformar.
"Steglogik följer formatet för elektriska stegdiagram som används i relästyrsystem, och de flesta kan snabbt lära sig och bemästra det."
Jämfört med steglogik har objektorienterad-programmering dock följande nackdelar:
• Högre kostnad;
• En brantare inlärningskurva;
• Felsökning är inte särskilt lätt för underhållspersonal;
• Kompilering krävs vanligtvis innan källkoden laddas upp till processorn.
Jämfört med steglogik kräver objektorienterad-programmering ofta mer minne och större processorkraft, vilket resulterar i högre kostnader. Att lära sig ett objektorienterat-programmeringsspråk kan ta längre tid. Klassrumsundervisning krävs sannolikt, och att bemästra kärnkoncepten kräver mycket tid, övning, testning och tillämpning. Programmerare måste ofta studera objektorienterad-programmering för att använda spårare för att spåra kod eller felsökare för att felsöka logik. Med den här typen av- högnivåprogrammering kan det vara svårt att implementera onlineövervakningsfunktioner i realtid-.
Innan källkoden kan laddas ner till styrenheten måste den kompileras. Vanligtvis lagras inte källkoden i processorns minne. Detta innebär att man måste vara försiktig med att säkerhetskopiera källkoden, eftersom kompilerad kod vanligtvis inte går att redigera. Med objekt-orienterad programmering måste biblioteksfiler länkas till andra resurser som används under kompileringsprocessen. Utan förståelse för länkning och resurser blir det svårt att få programmet att köra.
Fördelar med Ladder Logic:
Ladderlogik är en enkel och själv{0}}dokumenterande kodningsmetod-en del ifrågasätter till och med om den kvalificerar sig som ett programmeringsspråk. Det följer formatet för elektriska stegdiagram som används i relästyrsystem, och de flesta kan snabbt lära sig och bemästra det. Det har varit det enda programmeringsspråket som har använts i stor utsträckning inom maskinautomatisering i årtionden, och det kommer att förbli ett av de primära programmeringsspråken inom automationsindustrin under överskådlig framtid.
Med tiden, eftersom människor från olika bakgrunder och områden har kommit in i branschen, har olika programmeringsspråk introducerats i verktygslådan för industriell automation. Dessa inkluderar funktionsblocksprogrammering, strukturerad text, tillståndsprogrammering och sekventiella funktionsdiagram. Dessa fyra programmeringsspråk, tillsammans med ladderlogik, utgör de standardprogrammeringsspråk som definieras av International Electrotechnical Commission (IEC) standard IEC 61131-3.
Logiken bakom IEC 61131 är att om varje leverantör följer den här standarden, så skulle-åtminstone i viss utsträckning-en person bara behöva lära sig dessa fem programmeringsspråk för att enkelt växla mellan plattformar som erbjuds av olika leverantörer. Så är dock inte fallet.
Grundläggande steglogik (som användning av reläkontakter och spolar) fungerar på samma sätt; Men vid programmering måste man lära sig varje leverantörs syntax och användarupplevelse, såväl som detaljerna för hur man använder programmeringsplattformen. Trots bristen på standardisering erbjuder ladderlogik följande fördelar jämfört med objektorienterad-programmering:
• Den är väl-lämpad för maskin- och processkontroll;
• Det är lättare att förstå eftersom det är i sig själv-dokumenterande;
• Det underlättar felsökning av det kontrollerade systemet;
• Det är lätt att felsöka;
• Källkoden kan vanligtvis lagras i processorn.
Ladderlogik är väl-lämpad för maskin- och processkontroll, särskilt för automationssystem med ett stort antal diskreta in- och utgångar (I/O). Under årens lopp har steglogik också kontinuerligt förbättrats för att hantera analog I/O, vilket gör den mer lämpad för många processkontrollapplikationer.
Jämfört med maskinstyrningsapplikationer har processapplikationer ofta en högre andel analog I/O.
Eftersom steglogik är lättare att använda än objektorienterad-programmering kan många skickliga tekniker och ingenjörer snabbt lära sig det. Logiken är mycket systematisk och organiserad, och dess själv-dokumenterande karaktär gör det lättare att förstå och bemästra. Varje kodrad måste utvärderas till sant innan en enhet kan aktiveras. Om det finns fem motorer att styra krävs minst fem rader kod, vilket avsevärt förenklar processen.
"Källkod för steglogik och beskrivningar lagras vanligtvis i styrenheten, vilket eliminerar behovet av att komma åt källkoden-vilket tar bort den frustration som programmerare ofta upplever när de försöker förstå kompilerade program."
För elektriker och underhållspersonal är steglogik mycket intuitivt. Även om steglogik kräver ett annat sätt att tänka än objekt-orienterad programmering, kan den snabbt bemästras med vissa studier, och det tar mindre tid att förstå kod som skrivits av andra. Det är kristallklart när ett logiskt påstående är sant och när det är falskt. Även de med begränsad programmeringserfarenhet kan lätt förstå begrepp som till/från, spoleaktivering, jämförelsevariabler och vanliga matematiska funktioner.

Det är enkelt och lätt att använda, effektiviserar felsökning och felsökning. När man övervakar logiken är det lätt att förstå de aktuella driftsförhållandena. Ingen mjukvaruexamen eller avancerade programmeringskunskaper krävs. Med ladderlogik kan underhålls- och ingenjörspersonal enkelt spåra processen och förstå vad som händer. Ladderlogik kan ses som en sanningstabell: om logiken till vänster är sann, aktiveras logiken till höger.
Ladderlogikkällkod och beskrivningar lagras vanligtvis i styrenheten. Detta eliminerar den frustration som programmerare ofta upplever när de försöker förstå kompilerad kod utan tillgång till källkoden-ett problem som också är vanligt i objektorienterad-programmering.
Men jämfört med objekt-orienterad programmering har steglogik också följande nackdelar:
• Dataprogrammerare och IT-proffs är obekanta med steglogik;
• Det är svårt att utföra matematiska funktioner, textbehandling och databehandling;
• Den förlitar sig på skanningstid;
• Den kräver specialiserad hårdvara för att exekvera, såsom en programmerbar logisk styrenhet (PLC).
Ladderlogik är ett symbolspråk som dataprogrammerare och IT-proffs är obekanta med, eftersom de inte lär sig det i skolan. Att hantera matematiska funktioner, textsträngar och data i ladderlogik kan vara svårt, främst för att ladderlogik ursprungligen inte var designad för att hantera dessa funktioner.
Ladderlogik beror också på skanningstiden. Större program kräver mer tid för att skanna och bearbeta logiken. Vid exekvering av ladderlogik läser systemet ingångar, skannar logiken, uppdaterar datatabeller och utgångar, utför kommunikation och upprepar sedan cykeln. Funktioner som avbrott och andra programmeringstekniker kan implementeras för att säkerställa snabbare exekvering av viss logik.
Även om programvaru-baserade PLC:er konfigurerade med ladderlogik kan köras på en PC, måste hårdvaran (som PLC) vanligtvis vara kompatibel med programmeringsmjukvaran, och det är bäst att köpa båda från samma leverantör. Detta säkerställer kompatibilitet, men det är inte särskilt bekvämt om du vill byta leverantör.
Förutom att jämföra fördelarna och nackdelarna med steglogik och objekt-orienterad programmering, bör användarna också utvärdera hur dessa programmeringsspråk kommer att användas i miljön där de ska distribueras. Om en fabrik eller anläggning redan har standardiserat på steglogik, uppmuntras inte att ersätta den med objekt-orienterad programmering, även om den senare är bättre lämpad för applikationen. Eftersom användningen av objekt-orienterad programmering fortsätter att växa, förväntas den samexistera med steglogik i decennier framöver. En framåt-medveten automatiseringsproffs skulle vara-rådad att behärska båda språken.




