Teollisuusautomaation alalla tikapuulogiikka on edelleen yksi yleisimmin käytetyistä ohjelmointikielistä; monimutkaisemmille ohjausobjekteille olio{0}}-ohjelmointi on kuitenkin erittäin tehokas tapa. Puhutaanpa ensin olio-ohjelmoinnista:
Olio-ohjelmointi on edistynyt ohjelmointiparadigma korkean-tason tietokonekielissä. Tätä suunnittelufilosofiaa voidaan soveltaa myös teollisuuden ohjausjärjestelmien PLC-ohjelmiin. Vaikka emme voi toteuttaa monia erinomaisia olio-ohjelmoinnin-ominaisuuksia, kuten "perintö"-ja PLC-kielellä ei ehkä ole edes olio-ohjelmointikielen ominaisuuksia, olio-ohjelmoinnin peruskäsitteet ovat luokat ja luokkaesiintymät (eli objektit). Meidän tarvitsee vain hyödyntää näitä käsitteitä. Tietokoneohjelmoinnissa meidän on abstraktoitava ja yleistettävä tietyt entiteetit luokkien määrittelemiseksi. Teollisissa ohjausjärjestelmissä ohjausobjektit, kuten moottorit ja venttiilit, ovat kuitenkin selkeästi määriteltyjä ohjausluokkia; voimme määritellä heille luokat suoraan ilman abstraktiota. Seuraavissa osissa käytetään Siemensin Step7-ohjelmointikieltä ja Schneiderin Unity-ohjelmointikieltä selittämään logiikkaohjattujen objektien ohjelmointi.
I. Toteutusmenetelmät
Olio--ohjelmointi vaiheessa 7 toteutetaan toimintolohkojen (FB) avulla. Kun tämä aihe tulee esille, ihmiset ajattelevat usein Siemensin ehdottamaa modulaarista ohjelmointitapaa. Tämä on todellakin sama käsite, mutta Siemensin käyttöön ottamat termit, kuten "modularisointi", "taustatietolohkot" ja "useita taustoja", eivät aina anna käyttäjien ymmärtää ja soveltaa tätä erinomaista suunnittelufilosofiaa.
Jos kuitenkin lähestyt sitä olio-ohjelmoinnin näkökulmasta, voit saada paljon paremman käsityksen tästä suunnittelumallista. "FB-lohko" katsotaan "luokkaksi"; sitä voidaan pitää koodiryhmänä samankaltaisille ohjausobjekteille. Esimerkiksi MM440-muuttuja--taajuusasemalle voit kirjoittaa FB-lohkon nimeltä "MtrMM440". Olio-ohjelmoinnissa tätä kutsutaan "luokaksi". Kun haluat ohjelmoida ohjausta tietylle moottorille, voit määrittää sille taustatietokannan lohkon-olio--ohjelmoinnissa, tätä kutsutaan luokan toteutukseksi (eli luokan esiintymän luominen: objekti). Kun sinun on ohjattava useita moottoreita, voit määrittää tälle FB-lohkolle erilaisia taustatietokantoja, mikä vastaa useiden luokan esiintymien luomista.
Step7 sisältää toisen tyyppisen ohjelmalohkon: FC-lohkon. Pääasiassa FC-lohkoja käyttävää ohjelmointia kutsutaan Siemensin järjestelmissä strukturoiduksi ohjelmoimiseksi, joka voidaan analogistaa tietokoneohjelmoinnin proseduuriohjelmointiin -eli ohjelmointiin, joka perustuu puhtaasti toimintoihin-.
Ohjelmointi Schneiderin Unity-ohjelmistolla antaa paremman käsityksen olio{0}}ohjelmoinnista. Sen DFB-määritykset sisältävät syöttö-/tulostusparametrit, yksityiset/julkiset muuttujat ja koodin toteutus-, jotka ovat täsmälleen "luokan" peruselementtejä tietokoneobjekti--ohjelmoinnissa. Luokan (objektin) ilmentymän luominen on yhtä yksinkertaista kuin tavallisen "Boolen" muuttujan luominen; sinun tarvitsee vain määrittää tämän "luokan" muuttuja "Function Blocks" -kohdassa.
Sekä Step7 että Unity tukevat sekä proseduuri- että olio{1}}ohjelmointilähestymistapoja. Näiden kahden lähestymistavan välinen ero on samanlainen kuin C- ja C++-ohjelmoinnin ero korkean-tason tietokonekielillä.
Seuraavassa selityksessä FB:itä vaiheessa 7 ja DFB:itä Unityssa kutsutaan "luokiksi", kun taas FB:n ja taustatietokannan yhdistelmää vaiheessa 7 sekä Unityn DFB:itä kutsutaan "objekteiksi".
II. Olio-Ohjelmointiarkkitehtuuri
Yllä oleva keskustelu kattaa toteutuksen yksityiskohdat, mutta ohjelmointifilosofia rakentuu ohjelmaarkkitehtuurille. Yksinkertaisesti olio--menetelmien käyttäminen tietyssä koodin osassa ei tarkoita, että koko ohjelma on olio-suuntautunut. Tämäntyyppinen ohjelmointi vaatii lähestymistapaa, joka perustuu seuraaviin näkökohtiin:
1. Strukturoidun piirin suunnittelu.
Tämä osio keskittyy ensisijaisesti automatisoituihin tuotantolinjoihin; itsenäisille työstökoneille voidaan käyttää yksinkertaistettua rakennetta:
<1>Automatisoitu tuotantolinjakerros: Tämä on korkein taso, jossa on pää-PLC, joka ohjaa sen alla olevia eri vyöhykkeitä.
<2>Projektikerros: Tällä kerroksella on itsenäinen virranjakelujärjestelmä, mutta ei PLC:tä; se koostuu vain hajautetuista moduuleista, joita ohjaa automatisoitu tuotantolinja. Kuten nimestä voi päätellä, sillä on korkea riippumattomuus ja se voidaan suunnitella ja valmistaa erillisenä projektina. Kun automatisoitu tuotantolinja on suhteellisen pieni, tämä kerros voidaan jättää pois.
<3>,Toimintaryhmätaso: Prosessijaon perusteella tietyn prosessitoiminnon suorittavat laitesegmentit ryhmitellään toiminnalliseen ryhmään. Tämä ryhmä kuuluu suunnittelutasolle; kun suunnittelutaso jätetään pois, se kuuluu automaattiseen tuotantolinjatasoon. Olio-ohjelmointi ei välttämättä edellytä yllä olevan rakenteen käyttöä, mutta hyvin-suunniteltu sähköinen rakenne suosii olio-ohjelmointia.
2. Kaikki logiikka mille tahansa ohjausobjektille on toteutettu "luokan" sisällä.
Tämän saavuttamiseksi on tarpeen analysoida ohjausobjektiin liittyvää tietoa. Esimerkiksi moottorin osalta on otettava huomioon seuraavat asiaankuuluvat tiedot:
Syöttötiedot:
<1>,Piirin suojaustiedot, kuten moottorin katkaisija ja lämpörele.
<2>,Toiminnalliset suojaustiedot, kuten liikemoottoreiden rajakytkimet, puhaltimien painekytkimet ja öljypumppujen öljytason kytkimet.
<3>Käynnistys- ja pysäytysolosuhteet: Vaikka edellä mainitut piirisuojaukset ja toimintasuojaukset voivat saada moottorin pysähtymään ja nollaus voi laukaista uudelleenkäynnistyksen, tässä viitataan olosuhteisiin, jotka koskevat käynnistystä ja pysähtymistä normaalin toiminnan aikana,{0}}kuten peräkkäisen ohjausprosessin vaiheet.
<4>Ohjaustilat: kuten manuaalinen ja automaattinen.
<5>Vian kuittaus: Järjestelmän uudelleenkäynnistys nollaussignaalien kautta.
Tulostustiedot:
<1>Ohjauslähdöt, kuten moottoria ohjaava pääkontaktori.
<2>Tilatietojen lähdöt
<3>Vikalähdöt
Tallennustilan tiedot:
Koodin toteuttamiseen käytetyt välimuuttujat sekä tilamuuttujat, joita käyttöliittymä voi lukea. Integroi kaikki yllä olevat tiedot yhdeksi luokkaksi ja standardoi luokkaparametrit niin paljon kuin mahdollista. Korkean tason ohjelmointikieliin verrattuna on kuitenkin edelleen joitain eroja. Vaiheessa 7 noudatettava standardi on: ohjelmarakenne toteutetaan käyttämällä FC:itä ja objektin ohjaus toteutetaan FB:illä, kuten seuraava rakennekehys kuvaa (jonka sähköinen rakenne perustuu yllä olevaan johdatukseen): Tämä on vain karkea PLC-ohjelmaarkkitehtuuri; hyvän arkkitehtuurin pitäisi olla kattavampi ja tieteellisempi.
3. Suunnittele tietorakenteet huolellisesti
Tietorakenteiden määrittäminen on ratkaisevan tärkeää, ja sinun tulee pyrkiä yhtenäistämään nämä rakenteet mahdollisimman paljon murehtimatta tallennustilasta; nykyaikainen PLC-muisti riittää suuriin tietomääriin. On syytä huomata, että vaiheessa 7 sinun tulee välttää käyttäjän -määritettyjen tyyppien (UDT) määrittämistä luokkien ulkopuolelle aina kun mahdollista. sen sijaan määrittele ne luokissa. Vaikka tämä voi johtaa saman rakenteen päällekkäisiin määritelmiin eri luokissa, se parantaa luokkien riippumattomuutta.
Seuraavissa osioissa vertaamme näitä kahta ohjelmointitapaa:
Olio-Ohjelmoinnin edut Tikaslogiikkaan verrattuna olio-ohjelmointi tarjoaa seuraavat edut:
• Koodi on kannettava ja helppokäyttöinen uudelleen;
• Matemaattisten funktioiden, silmukoiden ja muiden konstruktien käyttö on helppoa;
• Olio{0}}ohjelmointia opetetaan käytännössä kaikilla tietokoneohjelmointikursseilla;
• Koodi voi toimia useilla laitteistoalustoilla.
Jotta voit hallita olio-ohjelmointia, sinun on ensin ymmärrettävä objektien käsite ja niiden käyttö. Kun objekti tai luokka on kirjoitettu, sitä voidaan helposti käyttää uudelleen useiden kutsujen kautta. Luo esimerkiksi objekti ohjaamaan moottoria, joka käsittelee kaikki tulot, lähdöt ja viat. Tarvittaessa voidaan ohjata useita moottoreita instantoimalla tämä yksittäinen ohjausobjekti useita kertoja. Tämä tunnetaan -on-demand-instanssina. Kun useita moottoreita on ohjattava, tätä yhtä kohdetta voidaan käyttää toistuvasti. Sitä kutsutaan tarvittaessa, ja ilmentymiä luodaan sitä mukaa, kun niitä käytetään.
Jokaisella moottorilla on omat ominaisuutensa, kuten moottorin pysäytys, moottorin käynti, moottorin nopeus ja moottorin ylikuormitus. Suurin osa ohjelmointityöstä on valmis, kun objekti luodaan ensimmäisen kerran. Tämä on erilainen ajattelutapa kuin tikapuulogiikka, ja se on tehokkaampi, koska kun esine on rakennettu, sitä on helppo käyttää ja käyttää uudelleen. Olio--ohjelmointi helpottaa monimutkaisten matemaattisten funktioiden, silmukkalaskutoimitusten, taulukoiden ja sisäkkäisten aliohjelmien suorittamista. Käytännössä kaikki tietokoneohjelmointikurssit-olipa sitten lukiossa, korkeakoulussa tai verkko-opetusohjelmissa-opetetaan tämä käsite. Luotu koodi on kannettava ja sitä voidaan käyttää useilla laitteistoalustoilla.
"Tikkaiden logiikka noudattaa releohjausjärjestelmissä käytettyjen sähköisten tikapuukaavioiden muotoa, ja useimmat ihmiset oppivat ja hallitsevat sen nopeasti."
Kuitenkin verrattuna tikapuulogiikkaan, olio-ohjelmoinnissa on seuraavat haitat:
• Korkeammat kustannukset;
• Jyrkempi oppimiskäyrä;
• Vianetsintä ei ole erityisen helppoa huoltohenkilöstölle;
• Kääntäminen vaaditaan yleensä ennen lähdekoodin lataamista prosessoriin.
Verrattuna tikapuulogiikkaan, olio-ohjelmointi vaatii usein enemmän muistia ja suurempaa käsittelytehoa, mikä johtaa korkeampiin kustannuksiin. Olio-ohjelmointikielen oppiminen voi kestää kauemmin. Todennäköisesti tarvitaan luokkahuoneopetusta, ja ydinkäsitteiden hallitseminen vaatii paljon aikaa, harjoittelua, testausta ja soveltamista. Ohjelmoijat joutuvat usein tutkimaan olio{5}}ohjelmointia voidakseen käyttää jäljittimiä koodin seuraamiseen tai virheenkorjausohjelmia logiikan jäljittämiseen. Tämän tyyppisellä-korkean tason ohjelmoinnilla voi olla vaikeaa ottaa käyttöön reaaliaikaisia-online-seurantaominaisuuksia.
Ennen kuin lähdekoodi ladataan ohjaimeen, se on käännettävä. Yleensä lähdekoodia ei tallenneta prosessorin muistiin. Tämä tarkoittaa, että lähdekoodin varmuuskopioinnista on huolehdittava, koska käännettyä koodia ei yleensä voi muokata. Olio-ohjelmoinnissa kirjastotiedostot on linkitettävä muihin käännösprosessin aikana käytettyihin resursseihin. Ilman linkittämisen ja resurssien ymmärtämistä ohjelmaa on vaikea saada toimimaan.
Ladder Logicin edut:
Ladder-logiikka on yksinkertainen ja itse{0}}dokumentoiva koodausmenetelmä-, jotkut jopa kyseenalaistavat sen, kelpaako se ohjelmointikieleksi. Se noudattaa releohjausjärjestelmissä käytettyjen tikapuukaavioiden muotoa, ja useimmat ihmiset oppivat ja hallitsevat sen nopeasti. Se on ollut ainoa koneautomaatiossa laajalti käytetty ohjelmointikieli vuosikymmeniä, ja se tulee olemaan yksi automaatioalan tärkeimmistä ohjelmointikielistä lähitulevaisuudessa.
Ajan myötä, kun alalle on tullut ihmisiä erilaisilta taustoilta ja aloilta, teollisuusautomaation työkalupakkiin on lisätty erilaisia ohjelmointikieliä. Näitä ovat toimilohkoohjelmointi, strukturoitu teksti, tilaohjelmointi ja peräkkäiset funktiokaaviot. Nämä neljä ohjelmointikieltä yhdessä tikapuulogiikan kanssa muodostavat kansainvälisen sähköteknisen komission (IEC) standardin IEC 61131-3 määrittelemät standardiohjelmointikielet.
IEC 61131:n taustalla oleva logiikka on, että jos jokainen toimittaja noudattaa tätä standardia, -ainakin jossain määrin-henkilön tarvitsee vain opetella nämä viisi ohjelmointikieltä vaihtaakseen helposti eri valmistajien tarjoamien alustojen välillä. Näin ei kuitenkaan ole.
Sama koskee tikapuun peruslogiikkaa (kuten relekontaktien ja kelojen käyttöä); Ohjelmoinnissa on kuitenkin opittava kunkin toimittajan syntaksi ja käyttökokemus sekä ohjelmointialustan käytön erityispiirteet. Standardoinnin puutteesta huolimatta tikapuulogiikka tarjoaa seuraavat edut olio-ohjelmointiin verrattuna:
• Se soveltuu hyvin-koneiden ja prosessien ohjaukseen;
• Se on helpompi ymmärtää, koska se on luonnostaan{0}}itsedokumentoiva;
• Se helpottaa ohjatun järjestelmän vianmääritystä;
• Se on helppo korjata;
• Lähdekoodi voidaan yleensä tallentaa prosessoriin.
Tikaslogiikka{0}}soveltuu hyvin kone- ja prosessiohjaukseen, erityisesti automaatiojärjestelmiin, joissa on suuri määrä erillisiä tuloja ja lähtöjä (I/O). Vuosien varrella tikapuulogiikkaa on myös jatkuvasti parannettu käsittelemään analogista I/O:ta, mikä tekee siitä sopivamman monenlaisiin prosessinohjaussovelluksiin.
Koneohjaussovelluksiin verrattuna prosessisovelluksissa on tyypillisesti suurempi analogisten I/O:iden osuus.
Koska tikapuulogiikkaa on helpompi käyttää kuin olio{0}}ohjelmointia, monet ammattitaitoiset teknikot ja insinöörit voivat oppia sen nopeasti. Logiikka on erittäin systemaattista ja organisoitua, ja sen itsestään-dokumentoiva luonne helpottaa sen ymmärtämistä ja hallitsemista. Ennen kuin laite aktivoidaan, jokaisen koodirivin on arvioitava tosi. Jos ohjattavana on viisi moottoria, tarvitaan vähintään viisi koodiriviä, mikä yksinkertaistaa prosessia huomattavasti.
"Tikkaiden logiikan lähdekoodi ja kuvaukset tallennetaan tyypillisesti ohjaimeen, mikä eliminoi tarpeen käyttää lähdekoodia ja poistaa näin turhautumisen, jota ohjelmoijat usein kokevat yrittäessään ymmärtää käännettyjä ohjelmia."
Sähköinsinööreille ja huoltohenkilöstölle tikkaiden logiikka on erittäin intuitiivinen. Vaikka tikapuulogiikka vaatii erilaista ajattelutapaa kuin olio-ohjelmointi, se voidaan hallita nopeasti tutkimalla, ja muiden kirjoittaman koodin ymmärtäminen vie vähemmän aikaa. On kristallinkirkasta, milloin logiikka on totta ja milloin se on epätosi. Jopa rajallisen ohjelmointikokemuksen omaavat ymmärtävät helposti sellaisia käsitteitä kuin on/off-tilat, kelan jännitteet, vertailumuuttujat ja yleiset matemaattiset funktiot.

Se on yksinkertainen ja helppokäyttöinen, mikä virtaviivaistaa vianmääritystä ja virheenkorjausta. Logiikkaa valvoessa on helppo ymmärtää nykyiset käyttöolosuhteet. Ei vaadi ohjelmistotutkintoa tai edistyneitä ohjelmointitaitoja. Tikkaiden logiikan avulla huolto- ja suunnitteluhenkilöstö voi helposti seurata prosessia ja ymmärtää, mitä tapahtuu. Tikaslogiikka voidaan ajatella totuustaulukkona: jos vasemmanpuoleinen logiikka on tosi, oikeanpuoleinen logiikka aktivoituu.
Ladder-logiikan lähdekoodi ja kuvaajat tallennetaan tyypillisesti ohjaimeen. Tämä eliminoi turhautumisen, jota ohjelmoijat usein kokevat yrittäessään ymmärtää käännettyä koodia ilman pääsyä lähdekoodiin-on ongelma, joka on myös yleinen olio-ohjelmoinnissa.
Olio{0}}ohjelmointiin verrattuna tikapuulogiikalla on kuitenkin myös seuraavat haitat:
• Tietokoneohjelmoijat ja IT-ammattilaiset eivät tunne tikapuulogiikkaa;
• Matemaattisten toimintojen, tekstinkäsittelyn ja tietojenkäsittelyn suorittaminen on vaikeaa;
• Se perustuu skannausaikaan;
• Sen suorittamiseen tarvitaan erikoislaitteisto, kuten ohjelmoitava logiikkaohjain (PLC).
Tikaslogiikka on symbolinen kieli, jota ohjelmoijat ja IT-ammattilaiset eivät tunne, koska he eivät opi sitä koulussa. Matemaattisten funktioiden, tekstijonojen ja datan käsitteleminen tikapuulogiikassa voi olla vaikeaa, pääasiassa siksi, että tikapuulogiikkaa ei alun perin suunniteltu käsittelemään näitä toimintoja.
Tikaiden logiikka riippuu myös skannausajasta. Suuremmat ohjelmat vaativat enemmän aikaa logiikan skannaamiseen ja käsittelyyn. Kun suoritetaan tikapuulogiikkaa, järjestelmä lukee syötteitä, skannaa logiikkaa, päivittää tietotaulukot ja lähdöt, suorittaa tiedonsiirron ja toistaa sitten syklin. Ominaisuuksia, kuten keskeytyksiä ja muita ohjelmointitekniikoita, voidaan toteuttaa tietyn logiikan nopeamman suorittamisen varmistamiseksi.
Vaikka ladderlogiikalla konfiguroidut ohjelmistopohjaiset -logiikkalogiikkapiirit voivat toimia PC:ssä, laitteiston (kuten PLC:n) on yleensä oltava yhteensopivia ohjelmointiohjelmiston kanssa, ja on parasta ostaa molemmat samalta toimittajalta. Tämä varmistaa yhteensopivuuden, mutta se ei ole erityisen kätevää, jos haluat vaihtaa toimittajaa.
Sen lisäksi, että verrataan tikapuulogiikan ja olio{0}}ohjelmoinnin etuja ja haittoja, käyttäjien tulee myös arvioida, kuinka näitä ohjelmointikieliä käytetään ympäristössä, jossa ne otetaan käyttöön. Jos tehdas tai laitos on jo standardoinut tikapuulogiikkaa, sen korvaamista olio--ohjelmoinnilla ei suositella, vaikka jälkimmäinen sopisi paremmin sovellukseen. Kun olio-ohjelmoinnin käyttö lisääntyy jatkuvasti, sen odotetaan jatkuvan tikapuulogiikan kanssa tulevina vuosikymmeninä. Edistyksellisen-automaation ammattilaisen olisi hyvä-halua molemmat kielet.




