NRO: 041-FIN-9 JA LOGIIKKAOHJELMOINTI
ESIPUHE Tämä opiskeluvihko on tarkoitettu käytettäväksi CX-One ja logiikkaohjelmointi -koulutuksissa. Vihkon aihepiiri on hieman laajempi kuin kolmen päivän ohjelmointikoulutuksen sisältö. Opiskelussa voidaan käyttää lisäksi apuna CX-Programmer oppaita. Koulutuslaitteistona ovat tehokkaat CJ1M-CPU11ETN logiikat ja CX-One -ohjelmistolla varustetut tietokoneet. Vihkossa käsitellään ensin CJ1M-logiikoiden rakennetta ja toimintaa. Tämän jälkeen perehdytään näiden ohjelmointiin CX-Programmer-ohjelmistolla peruskäskyjä käyttäen ja harjoituksia tehden. Perehdymme myös logiikan ohjelman monitorointiin, parametrien muuttamiseen, dokumentointiin sekä ylläpitotoimiin. Materiaalia voi myös vallan mainiosti käyttää itsenäiseen opiskeluun ohjelmoitavien logiikkalaitteiden parissa. Tämän materiaalin omaksuttuaan on lukijalla eväät ainakin pienten logiikkaohjausten suunnitteluun ja käyttöönottoon sekä logiikkaprojektien ylläpitoon. Iloista ja innokasta mieltä logiikkaohjelmoinnin parissa! 2
SISÄLLYSLUETTELO ESIPUHE...2 SISÄLLYSLUETTELO...3 1 YLEISTÄ OHJELMOITAVISTA LOGIIKOISTA...7 1.1 Rakenne...7 1.2 Toiminta...8 1.3 Ohjelmointi...9 1.3.1 Relekaavio-ohjelmointi...9 1.3.2 Strukturoitu teksti -ohjelmointi...9 1.3.3 Sekvenssivuokaavio-ohjelmointi...10 1.3.4 Toimilohko-ohjelmointi...10 1.4 Toimintaympäristö...11 1.5 SYSMAC-logiikat...11 1.5.1 CPM1A...12 1.5.2 CPM2A...12 1.5.3 CPM2C...13 1.5.4 CQM1H...13 1.5.5 C200HX eli Alfa-sarja...14 1.5.6 CS1-sarja...15 1.5.7 CJ1-sarja...15 1.5.8 CP1-sarja...16 1.5.9 NSJ-sarja (Sysmac One)...17 1.5.10 CJ2-sarja...17 2 SYSMAC CJ1M-OHJELMOITAVA LOGIIKKA...18 2.1 CJ1W-teholähteet...19 2.2 CJ1M-keskusyksiköt...20 2.2.1 Indikaattorit...22 2.2.2 DIP-kytkimet...23 2.2.3 CF-muistikorttiasema...24 2.2.4 Sarjaportit...24 2.3 CJ1M-muistit...25 2.4 Muuttujamuistit...26 2.4.1 Muistien yksiköt...26 2.5.1 CIO-alue...29 2.5.2 D-alue (Data Memory)...29 2.5.3 CPM2-muistialueet...30 2.6 CJ1M toiminta ja sovellusohjelmamuisti...31 2.6.1 IO-päivitykset...32 2.6.2 IO-vasteaika...32 2.7 Logiikan tilat...32 2.8 Digitaaliset tulot ja lähdöt...32 2.8.1 Tuloyksikkö CJ1W-ID211...33 2.8.2 Lähtöyksikkö CJ1W-OD212...34 3 SYSMAC-LOGIIKOIDEN IO-OSOITTEET...35 3.1 CPM-logiikat...35 3.2 CQM1H-logiikat...35 3.3 C200HX-logiikat...35 3.4 CS1-logiikat...37 3.5 CJ1-logiikat...39 3
3.5 CP1H-logiikat... 40 3.6 CP1L-logiikat... 40 4 CX-ONE... 41 5 CX-PROGRAMMER... 43 5.1 Ohjelmarakenne... 45 5.2 Uuden projektin aloitus... 46 5.3 Projekti- ja logiikkanäkymä... 47 5.4 Symbolilista ja symbolointi... 49 5.4.1 Symbolin datatyypit:... 50 5.5 Työpöytä ja ikkunat... 52 5.6 Ohjelmointi... 53 5.6.1 Ohjelmien eli taskien lisääminen ja muokkaaminen... 53 5.6.2 Blokkien lisääminen ja muokkaaminen... 54 5.6.3 Virtapiirien lisääminen, tuhoaminen ja muokkaaminen... 55 5.7 Logiikkaprojektin kommentointi Properties-ikkunalla... 56 5.7.1 Projektin ominaisuudet... 56 5.7.2 Logiikan ominaisuudet... 56 5.7.3 Ohjelman ominaisuudet ja kommentointi... 57 5.7.4 Blokin ominaisuudet ja kommentointi... 57 5.7.5 Virtapiirin ominaisuudet ja kommentointi... 58 5.7.6 Käskyelementin ominaisuudet ja kommentointi... 58 5.8 Projektin tallennus... 59 5.9 Projektin avaus... 59 6 PERUSKÄSKYJEN OHJELMOINTI... 60 6.1 Ohjelmaelementti- eli käskytyökalut... 60 6.2 Käskyikkuna... 61 6.3 AND- ja OR-piirien luominen CX-Programmerilla... 61 6.4 Lopetuskäsky END(001)... 65 6.5 OnLine-yhteys ja logiikan toimintatilat... 66 6.6 Ohjelman siirto logiikkaan eli alaslataus... 67 6.7 Monitorointi ja pakko-ohjaukset... 69 6.8 Virtapiirien ja käskyelementtien muokkaaminen... 71 6.9 Ohjelman muokkaaminen online-tilassa eli Online Edit... 71 7 BITIN KÄSITTELYKÄSKYT... 72 7.1 Pitopiiri KEEP(011), SET JA RSET... 72 7.2 Reunantunnistus DIFU(013) JA DIFD(014)... 75 7.3 Reunatunnisteiset eli kertasuoritteiset koskettimet... 76 7.4 Useamman peräkkäisen bitin nollaus - RSTA(531)... 77 7.5 Sekvenssiohjaukset eli siirtorekisterit... 77 7.5.1 Siirtorekisterin runko KEEP(011) -käskyllä... 78 7.5.2 Siirtorekisterin runko SET/RSET- käskyillä... 79 7.5.3 Siirtorekisterin runko SFT(010)-käskyllä... 79 7.5.4 Etenemisehto SFT(10)-käskylle... 81 7.5.5 Lähtöjen ohjaukset... 81 8 AJASTIMET... 81 8 AJASTIMET... 82 8.1 Perusajastin TIM... 82 9 LASKURIT... 86 9.1 Laskuri CNT... 86 9.2 Ylös/alaslaskuri CNTR(012)... 87 9.3 Pikalaskurit... 87 4
10 DATAN KOPIOINTI-, SIIRTO- JA VERTAILUKÄSKYJÄ...88 10.1 Datan osoittaminen ja vakioarvojen tunnukset...88 10.2 Datakäskyjen ohjelmointi...88 10.3 Sanan kopiointikäsky MOV(021), @MOV(021)...89 10.4 Sanan kopiointikäsky MVN(022), @MVN(022)...91 10.5 Digitin kopiointikäsky MOVD(083), @MOVD(083)...91 10.6 Blokin kirjoitus BSET(071), @ BSET(071)...92 10.7 Blokin kopiointi XFER(070), @XFER(070)...92 10.8 Sanavertailu CMP(020)...93 10.9 Aluevertailu ZCP(088)...94 10.10 Lohkoaluevertailu BCMP(068)...94 10.11 Blokkivertailija MCMP( 019)...95 10.12 Läpiohjelmoitavat symboliset vertailijat...96 10.13 Sanasiirtorekisteri WSFT(016), @ WSFT(016)...97 11 DATAN MUUNNOSKÄSKYT...98 11.1 BCD-Binäärimuunnos BIN(023), @BIN(023)...98 11.2 Binääri-BCD-muunnos BCD(024), @BCD(024)...98 11.3 Binääri-liukulukumuunnos FLT(452), @FLT(452)...99 11.4 Liukuluku-binäärimuunnos FIX(450), @FIX(450)...99 12 ARITMETIIKKAKÄSKYT...100 12.1 Etumerkillisten kokonaislukujen yhteenlasku +(400), @+(400)...101 12.2 Etumerkillisten kokonaislukujen vähennyslasku -(410), @-(410)...102 12.3 Etumerkillisten kokonaislukujen kertolasku *(420), @*(420)...102 12.4 Etumerkillisten kokonaislukujen jakolasku /(430), @/(430)...103 12.5 Binäärinen lisäyskäsky ++(590), @++(590)...103 12.6 Binäärinen vähennyskäsky --(592), @--(592)...103 12.7 Muistibitin asetus STC(040), @STC(040)...104 12.8 Muistibitin nollaus CLC(041), @CLC(041)...104 12.9 BCD-kokonaisslukujen yhteenlasku +B(404), @+(404)...105 12.10 BCD-kokonaisslukujen vähennylasku -B(414), @+(414)...105 12.11 BCD-kokonaisslukujen kertolasku *B(424), @*B(424)...107 12.12 BCD-kokonaisslukujen jakolasku /B(434), @/B(434)...107 12.13 BCD- lisäyskäsky ++B(594), @++B(594)...108 12.14 BCD- vähennyskäsky --B(596), @--B(596)...108 12.15 Reaaliarvojen laskentaa...110 13 LOOGISET KÄSKYT...111 13.1 Komplementti COM(029), @COM(029)...111 13.2 Kahden komplementti NEG(160), @NEG(160)...111 13.3 Looginen JA ANDW(034), @ANDW(034)...111 13.4 Looginen TAI ORW(035), @ORW(035)...111 13.5 Ehdoton TAI XORW(036), @XORW(036)...111 14 TOIMILOHKO-OHJELMOINTI...112 14.1 Toimilohkon luominen...113 14.2 Toimilohkon määrittely...114 14.2.1 Muuttujan määrittely...115 14.2.2 Toimilohkon ohjelmointi relekaaviolla...116 14.3 Toimilohkon kutsu...117 14.4 Toimilohkojen muokkaaminen...118 14.5 Toimilohkojen lataukset...118 14.6 Toimilohkojen suojaus...118 14.7 Toimilohkojen monitorointi...118 5
15 PROJEKTIN TARKISTUKSET, PARAMETROINTI JA YLLÄPITO... 120 15.1 Ohjelman tarkistukset Compile- eli käännöstoiminnolla... 120 15.2 Logiikan IO-taulu, PLC IO Table... 121 15.3 Logiikan parametrointi PLC Settings... 122 15.4 Muuttujamuistieditori PLC Memory... 123 15.5 Ohjelmien vertailu Compare with PLC... 126 15.6 Ohjelman ylöslataus Transfer From PLC... 127 15.7 Logiikan eri osien tallentaminen tiedostoon... 127 15.7 Logiikan eri osien tallentaminen tiedostoon... 128 15.8 Logiikan osien lataaminen tiedostosta... 128 15.9 Ohjelmien vertailu tiedostoon... 129 15.10 Ristiviittauslista... 130 15.11 Muuttujien etsintä Find in PLC... 131 15.12 Osoiteviiteikkuna osoitteen jäljittämisessä Address Reference Tool... 132 15.13 Ohjelman rakenneikkuna Section/Rung Manager... 133 15.14 Logiikan tilan tarkistus ja virhehistoria Error Log... 134 16 HARJOITUKSIA... 134 6
1 YLEISTÄ OHJELMOITAVISTA LOGIIKOISTA Ohjelmoitavat logiikat (PLC) ovat yhdellä tai useammalla mikroprosessorilla varustettuja elektronisia laitteita, jotka ohjaavat prosessin laitteita logiikoiden tulojen ja lähtöjen tai väylien kautta niiden muistissa olevien ohjelmien ja parametrien perusteella. Mikäli ohjauksia halutaan muuttaa, käy se helposti sovellusohjelmaa muuttamalla. Erilaisten tulo-, lähtö- ja väyläyksiköiden kautta logiikat voidaan liittää erityyppisiin ja -suuruisiin prosessisignaaleihin. Signaalit ovat pääsääntöisesti binäärisiä kaksitilaohjauksia, mutta myös analogisia standardiviestejä ja pulssijonoja käytetään. Viime vuosina erilaiset kenttäväyläratkaisut ovat lisänneet sarjaliikenteen käyttöä eri laitteiden viestinnän sekä hajautetun I/O:n parissa. Ohjelmoitavan logiikan idea on siis toteuttaa ohjaukset sen sovellusohjelmaan sekä prosessitietoihin perustuen. Tätä varten tarvitaan tuloliitännät prosessitietojen lukemiseen, lähtöliitännät prosessin ohjauksiin sekä muisteja ohjelmaa ja muuttujia varten. Muistit jaotellaankin karkeasti ohjelmamuistiin ja muuttujamuisteihin. Sovellusohjelma käyttää muuttujamuistipaikkoja arvojen lukemista ja kirjoittamista varten. 1.1 Rakenne Ohjelmoitavan logiikan sisäisiä toimintoja ohjaavat mikroprosessori sekä käyttöjärjestelmä. Ne huolehtivat myös viestiliikenteestä logiikan ja oheis- sekä ohjelmointilaitteiden välillä. Suurissa logiikoissa käytetään useampia prosessoreita, joiden kesken tehtävät on jaettu. Näin saadaan laajojenkin ohjausten toiminta nopeaksi. Useissa erikoisyksiköissä, kuten liikkeen- tai prosessinohjausyksiköt, on omat suorittimensa. Käyttöjärjestelmä on logiikassa valmiina tallennettuna ROM-muistiin. Sovellusohjelma määrää logiikan tehtävät prosessissa ja se talletetaan ohjelmamuistiin, joka yleensä on paristovarmennettua RAM-muistia. Joissakin logiikoissa, kuten CJ1M, on myös Flash-ROMmuistia, josta ohjaus siirretään automaattisesti käynnistyksessä RAM-muistiin. Sovellusohjelman pituutta rajoittaa mm. käytössä olevan ohjelmamuistin koko. Lisäksi logiikoissa on erilaisia muuttujamuistialueita mm. tuloja ja lähtöjä, ohjelmassa käytettäviä apumuisteja, mittaustietojen tallennusta tai vaikkapa tiedonsiirtoa eri laitteita varten. Binääristen tuloyksiköiden tehtävänä on sovittaa ulkoinen signaali logiikan sisäiseen signaalitasoon, joka usein on 5VDC. Tämä tila luetaan sitten tulon bittiin. Lähtöyksiköt ohjaavat lähtöä vastaavan sisäisen muistipaikan tilan (0 tai 1) perusteella lähdössä olevaa kosketinta tai puolijohdekytkintä. Yleensä tulo- ja lähtöyksiköt sisältävät optoerottimen turvallisuuden parantamiseksi ja häiriövaikutusten pienentämiseksi. Analogiset yksiköt sisältävät datamuuntimet analogisen signaalin muuntamiseksi digitaaliseksi tai päinvastoin. Tyypillinen datamuuntimen bittimäärä on 12, jolloin tietty standardiviesti, esim. 0...10 V, voidaan jakaa logiikassa 4000 tasoon. Binääriset liittynnät varaavat logiikan muuttujamuistista yhden bitin (1 bit). Analogiset liitynnät varaavat taas yhden sanan (16 bit). Jotkut keskeytyspohjaiset toiminnat, kuten pikalaskurit, jotka on tarkoitettu esim. inkrementtiantureilla tehtävään paikan mittaukseen, varaavat oloarvolleen kaksi sanaa (32 bit). 7
Teholähde Tulot Keskusyksikkö Muistit Sovellusohjelma Muuttujamuistit Parametrit Käyttöjärjestelmä Lähdöt Väyläliitännät 1.2 Toiminta Nykyiset ohjelmoitavat logiikat toimivat syklisellä ohjelmankäsittelyperiaatteella, jossa ohjelmankierto eli sykli koostuu tietyistä rutiineista. Tyypillisesti yhden syklin aikana tehdään seuraavat kuvassa esitetyt rutiinit. Eli tutkitaan CPU:n ja oheislaitteiden tilaa, suoritetaan sovellusohjelma rivi riviltä sekä päivitetään tulot ja lähdöt sekä sarjaliikenneportit ynnä muut väylät. Syklistä voidaan poiketa mm. keskeytystapahtumilla. Myös tulojen luku ja lähtöjen kirjoitus kesken sovellusohjelman suorituksen on mahdollista. I/O- ja sarjaporttien päivitykset Itsediagnostiikka Sovellusohjelman suoritus 8
1.3 Ohjelmointi Ohjelmointi tehdään normaalisti tietokoneeseen asennettavalla ohjelmointiohjelmistolla. Ohjelmointiin on luotu standardi, IEC 1131-3, mutta aniharvat ohjelmistot sitä täydellisesti noudattavat. Tyypillisiä ohjelmointimuotoja ovat tikapuu- eli relekaavio (LD), logiikkakaavio (FBD) tai käskylista (STL) sekä lausemuotoinen strukturoitu teksti (ST). Myös sekvenssiohjauksiin on sopiva sekvenssivuokaaviomuoto (SFC). Usein toistuviin samankaltaisiin ohjelmarakenteisiin sopii toimilohko-ohjelmointi (FB). CX-Programmer-ohjelmistolla ohjaukset tehdään tyypillisesti relekaaviomuodossa. Ohjelmia voi luoda nykyisin myös ST- sekä SFC-muodossa sekä hyödyntää toimilohkoja. Ohjelma voidaan kirjoittaa ilman logiikkaa. Ohjelma luodaan ja talletetaan. Testausta varten tarvitaan yleensä ohjelmoitava logiikka, joka kytketään ohjelmointiohjelmiston sisältävään tietokoneeseen esimerkiksi sarjaportin kautta. Muodostetaan yhteys logiikan ja tietokoneen välille, ja ladataan sovellusohjelma logiikkaan ja suoritetaan testaus. Ohjelmointiohjelmistoissa on eri tyyppisiä monitorointimahdollisuuksia logiikan muistien tilojen seuraamiseksi tai ohjaamiseksi. On myös mahdollista testata ohjelman toimintaa tietokoneessa pyörivässä simulointiohjelmistossa. CX- One-ohjelmistopaketti sisältää simulointiohjelmiston nimeltä CX-Simulator ja siinä voi testata CS1/CJ1/CP1-logiikoiden ohjelmia. 1.3.1 Relekaavio-ohjelmointi Yksinkertaisimmillaan relekaavio-ohjelma näyttää tältä, muistuttaen ohjauspiirikaavioita. Avautuvilla ja sulkeutuvilla koskettimilla muodostetaan tarvittavista bittimuuttujista ehtologiikka, jonka tila kopioidaan kelalla haluttuun bittiin. Käytännössä ohjelmissa esiintyy useita erilaisia bittejä tai sanoja käsitteleviä logiikkakäskyjä, joilla toteutetaan mutkikkaampia operaatioita. 1.3.2 Strukturoitu teksti -ohjelmointi On lausemuotoista IEC-ohjelmointikieltä. IEC-ohjelmoinnissa on se hyvä puoli, että samaa ohjelmakoodia voidaan soveltaa helposti toisten ohjelmoitavien logiikoiden valmistajien laitteisiin. Perusehtologiikan ohjelmointi on tällä tavalla hankalampaa verrattuna relekaavioon, mutta taas mutkikkaampien laskentaoperaatioiden tai ohjelmasilmukoiden tekeminen taas joustavampaa. 9
1.3.3 Sekvenssivuokaavio-ohjelmointi SFC-ohjelmointi soveltuu sekvenssien tekemiseen. Tällä muodolla siis toteutetaan sekvenssin runko. Ehto- ja toimenpideohjelmat ohjelmoidaan sitten jollain muulla ohjelmointimuodolla tai toteutetaan yksinkertaisesti ehdoilla. 1.3.4 Toimilohko-ohjelmointi Toimilohkot ovat ohjelmoijan itsensä tai laitevalmistajan tekemiä funktioita, jotka esitetään yhdellä käskyllä lohkoa kutsuvassa ohjelmassa. Kuvassa alla relekaaviomuotoinen kutsulaatikko, joka kutsuu toimilohkoa Tekstinkäsittely. Itse ohjelma yksinkertaistuu, koska mutkikkaatkin toiminnot voidaan esittää yhdellä käskyllä, joka käyttää tarvittavia tulo- ja lähtöparametreja funktion toiminnan suorittamiseksi. 10
1.4 Toimintaympäristö Ohjelmoitava logiikka voi aivan yksinään toimia prosessin ohjauslaitteena ohjelmoinnin ja antureiden, toimilaitteiden ym oheislaitteiden liittämisen jälkeen. Suuremmissa järjestelmissä liitetään useita logiikoita toisiinsa erilaisten väylien kautta, jolloin ne voivat vaihtaa tietoja keskenään. Logiikkaväylät ovat valmistajakohtaisia tai ns. avoimia tehdas- tai kenttäväyliä, joihin voidaan liittää usean valmistajan laitteita. Jos prosessin tai laitteiden tiloja halutaan seurata tai ohjata keskitetysti, niin tällöin väylään tai suoraan logiikkaan liitetään käyttöpääte tai valvomoohjelmistolla varustettu tietokone. Toki näitäkin voi olla useita. 1.5 SYSMAC-logiikat OMRONin ohjelmoitavat logiikat tunnetaan nimellä SYSMAC. SYSMAC-perhe koostuu eri logiikkasarjoista. Seuraavissa kappaleissa esitellään lyhyesti SYSMAC C/CJ1/CS1/CP1- logiikkasarjat pienimmästä tehokkaimpaan. Aluksi käsitellään jo viime vuosituhannella esitellyt C-sarjan logiikat CPM1A/2A/2C, CQM1 ja C200HX. Näiden jälkeen vuosituhannen taitteen jälkeen julkaistut CS1G/H-, CJ1M/G/H- ja uusimmat CP1L/H/E-logiikat. Uudemmat Cx1-logiikat ovat ohjelmoinniltaan, muisteiltaan keskenään lähes identtisiä. Vain IO-osoitteet muodostuvat CP1-sarjassa isommista poiketen. 11
1.5.1 CPM1A (n. 2000 sanaa) ja datamuistin laajuus 1kW. CPM1A -laitteet tulivat markkinoille 1990- luvun lopulla ja soveltuvat kevyisiin ohjauksiin. Keskusyksikössä on aina tietty määrä tuloja ja lähtöjä. Keskusyksiköiden kiinteät IO-pistemäärät ovat 10, 20, 30 ja 40. IO-pistemäärää voidaan laajentaa enintään kolmella laajennusyksiköllä. Laajennusyksikössä on enintään 20 IOpistettä. Tällöin laitteiston maksimi-iopistemääräksi saadaan 100 IO-pistettä. Erilaisia analogi- ja lämpötilan mittausyksiköitä on saatavissa. Laitteet voidaan liittää linkkiyksikön kautta DeviceNet-, Profibus-DP ja Compobus/Skenttäväyliin. Ohjelmamuistin koko on 2kW 1.5.2 CPM2A CPM2A -laitteet tulivat markkinoille 1990- luvun lopulla ja soveltuvat kevyisiin ohjauksiin. Keskusyksikössä on aina tietty määrä tuloja ja lähtöjä. Keskusyksiköiden kiinteät IO-pistemäärät ovat 20, 30, 40 ja 60. IO-pistemäärää voidaan laajentaa enintään kolmella CPM1A-laajennusyksiköllä. Laajennusyksikössä on enintään 20 IOpistettä. Tällöin laitteiston maksimi-iopistemääräksi saadaan 120 IO-pistettä. Erilaisia analogi- ja lämpötilan mittausyksiköitä on saatavissa. Laitteet voidaan liittää linkkiyksikön kautta DeviceNet-, Profibus-DP ja Compobus/Skenttäväyliin. Ohjelmamuistin koko on 4kW ja datamuistin laajuus 2kW. Laitteissa on kohtuulliset pulssi-io-ominaisuudet. Sillä voidaan toteuttaa kahden liikeakselin pulssiohjaus. 12
1.5.3 CPM2C CPM2C -laitteet soveltuvat koneohjauksiin ja älykkäiksi slavelaitteiksi väyläratkaisuihin. CPM2C on CPM2A-logiikan sisarlaite. Erona on pienempi fyysinen koko, paremmat väyläominaisuudet ja laajempi IO-kapasiteetti Compobus/Smasterin sisältävissä malleissa. Keskusyksikössä on aina tietty määrä tuloja ja lähtöjä. Keskusyksiköiden kiinteät IO-pistemäärät ovat 10, 20 tai 32. IO-pistemäärää voidaan laajentaa enintään viidellä laajennusyksiköllä (Compobus/S malleissa kolmella). Laajennusyksikössä on enintään 32 IO-pistettä. Tällöin laitteiston maksimi-io-pistemääräksi saadaan 192 IO-pistettä. Erilaisia analogi- ja lämpötilan mittausyksiköitä on saatavissa. Laitteet voidaan liittää linkkiyksikön avulla Compobus/S-kenttäväylään. CPM2C-S1x0-DRT- malleissa on DeviceNet-slaveliitäntä ja Compobus/S -master. Ohjelmamuistin koko on 4kW ja datamuistin laajuus 2kW. 1.5.4 CQM1H CQM1H -laitteet tulivat markkinoille 1999 korvaamaan CQM1-edeltäjiään ja ne soveltuvat monenlaisiin ohjauksiin. Valittavana on 4 eri CPU vaihtoehtoa. Perusmallit ovat CPU11 ja CPU21. Tehokkaammat CPU-mallit, joissa on 2 optiokorttipaikkaa erikois-io-liitäntöjä varten, ovat CPU51 ja CPU61. Keskusyksikössä on aina 16 digitaalista tuloa. IO-pistemäärää voidaan laajentaa enintään viidellätoista laajennusyksiköllä. Laajennusyksikössä on enintään 32 IO-pistettä. Laitteiston maksimi- IO-pistemäärä on 512 IO-pistettä. Erilaisia analogi- ja lämpötilan mittausyksiköitä on saatavissa. Laitteet voidaan liittää linkkiyksikön kautta DeviceNet-, Profibus-DP -kenttäväyliin. Masterliitynnät saadaan ASi- ja Compobus/Skenttäväyliin. Tehokkaammat CPU:t voidaan liittää osaksi Controller Link -järjestelmäväylää. Ohjelmamuistin koko on enintään 15,2kW ja datamuistin laajuus 6+6kW. 13
1.5.5 C200HX eli Alfa-sarja C200HX -laitteet soveltuvat laajoihinkin ohjauksiin.ensimmäinen C200-sarjan logiikka, C200H, julkaistiin yli 20 vuotta sitten Nykyinen mallisto sekin jo vuonna 1996.Valittavana on 13 eri CPU vaihtoehtoa. CPU:t jaotellaan C200HE, C200HG ja C200HX-laitteisiin. Tehokkaimpia ovat HX-logiikat. Järjestelmä on täysin modulaarinen ja se rakennetaan taustakehikon/-kehikoiden päälle. Kehikossa on enintään 10 korttipaikkaa. Laitteiston paikallis-io-pistemäärä on enintään 1280 IO-pistettä, jolloin se on laajennettu CPUkehikon lisäksi kolmelle laajennuskehikolle. Lähes kaikkia mahdollisia yksiköitä on saatavissa näihin laitteisiin. Ylemmän tason väyläliitynnöistä on valittavana Ethernet, Controller Link ja Sysmac Link. Kenttäväylistä löytyy DeviceNet, Profibus-DP, CAN, CAN-Open, Sysmac Bus, Compobus/S-liitynnät. Ohjelmamuistin koko on enintään 63,2kW ja datamuistin laajuus 6+ 16*6kW. Edellämainittujen logiikoiden muistirakenteet ovat laajuuksia lukuunottamatta samat. Ohjelmamuistit ovat yksiohjelmaisia ja ohjelmointi on samankaltaista. Käskykantojen laajuuksissa on tosin suuriakin eroja Uudemmat logiikkasarjat CS1, CJ1 ja CP1 eroavat näistä varsinkin rakenteisen ohjelmamuistinsa, muuttujamuistiensa ja helpomman ohjelmoitavuuden vuoksi. Vapaampi ohjelmoitavuus saavutetaan parempien relekaaviokäskyjen, SFC- ja ST-ohjelmamuotojen sekä toimilohkojen ansiosta. CS1/CJ1-logiikat ovat edenneet systeemiversioon 4.0 vuonna 2007. CP1L/H-logiikat edustavat systeemiversiota 3.0. Verrattuna niitä saman versioiseen CS1/CJ1-logiikkaan, on niiden ohjelmalliset ominaisuudet samat IO-osoitteita lukuunottamatta. CP1E-sarja on yksinkertaistettu versio CP1L-logiikoista. 14
1.5.6 CS1-sarja CS1-laitteet soveltuvat laajoihin ja nopeutta vaativiin ohjauksiin. CS1-sarja koostuu CS1G-H ja CS1H-H-logiikoista. Yhteensä näitä on tarjolla 9 eri CPU-vaihtoehtoa. Järjestelmä on täysin modulaarinen ja se rakennetaan taustakehikon/-kehikoiden päälle. Kehikossa on enintään 10 korttipaikkaa. Laitteiston paikallis-io-pistemäärä on enintään 5120 IO-pistettä, jolloin se on laajennettu CPU-kehikon lisäksi seitsämälle laajennuskehikolle. CS1-järjestelmässä voidaan käyttää C200H-sarjan IO-kortteja, powereita sekä myös osin C200H-laajennuskehikoita CS1-logiikoissa on mahdollista käyttää ylemmän tason väyläliitynnöistä Ethernet, Controller Link ja Sysmac Link-väyliä. Kenttäväylistä löytyy DeviceNet, Profibus-DP, CAN, CAN-Open, Sysmac Bus, Componet, Compobus/S-liitynnät. Myös Mechatrolink II liikkeenohjausväylämasterit on. Prosessinsäätöyksikkö on asennettavissa CPU:n sisään. Ohjelmamuistin koko on enintään 250 kstep ja datamuistin laajuus 32+ 13*32kW. Ohjelmamuistirakenne koostuu siis useista ohjelmista (taskeista). Ohjelmoitsija voi jakaa koko ohjauksen useisiin syklisiin ja keskeytystaskeihin. 1.5.7 CJ1-sarja CJ1-laitteet ovat sisältäpäin tarkasteltuna samanlaisia kuin CS1-laitteet. Erottavat tekijät ovat pienempi fyysinen koko ja rajoittuneempi IO-kapasiteetti. CJ1-sarja koostuu CJ1G-H ja CJ1H-H sekä pienimmistä CJ1M-CPU:sta. Yhteensä näitä on tarjolla 13 eri CPUvaihtoehtoa. Myös prosessinsäätö-cpu:t (CJ1G- P) ovat saatavissa sekä CJ1M-logiikoissa myös mallit, joissa on integroitu Ethernet-liityntä. Väyläliitännät ovat liki samat kuin CS1:ssäkin. Järjestelmä on täysin modulaarinen ja se rakennetaan ilman taustakehikoita kuten CQM1H-järjestelmäkin. Yhteen riviin voidaan asentaa 10 yksikköä. Laitteiston paikallisdigitaali-io-pistemäärä on enintään 2560 IO-pistettä, jolloin se on laajennettu CPU-rivin lisäksi neljään riviin. Ohjelmamuistin koko on enintään 250 kstep ja datamuistin laajuus 32+ 13*32kW. Ohjelmamuistirakenne ja ohjelmoitavuus ovat kuten CS1-laitteissa. 15
1.5.8 CP1-sarja CP1-laitteet ovat sisältäpäin tarkasteltuna samanlaisia kuin CS1/CJ1 (ver3.0)-laitteet. Erottavat tekijät ovat kompakti rakenne ja rajoittuneempi IO-kapasiteetti. CP1-sarja koostuu CP1H sekä pienimmistä CP1L-CPU:ista. Erikoista ohjelmointiliitännän osalta on näissä se, että vakiona on vain USB-liitäntä. RS-portit ovat lisävarusteita. CP1H on laajennettavissa suoraan enintään seitsemällä CP1W-laajennusyksiköllä ja/tai enintään kahdella CJ1-sarjan väylä- tai esim. analogiyksiköllä adapterin avulla. CPU:n digitaali-io-pistemäärä on 20/40 IO-pistettä, ja XA-malleissa on lisäksi sisäänrakennettuna 4 AD- ja 2 DA-liitäntää. Digtaali-IO on osin parametroitavissa keskeytyspohjaiseksi ja enimmillään tämän avulla saadaan neljän takaisinkytketyn pulssiohjatun paikoitusakselin sovellus. VAU Ohjelmamuistin koko on 20 kstep ja datamuistin laajuus 32kW. Ohjelmamuistirakenne ja ohjelmoitavuus ovat kuten CS1/CJ1 (ver 3.0)-laitteissa. CP1H-laitteisiin voidaan lisätä CPU:hun kaksi sarjaporttia. porttiin 1 pieneksi paikallisnäytöksi. Pikkuveli CP1L (CP1L-L ja CP1L-M CPU:t) on laajennettavissa enintään kolmella (CP1L-M) tai yhdellä (CP1L-L) CP1W-laajennusyksiköllä. CPU:n digitaali-io-pistemäärä on L-malleissa 10/14/20 ja M-malleissa 30/40 IO-pistettä. Ohjelmamuistin koko on L-malleissa 5 kstep ja datamuistin laajuus 10kW. M-malleissa ohjelmamuistin koko on 10 kstep ja datamuistin laajuus 32kW. Ohjelmamuistirakenne ja ohjelmoitavuus ovat kuten CP1H:ssakin. 10/14/20-pisteisiin CP1L-malleihin voidaan lisätä yksi sarjaportti ja 30/40-pisteisiin kaksi. Myös CP1W-DAM01-näyttöyksikkö voidaan asentaa Viimeksi kesällä 2009 ovat markkinoille ilmestyneet edulliset CP1E (CP1E-E ja CP1E-N) CPU:t. Jos em. CP1L/H logiikat on ajateltu CPM2*/CQM1H-seuraajiksi, niin tämä lienee sitten CPM1A seuraaja. CP1E logiikat tukevat vain relekaavio-ohjelmointia, joka on tosin yhtenäinen isoveljien kanssa. CPU:n digitaali-io-pistemäärä on E-malleissa 20/30/40 ja se on laajennettavissa 30/40- pisteisissä malleissa kolmella CP1W-yksiköllä Ohjelmamuistin koko taas on E-E-malleissa 2 kstep ja E-N-malleissa 8 kstep. Datamuistin laajuudet ovat vastaavasti 2kW / 8kW. CP1E-N-malleissa on vakiona RS232-sarjaportti ja 30/40-pisteisissä malleissa mahdollisuus lisätä vielä toinenkin. CP1E- E-mallit eivät tue sarjaporttia lainkaan. 16
1.5.9 NSJ-sarja (Sysmac One) NSJ-laitteissa on yhdistettty NS-käyttöpääte ja CJ1-logiikka, jossa on väyläliitäntä. Edestäpäin ei laitetta erota NS-käyttöpäätteistä. Syvyyttä on hieman enemmän ja taustapuolella näkyy logiikan sekä väyläliitännän näyttöjä ja liitäntöjä. Malleja on paljon, koska Käyttöpäätteenä onns5/ns8/ns10 tai NS12, jossa voi olla myös Ethernet-liitäntä Logiikkana voi olla CJ1G-CPU45H (ver. 3.0) tai CJ1M-CPU13 (ver. 3.0) Kenttäväylämasteri voi olla DRM21 (DeviceNet), PRM21 (Profibus-DP master) tai CORT21 ( protokollavapaa CAN-liitäntä) Käyttöpääte ja logiikka keskustelevat keskenään sisäistä väylää pitkin. Logiikkaosaan voidaan myös kytkeä paikallisesti lisää erikois-io- tai väyläyksiköitä.. Yhteydet CX-One-ohjelmistoista NSJ-laitteen osiin saadaan yhdestä pisteestä joko USB- sekä Ethernet-malleissa myös Ethernet-väylän kautta. USB-liitännän lisäksi näyttöosassa on kaksi RS232- porttia kuten kaikissa NS-näytöissä. Logiikkaosassa on yksi RS232-portti. 1.5.10 CJ2-sarja CJ1-sarjasta paranneltu CJ2-sarja julkaistiin 2008. CPU on CJ1H-H-malleihinkin verrattuna tehokkaampi ja ohjelmamuistit laajempia. Ohjelmointiin on CPU:ssa USB-liitäntä, ohjelmointiin ja muuhun kommunikointiin RS232C-sarjaportti sekä EIP-malleissa Ethernet/IP-liityntä. Ethernet/IP-liitäntä tukee Ethernet/IP- sekä FINS-kommunikointeja. Socket-kommunikoinnit sekä sähköpostitoiminnot puuttuvat. Toisaalta Ethernet/IP-kommunikointi sallii noodien väliset kommunikoinnit Datalinkkien avulla ilman logiikkaohjelmointia. Ohjelmoinnin suhteen on toisiin Sysmac-logiikoihin nähden enemmän vapauksia D-alueen käyttö bitteinä Monimuotoiset epäsuorat osoitukset taulukoilla Ethernet/IP-kommunikointia käytettäessä verkkosymbolit toisten CJ2-EIP-logiikoiden ja NS-näyttöjen kanssa. 17
2 SYSMAC CJ1M-OHJELMOITAVA LOGIIKKA CJ1M-logiikat ovat osa CJ1-logiikkaperhettä. CJ1M-keskusyksiköt käyttävät samoja IO- ja väyläyksiköitä sekä teholähteitä kuin CJ1G-H ja CJ1H-H -logiikatkin. Keskusyksiköt ovat myös ohjelmiltaan yhteensopivia. Itseasiassa CJ1M-CPU21/22/23-laitteissa on sisäänrakennetun pulssi- IO-liitännän vuoksi enemmän käskyjä, kuin muissa keskusyksiköissä. CJ1M eroaa käytännössä CJ1G-H ja CJ1H-H -logiikoista vain edullisemman hintansa sekä pienemmän ohjelmamuistinsa ja IO-kapasiteettinsa takia. CPU:t 11, 12 ja 13 on saatavissa myös integroidulla Ethernet-liitynnällä. CJ1- ja CS1-logiikat ovat jo kehittyneet versioon 4.0. Nyt käytettävissä on normaalin relekaavioohjelmoinnin (LD) lisäksi myös strukturoitu teksti (ST) tai sekvenssivuokaavio (SFC) ohjelmamuodot sekä toimilohkot (FB). Toimilohkot helpottavat ohjelmointia, jos sama ohjelmarakenne täytyy suorittaa useasti eri muuttujilla. Ne ovat tavallaan itseohjelmoitavia käskyjä / funktioita, kuten esim. skaalaus- tai moottorin ohjauspiirit. Strukturoitu teksti sopii aritmeettisten ym. Toimitusten käsittelyyn. Sekvenssikaavio taas nimensä mukaisesti sekvenssien eli askelohjausten luomiseen. Toimilohkoja voi ohjelmoida CX-Programmer versiolla 5.0 tai uudemmalla. ST- ja SFC ohjelmat edellyttävät CX-Programmer versiota 7.2. CJ1M-logiikka on siis kooltaan pieni, mutta nopea ja laajan käskykannan omaava ohjelmoitava logiikka. CJ1M on rakenteeltaan modulaarinen ja sen tulojen ja lähtöjen määrä voi yhteensä olla maksimissaan 640 bittiä. Valittavissasi on kuusi eri CPU-vaihtoehtoa (+ 3 Ethernet-mallia). CJ1M -järjestelmä kootaan seuraavista erillisistä osista. teholähde CJ1W-PA... tai CJ1W-PD... CPU CJ1M-CPU11/12/13/21/22/23/ETN11ETN/ETN12ETN/ETN13ETN digitaaliset tuloyksiköt CJ1W-ID... (8/16/32/64 bit) digitaaliset lähtöyksiköt CJ1W-OC.../OD... (8/16/32/64 bit) analogituloyksiköt CJ1W-AD... analogilähtöyksiköt CJ1W-DA... analogiyksikkö CJ1W-MAD42 lämpötilansäätöyksiköt CJ1W-TC... lämpötilanmittausyksiköt CJ1W-TS... pikalaskuriyksiköt CJ1W-CT021/-CTL41 SSI-liitäntäyksikkö CJ1W-CTS21 paikoitusyksiköt CJ1W-NC... kenttäväyläyksiköt DeviceNet master/slave CJ1W-DRM21 Component master CJ1W-CRM21 Compobus/S master CJ1W-SRM21 Profibus-DP master CJ1W-PRM21/ Profibus-DP slave CJ1W-PRT21 väyläyksiköt Ethernetyksikkö CJ1W-ETN21 / Ethernet/IP CJ1W-EIP21 Controller Link -yksikkö CJ1W-CLK21 sarjaliikenneyksiköt CJ1W-SCU21/41 CAN-yksikkö CJ1W-CORT21 Mechatrolink II -väylämasteryksiköt CJ1W-MCH72/-NCF71/NCx71 Liikeohjain Trajexia-PLC CJ1W-MCH72 IO-laajennusyksiköt CJ1W-IC101 ja CJ1W-II101 18
Yksiköt kiinnitetään toisiinsa yksiköiden ylä- ja alapuolella olevilla salvoilla. Erillistä taustakehikkoa ei tarvita. Poweri tulee vasemmalle, CPU sen oikelle puolen ja edelleen CPU:n oikealle puolen muut yksiköt. Yhteen riviin voidaan laittaa powerin ja CPU:n lisäksi enintään 10 yksikköä. CPU:t 13 ja 23 sallivat myös toisen yksikkörivin käytön. Nyt voidaan käyttää jopa 20:ta yksikköä. Yksikkörivit kytketään IO-kontrolliyksikön CJ1W-IC101, kaapelin CS1W-CNxx3 ja IOliitäntäyksikön CJ1W-II101 avulla toisiinsa. Kuvassa näkyy kahden yksikkörivin kokoonpano. IO-kontrolliyksikkö kytketään heti CPU:n perään ja laajennusrivin IO-liitäntäyksikkö heti powerin perään. Rivin päättää aina päätylevy, joka tulee CPU:n sekä IO-liitäntäyksikön mukana 2.1 CJ1W-teholähteet. 19
2.2 CJ1M-keskusyksiköt Seuraavassa taulukossa on eri CPU-vaihtoehdot. I/O-points = IO- eli paikallistulo- ja lähtöbittien maksimilukumäärä Expansion Racks = laajennusrivien määrä Program capacity = Sovellusohjelmamuistin koko steppeinä (1 käsky varaa 1-7 steppiä) Data Memory = Paristovarmennetun datamuistin koko tuhansina sanoina (kw) LD instr...= kosketinkäskyn suoritusaika ohjelmassa Pulse IO -keskusyksiköissä CPU21/22/23 oleva sisäänrakennettu pulssi-io-liitäntä, jonka tuloissa mm. 2 pikalaskuria, max. 4 keskeytytuloa, kotirajatulot ja lähdöissä mm. 2 pulssilähtöä. Vertailun vuoksi isoveljien CJ1G-H ja CJ1H-H vastaava taulukko. CJ1H-H-R CPU:t ovat Hmalleista vielä paranneltuja ja nopeampeja malleja. 20
CJ1M-CPU1x-ETN CPU:n pääosat. CPU on perus-cpu, mutta siihen on liitetty CJ1W-ETN21- yksikkö. Integroidusta Ethernet-yksiköstä on poistettu Socket- sekä sähköpostiominaisuudet verrattuna erilliseen yksikköön. ETN-osa varaa korttipaikan 0 (Slot 0), jossa näkyy IO taulueditorilla tarkasteltuna CJ1W-ETN21. Ethernet-liitännän oletus-ip-osoite on 192.168.250.node. Node on yksikön FINS-laiteosoite ja se annetaan ETN-osan Node-kiertokytkimillä heksamuodossa. Noodinumero voi olla 1 254 (dec). 21
2.2.1 Indikaattorit CPU ledit. RUN = ilmaisee CPU:n toimintatilan. Loistaa vihreänä, kun logiikka on Run tai Monitortilassa. Logiikan ollessa Program-tilassa tai virheessä, on Led pimeänä. ERR/ALM= ilmaisee CPU:n häiriötilan. Loistaa punaisena, kun logiikka on virhetilassa (Fatal Error). Tällöin ohjelmasykliä ei suoriteta. Led vilkkuu punaisena, kun logiikka on hälytystilassa (Non-Fatal Error). Logiikan ollessa häiriöttömässä tilassa on Led pimeä. INH = PRPHL = COMM = BKUP = ilmaisee lähtöjen nollausbitin A500.15 olevan 1. Kaikki lähtöbitit ovat myös arvossa 0. Tällöin Led loistaa oranssina. ilmaisee CPU:n kommunikoivan Peripheral-portin kautta. Vilkkuu oranssina kommunikoinnin tahtiin. ilmaisee CPU:n kommunikoivan RS-232C-portin kautta. Vilkkuu oranssina kommunikoinnin tahtiin. ilmaisee CPU:n varmuuskopioinnin tapahtuvan. MCPWR = ilmaisee vihreällä loistolla CPU:ssa olevan CF-muistikortin olevan jännitteellinen. BUSY = ilmaisee CPU:n kommunikoivan CF-muistikortin kanssa. Vilkkuu oranssina kommunikoinnin tahtiin. Älä katkaise muistikortin tai logiikan sähkön syöttöä tahi poista muistikorttia paikastaan tällöin. ETN21 ledit. RUN = 100M = ERC ERH SD/RD LNK FTP ilmaisee ETN-yksikö:n toimintatilan. Loistaa vihreänä normaalitilassa. Laitevirheessä on Led pimeänä. ilmaisee väylänopeuden. Loistaa 100Mbps väylässä. Normaalisti pimeänä. Loistaa punaisena laiteviassa, tai jos noodiosoite ei ole 1 254. Normaalisti pimeänä. Loistaa punaisena CPU puutteellisissa / virheellisissä asetteluissa. Tyypillisesti reititystaulun puutteellinen asettelu. Led vilkkuu, jos IPosoitteen asettelu virheellinen. Tyypillisesti siksi, että automaattista konversiota käytettäessä IP-osoitteen laiteosa ei vastaa noodiosoitetta. Kommunikoinnin merkkivalot Loistaa keltaisena, kun yksikkö kytketty väylään Loistaa keltaisena, kun FTP-serveriin on kytkeytynyt käyttäjä. 22
2.2.2 DIP-kytkimet Näitä kytkimiä voi kääntää sähköjen ollessa kytkettynä. Oletustila kaikille kytkimille on OFF. PIN 1 PIN 2 PIN 3 PIN 4 PIN 5 estää ohjelman ja parametrien kirjoittamisen asennossa ON mahdollistaa käynnistystiedostojen siirtämisen muistikortilta CPU:lle käynnistyksessä asennossa ON ohjaa käsiohjelmointilaitteen kieleksi englannin asennossa ON määrittää Peripheralportin asetukset: ON, tällöin portin asetukset määräytyvät PLC setup:n mukaisesti (oletus Sysmac Way 9600, 7,E,2) OFF, tällöin on käytössä Toolbus, Baud rate auto detect määrittää RS232C-portin asetukset: ON, tällöin on käytössä Toolbus, Baud rate auto detect OFF, tällöin portin asetukset määräytyvät PLC setup:n mukaisesti PIN 6 tila ohjaa muistipaikkaa A395.12 (asento ON = bitti 1 ) PIN 7 PIN 8 ON-asennossa Easy Backup, eli logiikan tarvittavien tietojen kopiointi muistikortille. Paina muistikorttiaseman virtakytkintä 3s, niin kopiointi käynnistyy. Jos käynnistyksessä PIN7 = ON, niin tiedot kopioituvat kortilta CPU:lle. ei käytössä, aseta asentoon OFF 23
2.2.3 CF-muistikorttiasema CF-muistikorttiasemaan voi asentaa normaalin Compact Flash -muistikortin. Kortille voidaan tallettaa tiedostoja monella tapaa. Kun CX-Programmerilla ladataan ohjelma logiikkaan, on mahdollista valita alaslataukseen myös symbolit sekä ohjelman ja ohjelmarakenteen kommentit. Tällöin valittaessa näiden kohteeksi kortti, muodostuu sinne omat tiedostot, SYMBOLS.SYM, COMMENTS.CMT ja PROGRAMS.IDX. Muistikortille saadaan myös tehtyä käynnistystiedostot (AUTOEXEC.* tai pelkkä REPLACE.OBJ)) tai sinne voidaan helposti kopioida easybackuptoiminolla koko logiikka ohjelmineen ja asetuksineen (BACKUP:*). Logiikkaohjelma voi luoda kortille kansioita ja tiedostoja. Ohjelmasta käsin voidaan tietysti myös lukea tiedostoja. Muistikorttia hallitaan CX-Programmerista avattavalla Memory Card -ohjelmistolla. Muistikortin voi adapterin avulla liittää myös PC-tietokoneen PCMCIA-korttipaikkaan. Kortti on logiikan käytettävissä, kun siihen on kytketty jännite. Tällöin MCPWR-Led loistaa. Jännitesyötön voi katkaista tai kytkeä muistikorttiaseman virtakytkimellä. Kun logiikka käsittelee korttia, loistaa BUSY-Led. Tällöin korttia ei saa poistaa. Kortti poistetaan jännitteettömänä korttiaseman alapuolella olevalla painikkeella. Itse logiikka saa olla jännitteinen korttia asennettaessa tai poistettaessa. Systeemiversion 3.0 ja 4.0 logiikoissa on myös sisäistä kommenttimuistia, johon voi ladata logiikan kommentit ja symbolit. 2.2.4 Sarjaportit Molemmat sarjaportit tukevat RS232-signaalitasoja. Peripheral-porttiin tarvitaan kaapeli CS1W-CNx26 tai normaali SYSMAC-ohjelmointikaapeli varustettuna adapterilla CS1W-CN118 tai huoltokaapeli CQM1-CIF02 varustettuna adapterilla CS1W-CN114. RS232C-porttiin sopii normaali SYSMAC-ohjelmointikaapeli. Peripheral-portin protokollat: Host Link ToolBus ohjelmointiin ja ylläpitoon NT-Link 1:N käyttöpäätteitä varten Serial Gateway RS232C eli Host Link-portin protokollat: Host Link ToolBus ohjelmointiin ja ylläpitoon NT-Link 1:N käyttöpäätteitä varten avoin RS232C-kommunikointi TXD ja RXD-käskyillä logiikkaohjelmasta PC Link Master /Slave CJ1M-logiikoiden keskinäistä linkkikommunikoinita varten Serial Gateway sarjaliikennetoimilohkoja varten Sarjaportit tukevat läpiohjelmointia, esim NS-käyttöpäätteiden sovellutukset voidaan ladata logiikan lävitse. 24
2.3 CJ1M-muistit CJ1M-logiikan muistit jakautuvat seuraaviin osiin: Sovellusohjelmamuisti (User Program). Ohjaus voidaan jaotella useisiin ohjelmiin eli taskeihin. Taskityypit ovat syklinen ja keskeytystaski. Muuttujamuistit (IO Memory) muuttujien tallennusta varten. Muisteja kutsutaan ohjelmista tai myös logiikan ulkopuolelta. Parametrimuistit (PC Setup and other parameters) sisältävät tietoja logiikan asetuksista. Flash-muisti säilyttää tietonsa ilman apusähköä. Sinne siirtyy automaattisesti niin logiikan ohjelmat kuin parametritkin. Logiikan käynnistyksessä nämä tiedot haetaan Flash-muistista RAM-muisteihin. Kommenttimuisti logiikan kommentteja ja symboleja varten Toimilohkot tallettuvat myös Flash muistiin FB Program memory -alueelle CF-muistikortti (Memory Card) voi sisältää tiedosta ym. muisteista sekä mahdollisesti muita tarpeellisia tiedostoja. 25
2.4 Muuttujamuistit SYSMAC -logiikoissa on erilaisia muuttujamuistialueita eri tarkoituksiin. Muistia käsitellään lähinnä bitti- tai sanayksiköissä. 2.4.1 Muistien yksiköt Kun lukuja käsitellään digitaalisissa laitteissa, on kokonaislukutieto esitetty binääri- tai BCDmuodossa. Binäärimuotoisessa datassa kaikki bittikuviot ovat sallittuja ja binääriarvot esitetään tyypillisesti kymmenjärjestelmämuodossa joko etumerkillä tai ilman. Arvojen esittäminen käy myös heksadesimaalisesti. BCD-formaatissa ovat sallittuja vain tietyt bittikuviot. Pienin muistiyksikkö on bitti, bit (b). Se voi saada joko arvon 0 (epätosi) tai 1 (tosi). Kun näistä biteistä muodostetaan 8 bitin ryhmä, niin saadaan tavu, byte (B). Tavu voi saada 2 8 eli 256 eri arvoa Kymmenjärjestelmän mukaisesti esitettynä tavun arvo voi olla 0...255. Kahdesta tavusta muodostuu 16-bittinen kokonaisuus, eli sana, word (W). Sana onkin Sysmac-logiikoissa bitin lisäksi käytetty muistiyksikkö. Sana voi saada 2 16 eli 65 536 eri arvoa. Sanasta voidaan käyttää myös nimitystä kanava Sysmaclogiikoiden yhteydessä. Sanat ja bitit muodostavat osoitteet Sysmac-logiikoissa. Esimerkiksi IOsanaa 00 kokonaisuutena voidaan tarkastella sanana 00. Monesti kuitenkin biteittäin. Tällöin bitit saavat osoitteet 00.00, 00.01,..., 00.15. Bittiosoite muodostuu siis muistialueen lisäksi pisteerottimen vasemmalla puolella olevasta sananumerosta ja oikealla puolella olevasta bittinumerosta. 00.15.14.13.12.11.10.09.08.07.06.05.04.03.02.01.00 MSB LSB Bittiä 15 kutsutaan eniten merkitseväksi bitiksi, MSB ja bittiä 00 vähiten merkitseväksi bitiksi, LSB. Bittejä voidaan ohjata tai monitoroida sanakokonaisuutena. Tällöin on hyvä tietää bittien painoarvot desimaalisesti esitettävässä binääri- ja heksadesimaalilukujärjestelmissä. Desimaalisessa (kymmenjärjestelmä) esitystavassa sanan bitit saavat desimaaliset painoarvot siten, että kantaluku 2 korotetaan aina bitin numeron osoittamaan potenssiin, eli LSB = 2 0 (1) ja MSB =2 15 (32 768). Sanan maksimisarvo etumerkittömänä desimaalisena (UINT) on 65535. Jos käytetään etumerkkiä (INT) on sanan arvohaarukka -32768...+32767. Eniten merkitsevä bitti.15 toimii etumerkkibittinä. Jos se on 1, niin arvo tulkitaan negatiiviseksi, muutoin positiiviseksi. Arvo muodostetaan ns. kahden komplementtina. Kahden komplementti saadaan, kun invertoidaan eli käännetään jokaisen sanan bitti ja lisätään vielä yksi. Heksadesimaalinen esitystapa on suositeltava formaatti, kun sanaan halutaan syöttää nimenomaan tietty bittikuvio, se mitä se desimaaliarvona edustaa on toissijaista. Heksamerkki koostuu aina neljästä bitistä ja voi saada 16 eri arvoa. Arvot ovat 0...9, A...F. Sanaan mahtuu neljä heksamerkkiä eli digittiä. Sanan maksimiarvo heksana on FFFF. Digitin bittien painoarvot vasemmalta oikealle ovat aina 2 3 (8), 2 2 (4), 2 1 (2) ja 2 0 (1). BCD-luku, eli binäärisesti koodattu desimaaliluku, esitetään myös neljällä bitillä. Koska desimaaliluvut ovat 0...9 ja neljällä bitillä voidaan kuitenkin ilmaista 16 eri arvoa, jää jäljelle kuusi 26
kiellettyä bittiyhdistelmää, jotka vastaavat heksalukuja A...F. Eli BCD- ja heksajärjestelmien esitystavat ovat samat, tilojen määrät vain erilaiset. Sanan maksimiarvo BCD-muodossa on 9999. Monesti laskentaa tehtäessä on arvojen käsittely helpointa liukuluvuilla eli reaaliarvoilla. Tällöin on myös desimaaliosat käytössä kokonaisarvon lisäksi. Siis laskentaa voidaan tehdä esim. alle ykkösen arvoilla. REAL-datatyypin pituus on 32 bit, eli arvon esittämiseen tarvitaan tuplasana. Reaaliluku voi tulla käyttöliittymästä, jostain muusta laitteesta tai ohjelmasta vakioarvona. Kaikki IO on CJ1- logiikoissa kokonaislukua käyttävää, yleensä datatyyppiä INT / UNIT / DINT / UDINT. Logiikoissa on omat aritmeettiset käskyt BCD-, binääri- kuin reaaliluvuillekin. CX-Programmerissa vaikuttaa muuttujan symbolin datatyyppi sekä monitoroituva käsky siihen, missä lukujärjestelmässä muuttujan monitorointi tapahtuu 2.5 CJ1M-muuttujamuistialueet Sysmac-logiikoissa on erityyppisiä muistialueita eri käyttötarkoituksia varten. Seuraavaksi CJ1Mlogiikan muistialueista lyhyt yhteenveto. Alue Laajuus Sanat Huomioitavaa CIO-alue, paristovarmentamaton I/O ja apumuistialue 6144 W 0000...6143 Tavalliset tulot ja lähdöt 0000...0900 I/O yhteensä max.640 bit Erikois-IO-yksiköt 2000...2959 CPU-väyläyksiköt 1500...1899 Sisäänrakennettu IO 2960...2961 käytössä 10 tulo- ja 6 lähtöbittiä Apumuistialue käyttämättömät IO-sanat W-alue, apumuistialue 512 W W000...W511 vapaaseen apumuistikäyttöön H-alue, paristovarmennettu apumuistialue 512 W H000...H511 vapaaseen apumuistikäyttöön A-alue, paristovarmennettu erikoisapumuistialue 960W A000...A959 Sanoja A000...A447 voi vain lukea D-alue, paristovarmennettu datamuistialue 32768W D00000...D32767 sanamuotoisen datan käsittelyyn Erikois-IO-yksiköt D20000...D20959 CPU-väyläyksiköt D30000...D30159 T-alue, ajastimet 4096W T0000...T4095 ajastimet eivät ole varmennettuja C-alue, paristovarmennetut laskurit 4096 W C0000...C4095 laskurit ovat nyt omalla alueella IR- eli indeksirekisterit 16 IR00...IR15 absoluuttiosoitteiden taltioiminen epäsuoraa muistinosoitusta varten. DR- eli datarekisterit 16 DR00...DR15 käytetään IR-rekistereiden yhteydessä offsetin aikaansaamiseksi CF-bitit, Condition Flags CF... järjestelmäbittejä, ilmaistaan CX- Programmerissa symbolinimillä TK-bitit 32 bit TK00...TK31 ilmaisevat syklisten taskien tilaa 27
Kuvassa on esitetty vielä yleensä käytettävät muuttujamuistialueet. Palkin leveys on yksi sana eli 16 bittiä. Palkin pituus kuvaa muistialueen laajuutta eli sanojen määrää. Huomaa käytettävät muistialuetunnukset alueen ensimmäisissä ja viimeisissä sanoissa. Kun muistia osoitetaan logiikkaohjelmassa, täytyy siis ensin valita muistialue, sitten sana ja bittiosoituksessa vielä sanan bitti. Kuvan ohjelmassa on käytetty H ja W- apumuistialueiden bittejä sekä D-alueen sanaosoitetta. Myös ajastin esiintyy sekä oloarvonsa että bittinsä kautta. Seuraavaksi hieman IO- ja D-alueiden jaottelusta ja varauksista. 28
2.5.1 CIO-alue Muistialue, joka on varattu tulojen lukua, lähtöjen kirjoitusta ja apu(työ)muistia varten. Vapaita sanoja ja bittejä voi käyttää apumuistina. Alueelle voidaan tehdä sana (es. 000) ja bittiosoituksia (es. 000.15). Tulo- ja lähtösanojen määräytyminen tapahtuu yksiköiden bittimäärän ja sijainnin perusteella. Yksi digitaalinen (binäärinen) tulo/lähtö varaa yhden bitin. Yksi analogitulo tai -lähtö varaa yhden sanan. IO-yksiköt jaotellaan seuraavasti: tavalliset digitaaliset tulo- ja lähtöyksiköt. Yksiköiden pistemäärä on 8...64 pistettä. Yksiköt saavat osoitteet asennuspaikan perusteella. IOtaulumäärittelyjen avulla on mahdollista muuttaa osoitteita. Oletuksena ensimmäisen yksikön osoite lähtee sanasta 0000. erikois-io-yksiköt (Special I/O units). Yksiöiden saamat osoitteet määräytyvät yksikössä olevan Machine Number -kytkimen asennon perusteella. Laitenumero 00 varaa 10 sanaa alkaen sanasta 2000. Lisäksi myös CPU-väyläyksiköt varaavat itselleen CIO-osoitteita. Yksi yksikkö varaa 25 sanaa. Yksikkönumero 00 varaa alueen alkaen sanasta 1500. Kuvassa näkyy CIO-alueen jaottelu. Edellä mainittujen IO-yksiköiden lisäksi on tiettyjä muistiblokkeja varattu CJ1M-CPU21/22/23 sisäänrakennetuille tuloille ja lähdöille, DeviceNet-väylän etä-io-kommunikoineille sekä sarjaliikennelinkille. 2.5.2 D-alue (Data Memory) Datamuistialue on paristovarmennettu vain sanamuotoisen datan käsittelyyn tarkoitettu alue. Aluetta voidaan käyttää sovellusohjelmassa esim. asetusarvojen, matemaattisten toimintojen, pinojen, yms. käsittelyyn sekä datan siirtoon väylissä toimivien logiikoiden välillä. Alueesta on varattu kaksi osaa erikois-io-yksiköiden parametrointeja varten. Mikäli kyseisiä yksiköitä ei ole konfiguraatiossa, niin tällöin näiden normaalisti käyttämät sanat ovat vapaita apumuistikäyttöön. 29
Erikois-IO-yksiköiden parametrit ovat alueella, joka alkaa sanasta D20000. Yksi laitenumero varaa 100 D-sanaa. CPU-väyläyksiköiden parametrit alkavat sanasta D30000. Myös nyt yksi yksikkönumero varaa 100 sanaa. 2.5.3 CPM2-muistialueet Vertailun vuoksi vanhojen koulutuslogiikoiden, eli CPM2A-laitteiden, muistialueet. Huomataan että muistialueet ovat paljon paljon pienempiä. Alue Laajuus Sanat Huomioitavaa IR-alue, paristovarmentamaton I/O ja apumuistialue Tulot 000...009 I/O yhteensä max.120 b Lähdöt 010...019 vapaa I/O toimii apumuistina Apumuistialue 928 b 020...049, 200...227 SR-alue, erikoisapumuistialue, järjestelmäohjaus- ja lippubittejä 192 b 228...255 Järjestelmäbittejä TR-alue, väliaikaisapumuistibitit 8 b Bitit TR0...TR7 Virtapiirin haarautumissa HR-alue, paristovarmennettu apumuistialue 320 b HR00...HR19 Paristovarmennettu AR-alue, paristovarmennettu apumuistialue 384 b AR00...AR23 Järjestelmäbittejä LR-alue, linkkimuistialue 256 b LR00...LR15 Tarkoitettu datan siirtoon kahden PLC:n välillä, myös apumuistina TC-alue, ajastimet ja paristovarmennetut laskurit 256 W TIM000/CNT000... TIM255/CNT255 Älä käytä ohjelmassa samannumeroisia ajastimia ja laskureita, koska näillä on sama muistialue DM-alue, paristovarmennettu datamuistialue Luku/Kirj 2048 W DM0000...DM2047 Vain sanamuotoisen datan käsittelyyn Vain luku 512 W DM6144...DM6655 Lukualueelle ei voi kirjoittaa logiikkaohjelmasta käsin. Sisältää PCsetup-alueen DM6600... DM6655 30
2.6 CJ1M toiminta ja sovellusohjelmamuisti Ennen CS1-logiikoiden markkinoille tulemista olivat SYSMAC-logiikat yksiohjelmaisia laitteita. Nyt CS1 ja CJ1-logiikoissa voidaan ohjaukset jaotella entistä paremmin, koska näiden logiikoiden ohjelmamuisti on jaoteltavissa useisiin ohjelmiin eli taskeihin. Oletuksena käytössä on 32 syklistä taskia (Cyclic Task) ja 256 keskeytystaskia (Interrupt Task). Ohjelmoidut ja suoritukseen pyydetyt sykliset taskit ajetaan peräkkäin nousevassa taskinumerojärjestyksessä. Kun kaikki sykliset taskit on ajettu, päivitetään tulot ja lähdöt eli IO, palvellaan sarjaportteja ja väyläyksiköitä. Tämän jälkeen alkaa uusi sykli eli ohjelmakierto. Useat erikoisyksiköt, liitännät tai tapahtumat voivat synnyttää keskeytyksiä. CJ1M-logiikoissa sallittu keskeytystapahtuma aktivoituessaan käynnistää keskeytystaskin, joka ajetaan välittömästi yhden kerran. Näin saadaan nopea vaste tapahtumalle. Taskien lisääminen ja asettelut tehdään CX-Programmerin projketinhallintaikkunassa. CX- Programmer järjestää taskit aina automaattisesti oikeaan järjestykseen. Jokainen taski eli ohjelma päätetään aina END(001)-käskyllä. Tämä onkin valmiiksi ohjelmoituna uusissa projektin logiikoissa omaan END-nimiseen blokkiinsa. 31
2.6.1 IO-päivitykset Tulojen tilojen tarkastukset ja lähtöjen tilojen kirjoitukset eli IO-päivitykset tehdään normaalisti syklisesti ohjelmakierron lopussa. Tulojen luku voidaan suorittaa lisäksi myös keskeytysperiaatteella (interrupt input refresh) käyttämällä tiettyjä sisäänrakennettuja tuloja keskeytystuloina. Sovellusohjelmassa voidaan määritellä haluttujen tulo- ja lähtösanojen virkistykset käskyn yhteydessä Immediate Refresh-valinnalla tai erikseen IORF(097) -käskyllä. Näiden virkistysten lisäksi tapahtuvat myös sykliset IO-päivitykset. Erikois-IO-yksiköiltä voidaan estää kokonaan syklinen virkistys ja käyttää pelkästään keskeytysohjelmista tapahtuvaa päivitystä. 2.6.2 IO-vasteaika Aika, joka kuluu kun tulobitin tila luetaan muistipaikkaan ja sen ohjaama lähtö vaikuttuu, on IOvasteaika. Tähän aikaan vaikuttavat tulojen asettumisaikavakio, joka oletuksena on 8 ms, tarkastusaika, ohjelmien suoritusaika, transistorilähdön asettumisviive sekä porttien palveluajat. Myös tietysti se, mihin kohtaan IO-päivitystä tulon vaikuttuminen osuu. Digitaalituloilta voidaan poistaa asettumisaikasuodatin kokonaan. Tämä tehdään logiikan asetuksissa eli CX-Programmerin PLC Settings-ikkunassa. 2.7 Logiikan tilat SYSMAC logiikoilla on kolme toimintatilaa: RUN-tilassa suoritetaan sovellusohjelmaa sekä IO-päivitykset MONITOR-tila on kuten RUN-tila, mutta nyt voidaan oheislaitteesta, kuten käsiohjelmointilaite tai CX-PROGRAMMER, käsin suorittaa pakko-ohjauksia ja ajonaikaista ohjelmanmuokkausta eli Online Editointia STOP/PROGRAM-tila, jolloin ohjelmaa ja IO-päivityksiä ei suoriteta. Ohjelmointitila. CX-Programmerin tilariviltä voi tarkastaa CPU:n tilan. RUN-merkkivalo loistaa RUN- ja MONITOR-tiloissa. Jos CPU menee kesken ohjelmansuorituksen virhetilaan, (ERR-merkkivalo loistaa) niin tällöin CPU:n tila pysyy ennallaan, mutta ohjelman suoritus pysähtyy ja lähdöt menevät nollatilaan. Mikäli syntyy hälytys, vaikkapa paristojännitteen alenemasta, alkaa ALMmerkkivalo vilkkua, mutta CPU:n toiminta ei muutu. 2.8 Digitaaliset tulot ja lähdöt 24VDC- tuloihin voidaan kytkeä PNP- tai NPN-tyyppisiä antureita. Tulobitin toisena liittimenä on COM-liitin, joka yleensä on yhteinen useammalle tulobitille. Näin yhden COM-liittimen piiriin voi kytkeä suoraan vain PNP- tai NPN-tyypin antureita. Ylös- tai alasvetovastusten, n 1Kohm, avulla saadaan PNP- tai NPN-tyypin antureita kytkettyä sekaisin saman COM-liittimen piiriin. Digitaali- eli kaksitilaohjauksiin voit käyttää PNP- ja NPN-tyyppisiä sekä relelähtöjä. Lähtöyksiköiden kuormitettavuus on aina syytä tarkastaa huolellisesti. Kuormitettavuus ilmoitetaan lähtöä kohden, joskus COM-liitäntää kohden ja joskus koko yksikköä kohden. 32
2.8.1 Tuloyksikkö CJ1W-ID211 Kuvassa tulopiiri. 16:lla tulolla on yksi yhteinen COM-liitin. Kuvassa tulokytkennät. Jännitelähdekytkennät ovat vaihtoehtoiset, eli NPN tai PNP-tyyppisille anturilähdöille. 33
2.8.2 Lähtöyksikkö CJ1W-OD212 Kuvassa lähtöpiiri. OD212-yksikkö on PNP-tyyppinen eli syöttää virtaa kuormalle lähtöliittimestä. Kuvassa lähtökytkennät. Ulkoinen +24VDC kytketään COM-liittimeen ja nollataso 0V-liittimeen. Yhden lähtötransistorin kuormitettavuus on 0,5A ja COM-liittimen 5,0A. Lähdöt ovat elektronisesti ylikuormitussuojatut. 34
3 SYSMAC-LOGIIKOIDEN IO-OSOITTEET CPM ja CQM1H-logiikoissa IO-yksiköiden osoitteet määräytyvät asennuspaikan perusteella. Tulot ja lähdöt ovat omissa osissaan IR-muistialueella, joten tulot ja lähdöt eivät vaikuta toistensa osoitteisiin. C200H-logiikoissa osoitteiden määräytyminen on mutkikkaampaa. CS1- ja CJ1- laitteissa osoitteet määräytyvät taas hieman eri tavoin kuin C200H-logiikoissa. 3.1 CPM-logiikat Digitaalisten IO-pisteiden max. lukumäärä on CPM1A 100 CPM2A 120 CPM2C 192 (S-mallit 106+256) Tulot sanoissa IR00 IR09, tulosanoista hyödynnetään max. 12 bit Lähdöt sanoissa IR10 IR19, lähtösanoista hyödynnetään max. 8 bit CPM2C-S-mallien Compobus/S-osoitteet tulot IR20 IR27 lähdöt IR30 IR37 Laajennusyksiköiden osoitteet alkavat aina uudesta sanasta. 3.2 CQM1H-logiikat Digitaalisten IO-pisteiden max. lukumäärä on CQM1-CPU11/21E 128 max 7 lisäyksikköä CQM1-CPU4x-EV1 256 max 11 lisäyksikköä CQM1H-CPUxx 512 max 11 lisäyksikköä (tai 5+11 yksikköä) Tulot sanoissa IR00 IR15 Lähdöt sanoissa IR100 IR115 Laajennusyksiköiden osoitteet alkavat aina uudesta sanasta I/O-hajautus eli kenttäväylämasterit Compobus/S AS Interface 3.3 C200HX-logiikat Digitaalisten IO-pisteiden max. lukumäärä on C200Hx-CPU32 CPU44 880 (CPU-räkki + 2 laajennusräkkiä) C200Hx-CPU53 CPU85 1184 (CPU-räkki + 3 laajennusräkkiä) Tulot ja lähdöt samoilla alueilla Kolme eri IO-yksikköryhmää tavalliset digitaaliset IO-yksiköt, max 16 pistettä Group2 digitaaliset IO-yksiköt, 32 tai 64 pistettä Special IO-yksiköt digitaalinen IO analoginen IO 35
pikalaskuri, pulssiohjaus, liikkeenohjaus, ym kenttäväyläyksiköt, DeviceNet, Profibus-DP, Compobus/S, Sysmac Bus Tavalliset digitaaliset IO-yksiköt, max 16 pistettä osoitteet määräytyvät räkkipaikan mukaan Group2 digitaaliset IO-yksiköt, 32 tai 64 pistettä osoitteet määräytyvät IO Unit nro -kytkimen asennon perusteella (0 F) Special IO-yksiköt osoitteet määräytyvät Machine nro -kytkimen asennon perusteella (0 F) IR-alueelta varataan 10 sanaa/laitenumero yleensä myös yksikkö tarvitsee parametreja toimintojen määrittelyjä varten DM-alueelta 100 sanaa/laitenumero alkaen numerolla 0 sanasta DM1000 36
3.4 CS1-logiikat Digitaalisten IO-pisteiden max. lukumäärä on CS1G-CPU42-43 960 (CPU-räkki + 2 laajennusräkkiä) CS1G-CPU44 1280 (CPU-räkki + 3 laajennusräkkiä) CS1G-CPU45, CS1H-CPUxx 5120 (CPU-räkki + 7 laajennusräkkiä) Tulot ja lähdöt samoilla alueilla Kaksi eri IO-yksikköryhmää digitaaliset IO-yksiköt, max 96 pistettä (myös C200H-Group2-yksiköt) Special IO-yksiköt, kuten analoginen IO pikalaskuri, pulssiohjaus, liikkeenohjaus, ym kenttäväyläyksiköt, Profibus-DP-slave, Compobus/S-master CPU-väyläyksiköt väyläliityntäyksiköt, Ethernet, Controller Link, DeviceNet, Profibus-DP-master, RSsarjaliikenneyksikkö CS1-logiikat pystyvät käsittelemään IO- ja väyläyksiköitä vasta, kun IO-taulu on määritelty. IOtaulu tallettuu logiikan parametrimuistiin. IO-taulun tulee vastata aktuellia räkeistä löytyvää yksikkökonfiguraatiota, muutoin logiikka on virhe- tai hälytystilassa. Yleensä IO-taulun luonti riittää. Tällöin tarvittavien yksiköiden on oltava paikoillaan ja CPU:n ollessa ohjelmointitilassa annetaan IO-taulueditorista käsky Create eli luo. Yksikkökonfiguraatio tulee editoriin näkyviin osoitteineen. Tavalliset digitaaliset IO-yksiköt, max 96 pistettä osoitteet määräytyvät edelle (lue vasemmalle puolelle) asennettujen tavallisten yksiköiden mukaan. CPU-räkin osoitteet alkavat normaalisti sanasta CIO00. Yksikön vasemmalle puolen jätetyt tyhjät korttipaikat eivät vaikuta osoitteisiin, ellei IO-taulua ole kirjoitettu ja tyhjäksi jätettäville paikoille ole tehty varauksia (Dummy Unit). Laajennusräkkien osoitteet jatkavat normaalisti siitä, mihin edellisessä jäätiin. Esimerkki seuraavalla sivulla 37
Special IO-yksiköt osoitteet määräytyvät Machine nro -kytkimen asennon perusteella (00 95) CIO-alueelta varataan 10 sanaa/laitenumero alkaen sanasta CIO2000 yleensä myös yksikkö tarvitsee parametreja toimintojen määrittelyjä varten D-alueelta 100 sanaa/laitenumero alkaen numerolla 0 sanasta D20000 38
CPU-väyläyksiköt osoitteet määräytyvät Unit nr -kytkimen asennon perusteella (0 F) CIO-alueelta varataan 25 sanaa/laitenumero alkaen sanasta CIO1500 toimintojen määrittelyjä tai tilatietoja varten varataa D-alueelta 100 sanaa/laitenumero alkaen numerolla 0 sanasta D30000 3.5 CJ1-logiikat Digitaalisten IO-pisteiden max. lukumäärä on CJ1G-CPU42-43 960 (CPU-räkki + 2 laajennusräkkiä) CS1G-CPU44-45 1280 (CPU-räkki + 3 laajennusräkkiä) CS1H-CPU65-66 2560 (CPU-räkki + 3 laajennusräkkiä) CJ1M-CPU11/21 160 (CPU-räkki) CJ1M-CPU12/22 320 (CPU-räkki) CJ1M-CPU13/23 640 (CPU-räkki+ 1 laajennusräkki) Osoitteet määräytyvät kuten CS1-laitteissakin. IO-taulun määrittely ei ole pakollista, vaan CJ1- logiikat osaavat ottaa yksiköt haltuunsa ilman sitä. Taulun voi toki luoda tai kirjoittaa kuten CS1- logiikoille. Koulutuslogiikoissa ensimmäinen yksikkö on integroitu Ethernet-yksikkö (CPU Bus Unit 0), toinen yksikkö on 16-pisteinen digitaalinen tuloyksikkö CJ1W-ID211 ja se varaa sanan CIO 00, eli bitit 00..00...00.15. Kolmas yksikkö on digitaalinen lähtöyksikkö CJ1W-OD212 ja se varaa seuraavan vapaan sanan CIO 01, eli bitit 01.00...01.15. 39
3.5 CP1H-logiikat Digitaalisten IO-pisteiden max. lukumäärä on 320 (40-pisteiset CPU:t) Tulot sanoissa CIO00 CIO16, tulosanoista hyödynnetään max. 12 bit Lähdöt sanoissa CIO100 CIO116, lähtösanoista hyödynnetään max. 8 bit CP1W-laajennusyksiköiden maksimimäärä on 7. Sisäänrakennetut analogitulot CIO200-203 Sisäänrakennetut analogilähdöt CIO210-211 CJ1-yksiköiden (max 2 kpl) osoitteet varataan kuten CJ1-logiikoissakin Laajennusyksiköiden osoitteet alkavat aina uudesta sanasta. 3.6 CP1L-logiikat Digitaalisten IO-pisteiden max. lukumäärä on 160 (40-pisteiset CPU:t) Tulot sanoissa CIO00 CIO09, tulosanoista hyödynnetään max. 12 bit Lähdöt sanoissa CIO100 CIO109, lähtösanoista hyödynnetään max. 8 bit CP1W-laajennusyksiköiden maksimimäärä on 3 (M-CPU:t) tai 1 (L/J-CPU:t). Laajennusyksiköiden osoitteet alkavat aina uudesta sanasta. 40
4 CX-ONE CX-Programmer on ohjelmointiympäristö OMRONin ohjelmoitaville Sysmac-logiikoille. CX- Programmer 8.x tulee ainoastaan CX-One 3.10-ohjelmiston mukana, sitä ei voi siis hankkia omana tuotteenaan. Nettipäivityksien avulla CX-Programmer voidaan päivittää (08/2009) versioon 8.2. CX-One-ohjelmiston tuotekoodit: CX-One 3.0 1 (CD, 1lisenssi): CXONE-AL01C-EV3-SP CX-One 3.0 päivitys (CD, 1 lisenssi): CXONE-AL01C-EV3-UPSP Myös useamman käyttäjän (3, 10, jne...) paketteja on saatavissa. CX-One-ohjelmisto tarjoaa mahdollisuuden hyödyntää Smart Platform konseptia. Ideana konseptissa on: Yksi liityntä pääsy saman liitännän kautta konseptin laitteisiin Yksi ohjelmisto CX-One, joka sisältää useita ohjelmistoja konseptin laitteiden määrittelyyn Yksi minuutti ohjelmointia ja käyttöliittymien luomista varten on käytettävissä valmiit toimilohkot (funtion Blocks) sekä graafiset toiminnalliset kirjastot (Smart Active Parts). Kuvan mukaisesti CX-One-ohjelmistolla voidaan yhdestä pisteestä käsin hallita koko laitetta Smart Platform konseptin tuotteiden, CS1/CJ1-logiikat, NS-päätteet, Devicenet-IO, taajuusmuuttajat, servot, anturit, lämpötilansäätimet, kautta. 41
CX-One 3.10 ohjelmisto sisältää seuraavat ohjelmointi/määrittely-ympäristöt: CX-Designer NS-päätesovelluksiin CX-Drive taajuusmuuttajien ja servojen parametrointiin ja monitorointiin CX-Integrator väylien määrittelyyn. Toimii myös laukaisualustana muihin sovelluksiin CX-Programmer Sysmac-logiikoiden ohjelmointiin ja ylläpitoon CX-Motion liikkeenohjausyksiköiden (MC) ohjelmointiin ja parametrointiin CX-Process Tool prosessinsäätöyksiköiden ohjelmointiin ja määrittelyyn CX-Protocol sarjaliikenneyksiköiden (SCB/SCU) protokollamakrojen luontiin CX-Simulator logiikkaohjelmien testaamiseen PC:ssä CX-Thermo lämpötilansäätimien parametrointiin ja monitorointiin Face Plate lisäohjelma NS-päätteille Switchbox.. lisäohjelma logiikan monitorointiin Trajexia Tools ohjelma Trajexia-liikeohjainten ohjelmointiin (vanha ohjelmisto, jäänne) CX-Configurator-FDT Cx1-PRM21- masteryksiköiden ja CJ1-PNT21 konfigurointiin ja monitorointiin CX-Motion Pro Trajexia ja CJ1W-MCH72 liikeohjainten ohjelmointiin ja monitorointiin CX-Motion-MCH Mechatrolink II CJ1W-MCH71-masteryksiköiden määrittelyyn CX-Motion-NCF Mechatrolink II CJ1W-NCF-masteryksiköiden määrittelyyn CX-One Auto update päivityksien noutamiseen webistä Näitä sovelluksia voidaan käynnistää täältä käynnistyvalikon kautta, mutta myös toisista ohjelmista, kuten CX-Integrator, IO Table Editor, jne. Tässä oppaassa keskitytään pelkästään CX-Programmer-ympäristöön. 42
5 CX-PROGRAMMER CX-Programmerilla voidaan ohjelmoida ja ylläpitää laajaa joukkoa Sysmac-logiikoita. Joitakin vanhoja logiikoita 80-90-lukujen taitteesta ei tosin välttämättä löydy laitelistasta. Tällöin on niiden ylläpitoon käytettävä esim. Syswin-ohjelmistoa. CS1-, CJ1- ja CP1-logiikoille CX-Programmer on ainoa ohjelmointiympäristö. CX-Programmer 1.0 julkaistiin vuonna 1999 ja siitä lähtien ohjelmisto on kehittynyt oivaksi työvälineeksi. Tuorein versio 8.2 saadaan nettipäivityksien avulla CX-One 3.0 pakettiin. CX-Programmer -ohjelmoinnissa sovellusohjelmaa luodaan yleensä tikapuukaavio- eli laddermuodossa (LD). Relekaaviomuotoista ohjelmaa voidaan tehdä tai tarkastella myös käskylistamuodossa. Nykyisin voidaan myös soveltaa toimilohkoja. Näitä voidaan ohjelmoida relekaavion lisäksi strukturoitu teksti muodossa. Ohjelman ohjelmointimuodoksi voidaan valita relekaavion sijasta myös strukturoitu teksti (ST) tai sekvenssivuokaavio (SFC). CX-Programmer -projekti voi sisältää useita logiikoita. Logiikka sisältää varsinaisen sovellusohjelman lisäksi myös logiikan määrittelyt, muuttujasymbolit (global ja local symbols), ohjelman eri osien kommentit (comments) sekä logiikan asettelut (PLC settings). Näkymät ja käytettävissä olevat editorit riippuvat valitusta logiikkatyypistä. Eri editorien tietoja voidaan tallentaa myös omiksi tiedostoiksi. CX-Programmer on kopiosuojattu ohjelmisto. Aktivointi tehdään syöttämällä lisenssinumero, joko asennusvaiheessa tai myöhemmin CX-Programmer:n Help-valikon About CX-Programmer-riviltä avautuvan ikkunan License-painikkeen takaa. CX-Programmer käynnistetään valikosta Start/Programs/Omron/Cx-One/CX-Programmer/CX- Programmer. 43
Ohjelmisto voidaan käynnistää myös CX-Integrator väylämäärittely-ympäristöstä väyläasetteluista perityillä tai uusilla asetuksilla. Kuvassa näkymä CX-.Integratorissa olevasta Ethernet-väylästä, jossa on CJ1-logiikka. Tämän pikavalikosta voidaan siis käynnistää CX-Programmer. 44
5.1 Ohjelmarakenne CJ1M- ohjelmoitavien logiikoiden ohjelmamuistialue on jaoteltu useisiin ohjelmiin eli taskeihin. Ohjelmoitsija voi tehdä ohjauksen pelkästään yhteen ohjelmaan tai tarvittaessa useisiin. Ohjauksen jaottelu ohjelmiin riippuu projektista sekä tekijästä tai tekijöistä. Relekaaviomuotoisesti ohjelmoitaessa voidaan jakaa ohjelma eri blokkeihin (sections) ohjelmarakenteen selkeyttämiseksi. Blokeilla ei ole vaikutusta ohjauksen toimintaan logiikassa. Jokainen blokki koostuu virtapiireistä (rungs). Voitaneen sanoa, että ohjelmointiympäristössä logiikkaohjaus koostuu virtapiireistä. Virtapiiri muodostaa yleensä yhden tai useamman muistipaikan ohjauksen ehtoihin perustuen. Muistipaikkoja käsittelevä virtapiiri alkaa aina LD- tai LD NOT-käskyllä ja päättyy OUT-, OUT NOT- tai funktiokäskyyn. Poikkeuksen muodostavat virtapiirit, joissa on vain yksi ohjelman kontrollikäsky, kuten esim. lopetuskäsky END(001) tai aliohjelmasta paluu RET(093). CX-Programmer-sovellus voidaan esittää seuraavasti blokkien ja virtapiirien avulla. PLC PROGRAMS PROGRAM 0 SECTION 1 RUNG 0 RUNG 1 PROGRAM 1 SECTION 1 RUNG 0 RUNG 1 PROGRAM 2 SECTION 1 RUNG 0 RUNG 1 SECTION 2 RUNG 0 RUNG 1 SECTION 2 RUNG 0 RUNG 1 SECTION 2 RUNG 0 RUNG 1 SECTION 3 RUNG 0 RUNG 1 SECTION 3 RUNG 0 RUNG 1 SECTION 3 RUNG 0 RUNG 1 Ohjausta suoritetaan ohjelmien numerojärjestyksessä. Ohjelman sisällä ohjaus suoritetaan blokkien mukaisessa järjestyksessä ylhtäältä alas. Blokin sisällä taas virtapiirien mukaisessa järjestyksessä ylhäältä alas. Ohjelman päättävä END-käsky sijoitetaan yleensä omaan blokkiinsa ja se on sovelluksen viimeinen blokki. CX-Programmerissa blokkien ja virtapiirien järjestystä voidaan muuttaa esim. hiirellä raahaamalla tai blokin pikavalikosta Move...-toiminnoilla. 45
5.2 Uuden projektin aloitus Uusi projekti näyttää aluksi tältä, tyhjältä. Ensimmäinen vaihe uuden projektin määrittelyissä on tehdä uudelle logiikalle asetukset. Avaa File-valikosta rivi New tai käytä vastaavaa pikapainiketta saadaksesi uusi projekti. Avautuneessa Change PLC -ikkunassa määritetään logiikalle nimi (Device Name) sekä oikea logiikkatyyppi (Device Type). Nimissä ei saa käyttää erikoismerkkejä, poislukien alaviiva (_), tai välilyöntejä. Nimi ei saa myöskään alkaa numerolla. CPU-tiedot Settings-painikkeen takaa avautuvasta ikkunasta asetetaan myös laitetta vastaaviksi. 46
Lisäksi valitaan haluttu kommunikointitapa logiikkaan CX-Programmerista Network Type kohdassa. Tarkemmat määrittelyt taas Settings-painikkeen takaa. Valitaan yhteystavaksi CJ1M-logiikkaan Toolbus- sarjaliikennekommunikointi. Tämä on nopeampi vaihtoehto, kuin toinen valittavissa oleva RS-kommunikointitapa, Sysmac Way. Network Settings ikkunan Driver-lehdellä nähdään sarjaliikenneasettelut, jotka ovat kiinteät nopeutta lukuunottamatta Toolbus-kommunikoinnissa. Connection-kohdassa valitaan käytettävä tietokoneen sarjaportti ja sille haluttu nopeus, 9600, 19200, 38400 tai 115000 bittiä sekunnissa. Baud Rate Auto-Detect kannattaa pitää päällä, kunhan huolehditaan, että käytettävä logiikan CPU:n sarjaportti vastaavassa tilassa. Tämähän tehdään DIP-kytkimillä 4 ja 5. DIP4=OFF, niin Peripheralportti on Baud Rate Auto-Detect-tilassa. RS232C-portti saadaan tähän tilaan kääntämällä DIP5 ONasentoon. Tällöin logiikan portti mukautuu CX-Programmerissa valittuun nopeuteen. Kuitataan tehdyt asetukset OK-painikkeella. Asetuksia voi muuttaa aina tarvittaessa uudestaan. 5.3 Projekti- ja logiikkanäkymä Uuden projektin aloitusnäkymä logiikan määrittelyjen jälkeen voi olla seuraava. Huomaa että käynnistysnäkymään voi vaikuttaa CX-P:n asetuksilla. Vasemmassa reunassa näkyy avoinna oleva Projektinhallintaikkuna (Workspace), jota kontrolloidaan näppäinyhdistelmällä Alt+1. Oikeassa reunassa on Koulutus.NewProgram.Section1-niminen relekaaviomuotoinen ohjelmablokki-ikkuna (Diagram). 47
Valikot Pikapainikkeet Kohdistin (Selection) Projektinhallinta (Project Workspace) Virtapiiripalkki (Rung) Ohjelmaikkuna(t) (Sections) Symbolirivi Tilarivi Projektinhallintaikkunassa ylin taso on projekti, seuraava logiikat. Logiikan alla oleva lista riippuu valitusta logiikkatyypistä ja se pitää sisällään ohjelmia sekä editoreita. Nämä avataan joko hiiren tuplaklikillä tai hiiren oikealla painikkeella avattavan pikavalikon riveiltä. Logiikka-rivillä näkyy logiikan tyyppi sekä yhteystila. Offline kuvaa sitä, että nyt ohjelmisto ei kommunikoi logiikan kanssa. Jos yhteys taas on muodostettu, niin tällöin logiikan perässä näkyy CPU:n toimintamoodi Run, Monitor tai Stop/Program. Logiikan alla oleva Symbols on logiikkakohtainen symbolieditori. Näitä symboleja kutsutaan nimellä Global Symbols. Nämä symbolit käytössä kaikissa logiikan ohjelmissa. IO Table antaa mahdollisuuden määritellä ja tarkastella logiikan IO -taulua. IO-taulua ei ole kaikissa logiikoissa. CJ1-logiikoissa se on, mutta sitä ei ole aina pakko käsitellä. IO-taulu on osa CPU:n parametrimuistia ja sinne määritellään jollakin tavalla yksiköiden tietoja. Settings-riviltä päästään tarkastelemaan ja muokkaamaan logiikan parametreja PLC Setup. Täällä määritellään mm. logiikan käynnistystila, sarjaliikenneporttien asettelut, keskeytykset ja pikalaskurin toiminta. Memory avaa PLC Memory -ohjelmiston, johon voi availla muuttujamuisti-ikkunoita kokonaisten muistialueiden lukua, kirjoitusta tai monitorointia varten. 48
Ohjelmat nähdään kohdassa Programs. CS1/CJ1-logiikoissa voi olla jopa 288 ohjelmaa eli taskia. Jokainen ohjelma päättyy END-käskyyn. Jokaisella ohjelmalla on omat, lokaalit, symbolit (Local Symbols). Nämä symbolit ovat käytössä vain kyseisessä ohjelmassa. Ohjauksen hierarkisuuden ja monitoroinnin helpottamiseksi ohjelma jaotellaan CX-Programmerissa blokkeihin eli sektioihin. END-käsky sisältävä END-blokki onkin jo valmiina. Ohjelmablokki-ikkunoita voi olla useita avoinna. Oletuksena avointen ikkunoiden enimmäismäärä on 10, mutta sitä voidaan muuttaa. Avoimia ohjelmablokki-ikkunoita voidaan aktivoida ja järjestellä Window-valikosta. Alimpana ikkunassa nähdään logiikalle valitut ja tehdyt toimilohkot. Valittuja toimilohkoja voidaan sitten kutsua logiikkaohjelmasta käsin. Ohjelmointi tapahtuu ohjelmablokki-ikkunoissa. Niitä avataan mm. tuplaklikillä projektinhallintaikkunasta. Koska perusajatuksena voidaan pitää sitä, että kaikki ohjelmissa käytettävät muuttujat (bitit, sanat, tuplasanat, ajastimet, laskurit, jne.) nimetään, niin tutustutaan vielä ennen ohjelmointia symbolilistoihin. 5.4 Symbolilista ja symbolointi Tämä lista voidaan tehdä etukäteen ennen varsinaista ohjelmointia, ohjelmoinnin aikana tai jälkikäteen. Osoitteille, niin bitti- kuin sanamuotoiset, voidaan antaa symboli sekä kommentti. Näiden tehtävänä on antaa osoitteille tarkoitus ohjelman tarkastelijaa varten. Myös symbolin datatyyppi on määritettävä. Ohjelmoitsija itse päättää sen, käyttääkö hän globaalia vai lokaalia listaa. Molempien listojen käsittely on samanlaista. Vain globaalit symbolit voidaan linkittää muihin sovelluksiin, mutta molempia listoja voi kopioida leikepöydälle taulukkomuotoisena. Mikäli symboli halutaan vaihtaa toiseen listaan, on se tehtävä leikepöydän kautta. Ensin valitaan ja leikataan symboli lähdelistasta, aktivoidaan kohdelista ja liitetään leikattu symboli sinne. Symbolointi symbolieditorissa tapahtuu seuraavasti. 1. Avataan esim. Globaalien symbolien editori tuplaklikillä. Kuvassa näkyy CX-Programmerissa valmiiksi logiikalle määriteltyjä järjestelmäsymboleita, joiden nimi alkaa aina P_xxx. Näitä symboleja ei voi tuhota eikä muokata. Anna editorin päällä hiiren oikea klikki ja valitse pikavalikosta Insert Symbol lisätäksesi uuden symbolin. Edit...-riviltä päästään muokkaamaan jo luotuja symboleita. 49
2. New Symbol -ikkunassa määritellään symboli. Name-kentässä annetaan symbolin nimi. Nimi ei saa alkaa numerolla eikä se saa sisältää erikoismerkkejä eikä välilyöntejä. Myöskään viittausta osoitteeseen ei salllita, es. C1, H1, jne. Address or Value -kentässä annetaan osoite (tai vakio). Comments-kenttään kirjoitetaan symbolin kommentti. Globaalit symbolit voidaan linkittää CX-Server -tiedostoon. Näin kannattaa tehdä, mikäli jossain toisessa CX-Server-kommunikointiohjelmistoa käyttävässä sovelluksessa voidaan käyttää näitä. Kuvassa on tehty globaali muuttuja Käy_komento, jonka osoite on 0.00. Myös kommenttia on kirjoitettu. Kommentti on muodoltaan vapaata tekstiä. BOOL- eli bittityyppinen osoite kannattaa antaa pisteellä varustettuna. Piste toimii sanan ja bitin erottimena ja selventää osoitetta. Tärkeä vaihe sanaosoitteiden symboloinnissa on symbolin datatyypin valinta. Symbolien datatyyppi määrittää sen, miten me näemme arvon monitoroitaessa. Monitorointi voidaan kyllä myös pakoittaa joko heksa-, etumerkitön kymmenluku- tai etumerkillinen kymmenluku muotoon. Datatyypin tulisi olla myös hyväksyttävissä kyseistä muuttujaa käyttäville käskyille. Mikäli käsky ei hyväksy muuttujalle määriteltyä datatyyppiä, saadaan ohjelman käännöksessä siitä varoitus. Tämä ei kuitenkaan estä käskyn suorittumista. Jos muuttuja jätetään symboloimatta, niin tällöin monitoroitaessa määräytyy muuttujan formaatti käskyn mukaan. CX-Programmerhan opastaa meitä käskyjä ohjelmoitaessa käyttämään käskylle määriteltyä datatyyppiä. Advanced Settings napin kautta voidaan määritellä taulukkomuuttuja ja sille pituus. Alkiota kutsutaan esim. Muuttuja[0]. 5.4.1 Symbolin datatyypit: 50
BOOL Bittimuuttuja CHANNEL Yleisluontoinen 16-bittinen arvo. Monitoroituu normaalisti heksadesimaalisena välillä 0...FFFF. DINT 32-bittinen, eli tuplasana, etumerkillinen desimaaliarvo. Monitoroituu desimaalisena välillä -2147483648...+ 2147483647. Käytetään 32-bittisille arvoille, joihin vaikutetaan binäärisillä käskyillä ja arvo voi mennä alle nollan. INT 16-bittinen etumerkillinen desimaaliarvo. Monitoroituu desimaalisena välillä - 32768...+ 32767. Käytetään 16-bittisille arvoille, joihin vaikutetaan binäärisillä käskyillä ja arvo voi mennä alle nollan. LINT LREAL 64-bittinen, eli pitkäsana, etumerkillinen desimaaliarvo. Esimerkiksi tuplasanan kertolaskun tulos. Monitoroituu desimaalisena välillä -9223372036854775808...+ 9223372036854775807. Käytetään 64-bittisille arvoille, joihin vaikutetaan binäärisillä käskyillä ja arvo voi mennä alle nollan. Pitkä IEE-formaatin mukainen liukuluku. NUMBER Vakioarvon, ei osoitteen, symbolin tyyppi. Myös ajastimen tai laskurin numero. Yleensä vakion formaatiksi oletetaan desimaali. Tunnuksella # vakio tunnistetaan heksadesimaaliksi. Jos vakio annetaan BCD-käskyn yhteydessä, arvoa käsitellään heksadesimaalisena (nyt tietysti numeron arvo vain välillä 0...9) REAL UDINT IEE-formaatin mukainen 32-bittinen liukuluku. Arvo voi olla välillä -3.40e+38...- 1.17e-38, 0, +1.17e-38...+3.40e+38. Monitoroituu pilkullisena lukuna. 32-bittinen, eli tuplasana, etumerkitön desimaaliarvo. Monitoroituu desimaalisena välillä 0... 4294967295. Käytetään 32-bittisille arvoille, joihin vaikutetaan binäärisillä käskyillä ja arvo pysyy positiivisena. UDINT_BCD 32-bittinen, eli tuplasana, etumerkitön BCD-arvo. Monitoroituu välillä 0... 99999999. Käytetään 32-bittisille arvoille, joihin vaikutetaan BCD-käskyillä. Monitoroituu BCD-lukuna. UINT 16-bittinen etumerkitön desimaaliarvo. Monitoroituu desimaalisena välillä 0... 65535. Käytetään 16-bittisille arvoille, joihin vaikutetaan binäärisillä käskyillä ja arvo pysyy positiivisena. UINT_BCD 16-bittinen etumerkitön BCD-arvo. Monitoroituu välillä 0... 9999. Käytetään 16- bittisille arvoille, joihin vaikutetaan BCD-käskyillä. Monitoroituu BCD-lukuna. ULINT 64-bittinen etumerkitön desimaaliarvo. Monitoroituu desimaalisena välillä 0... 18446744073709551615. Käytetään 64-bittisille arvoille, joihin vaikutetaan binäärisillä käskyillä ja arvo pysyy positiivisena. ULINT_BCD 64-bittinen etumerkitön BCD-arvo. Monitoroituu välillä 0... 9999999999999999. Käytetään 64-bittisille arvoille, joihin vaikutetaan BCD-käskyillä. Version 5.0 myötä on tullut lisää IEC-dataformaatteja 51
WORD DWORD LWORD 16-bittinen arvo. Monitoroituu välillä 0... FFFF heksalukuna. 32-bittinen arvo. Monitoroituu välillä 0... FFFFFFFF heksalukuna. 64-bittinen arvo. Monitoroituu välillä 0... FFFFFFFFFFFFFFFF heksalukuna. Version 7.2 myötä on tullut vielä yksi tyyppi lisää, eli STRING eli merkkijono, jonka pituus määritetään symboloinnin yhteydessä. 5.5 Työpöytä ja ikkunat Valikosta View/Windows voit avata ja sulkea perusikkunoita näytölle. Sieltä näet myös näppäinyhdistelmät ikkunoiden kontrolloimiseksi. Pikapainikkeista sekä työkalupainikkeista avautuvat opastekuplat, kun viet hiiren nuolen painikkeen päälle. Ohjelmistossa on helppo operoida pikavalikkotekniikalla. Eli viedään kohdistin haluttuun kohtaan ikkunassa, aktivoidaan hiiren oikea painike ja valitaan avautuneesta pikavalikosta haluttu rivi. Pikavalikoista oppii myös pikapainikkeiden symbolit. Mikäli haluat työskennellä nopeasti näppäimistöä käyttäen, niin CX-programmer tarjoaa tähän hienot mahdollisuudet. Valtaosalla toiminnoista on valmiiksi näppäinyhdistelmät. Jos nämä eivät tyydytä tai riitä, voit tehdä omia Short Cut -toimintoja lisää. Valikosta Tool/Keyboard Mapping pääsee tarkastelemaan ja lisäilemään näppäimiä. Projektinhallintaikkunan näppäinyhdistelmähän oli Alt+1 Tulostusikkunaan (Alt+2) tulostuu tietoja eri välilehdille käännöksistä, käännösvirheistä ja - varoituksista, muutoksista, raporteista ja latauksista. Tuplaklikillä ilmentymärivistä pääsee avaamaan näytölle kyseisen ilmentymän ohjelmassa. Tulostusikkuna avautuu automaattisesti tapahtumista, jotka kirjoittavat tietoa ikkunaan. Osoiteviiteikkunaan (Alt+4) listataan näkyviin ohjelmasta valitun muuttujan esiintymät. Listasta pääsee siirtymään helposti toiseen esiintymään. Erittäin hyvä keino liikkua ohjelmissa. Monitorointi-ikkunassa (Alt+3) voidaan monitoroida muuttujia tai syöttää niille uusia arvoja. Muuttujia lisätään ikkunaan tuplaklikillä tyhjään riviin tai Enter-näppäimellä osoitteiden tai symbolien perusteella tai sitten raahaamalla hiirellä muuttuja ohjelmasta tai symbolilistasta. Ikkunassa on valmiiksi kolme välilehteä. Välilehtiä voi lisätä ja nimetä tarvittaessa. Lisäksi on toimilohkokutsun monitorointi-ikkuna (Alt+5). Tämän avulla voidaan vaihtaa monitoroiva näyttö toimilohkon sisälle kutsun parametreihin perustuen. 52
Myös pikapainikkeilla voidaan hallita ikkunoita. Painikkeet vasemmalta oikealla: Projektinhallinta, Tulostus-, Monitorointi-, Osoiteviite- ja Toimilohkomonitorointi-ikkuna Valikot Pikapainikkeet Projektinhallinta (Project Worksp) Alt+1 Kohdistin Virtapiiripalkki (Rung) Ohjelmaikkuna(t) (Programs) Muut ikkunat, kuten symbolilistat, ristiviittausraportit Tulostusikkuna (Output) Alt+2 Monitorointiikkuna (Watch) Alt+3 Tilarivi Osoiteviiteikkuna (Address Refer) Alt+4 5.6 Ohjelmointi Kappaleessa tarkastellaan relekaavio-ohjelmointiin liittyvien tasojen, eli taskien blokkien ja virtapiirien, käsittelyä. 5.6.1 Ohjelmien eli taskien lisääminen ja muokkaaminen Taskeja käsitellään projektinhallintaikkunassa. Uusia taskeja lisätään pikapainikkeesta tai ohjelman pikavalikosta riviltä Insert Program. Taskille pitää valita ohjelmointimuoto (LD, ST tai SFC), jolla se ohjelmoidaan.uusi taski listautuu aina aluksi viimeiseksi. 53
Lisätty ohjelma on määrittelemätön. Avataan taskin pikavalikko ja valitaan Properties. Nyt päästään määrittämään ohjelman nimi, tyyppi ja numero, ohjelmatasoinen salasanasuojaus sekä kommenttia. Ohjelma listautuu aina taskin tyypin ja numeron perusteella määräytyvään paikkaan. Ylimmäksi listautuvat sykliset ohjelmat ja alimmaksi keskeytysohjelmat nousevassa taskin numerojärjestyksessä. Tämä Properties-ikkuna on editori, jolla kommentoidaan koko projekti lukuunottamatta logiikkaa ja ohjelman symboleita. 5.6.2 Blokkien lisääminen ja muokkaaminen Sektioita eli blokkeja käsitellään projektinhallintaikkunassa. Blokin ohjelmaikkuna avataan näkyviin tuplaklikillä blokki-ikoniin. Uusia blokkeja lisätään pikapainikkeesta tai ohjelman pikavalikosta riviltä Insert Section. Uusin blokki listautuu toiseksi viimeiseksi END-blokin yläpuolelle. Blokkeja järjestellään hiirellä raahaamalla tai blokin pikavalikosta riveillä Move Up/ Move Down. Blokit suoritetaan logiikassa tässä näkyvässä järjestyksessä ylhäältä alas. CX- Programmer -ohjelmat sisältävät valmiiksi ohjelman viimeisenä blokkina END-blokin, johon on valmiiksi ohjelmoitu END(001)-käsky. 54
Blokki tuhotaan valitsemalla se ja painamalla Del-painiketta Blokkeja voidaan leikata ja kopioida. Liittäminen leikepöydältä tapahtuu siten, että ensin valitaan ohjelma, johon blokki halutaan liittää ja sitten vasta liitetään CTRL+V-näppäinyhdistelmällä tai pikavalikon Paste-valinnalla. Mikäli blokki liitetään blokin päälle, saadaan viesti-ikkuna, jossa kysytään korvataanko ko.blokin sisältö vai jätetäänkö kopio liittämättä. 5.6.3 Virtapiirien lisääminen, tuhoaminen ja muokkaaminen Ohjelma tehdään siis virtapiireihin. Blokin loppuun CX-P lisää aina automaattisesti uuden virtapiirin. Jos jo luotujen virtapiirien väliin tai blokin ensimmäiseksi halutaan lisätä uusi virtapiiri, niin valitaan blokista virtapiiri, jonka viereen lisäys tulee, klikataan virtapiirin vasenta palkkia ja pikavalikosta Insert Below (alapuolelle) tai Insert Above (yläpuolelle). Reusable File... antaa mahdollisuuden tallettaa valinta tai lisätä tiedostosta virtapiirejä. Jos kohdistin on virtapiirin sisällä, niin silloin pikavalikosta valitaan Rung/Insert Näppäin R lisää virtapiirin alapuolelle ja yhdistelmä Shift+R yläpuolelle. Virtapiiri tuhotaan valitsemalla virtapiiri ja painamalla Del-painiketta Combine-toiminnolla voi yhdistää tarvittaessa valittuja peräkkäisiä virtapiirejä. Virtapiirin voi jakaa korkeussuunnassa kahtia viemällä kohdistimen halutulle riville ja valitsemalla pikavalikon josta taas rivin Split Rung. Tarvittaessa lisää tilaa, eli sarakkeita tai rivejä, virtapiiriin valitaan kohdassa, johon lisäys halutaan, hiiren oikea painike ja pikavalikosta Insert Row lisättäessä rivi (ALTGR+nuoli alas) Insert Rung Column lisättäessä sarake (ALTGR+nuoli oikealle) Delete Row tuhottaessa rivi (ALTGR+nuoli ylös) Delete Rung Column tuhottaessa sarake (ALTGR+nuoli vasemmalle) Kopioitaessa koko virtapiiri valitaan virtapiiri aktivoimalla virtapiiripalkki ja vaikka pikavalikosta Copy (tai CTRL+C). Leikattaessa koko virtapiiri pois valitaan Cut (tai CTRL+X). Liitettäessä virtapiiri valitaan ensin virtapiiri, jonka yläpuolelle liitettävä virtapiiri halutaan ja sitten pikavalikosta Paste (tai CTRL+V). Toki myös virtapiirin osia, eli käskyjä ja viivoja voidaan leikata ja kopioida. Liitettäessä tulee olla varattu riittävästi tyhjää tilaa haluttuun kohtaan, jotta CX-P antaa liittää tiedot leikepöydältä. 55
5.7 Logiikkaprojektin kommentointi Properties-ikkunalla Kommentointi CX-Programmerissa on helppoa. Se tehdään läpi projektin logiikkaa lukuunottamatta samalla editorilla, joka on Properties-ikkuna. Logiikkahan nimetään, määritetään tyyppineen ja kommunikointineen sekä kommentoidaan Change PLC-ikkunassa, joka avautuu tuplaklikillä itse logiikkaan projektinhallintaikkunassa. Kaikki muut eli projekti, ohjelmat, blokit, virtapiirit sekä käskyt nimetään ja kommentoidaan tällä Properties-ikkunalla. Properties-ikkunan voi avata melkein missä tahansa aktivoidussa pikavalikossa sen Propertiesriviltä. Ikkunan otsikko kertoo sen, minkä ominaisuuksista on kyse. Ikkunan vasemmassa yläkulmassa on nasta, joka voidaan asettaa hiirellä klikkaamalla näytä päällä asentoon. Tämä onkin kätevää kommentoitaessa. Kun hiirellä valitaan uusi kohde, ei Properties-ikkuna nyt sulkeudu, vaan sen sisältö muuttuu valinnan mukaan. Myös pikavalikosta löytyvää Rename-toimintoa voidaan käyttää nimeämiseen. 5.7.1 Projektin ominaisuudet Kuvassa on projektin ominaisuusikkuna, josta voi nyt antaa projektille uuden nimen Name-kenttään sekä Comments-lehdelle kommenttia. Projektin ominaisuusikkunasta voi luoda myös CX-Servertiedoston New File.. painikkeen takaa. Tiedosto tallettuu vasta, kun CX-Programmer projekti talletetaan Save-toiminnolla. Tähän *.CDM-tiedostoon tallettuu projektin logiikkamäärittelyt sekä mahdolliset linkitetyt globaalit symbolit. Tiedosto voidaan avata sitten toisissa CX-Serveriä käyttävissä ohjemistoissa tai toisessa CX-Programmer -projektissa. 5.7.2 Logiikan ominaisuudet Logiikkaa ei siis kommentoida Properties-ikkunassa. Ikkunassa voi kuitenkin tehdä logiikalle määrityksiä. Älä kuitenkaan muuta oletusasetuksia. Mikäli todella varmasti haluat suojata ohjelmasi ja logiikan asetukset, niin voit asettaa salasanan logiikalle Protection-välilehdellä. 56
5.7.3 Ohjelman ominaisuudet ja kommentointi Ohjelman nimen ja kommentin lisäksi ikkunassa määritetään taskin tyyppi. Uusille taskeille on aina tehtävä määritys. Operation start -valinta käynnistää ohjelman aina logiikan käynnistyessä, ilman valintaa on ohjelma käynnistettävä TKON(820)-käskyllä. Taskin pysäytys käskyllä TKOF(821). Nämä käskyt voidaan ohjelmoida vain syklisiin taskeihin. 5.7.4 Blokin ominaisuudet ja kommentointi Blokille annetaan nimi ja kommentti. Blokissa käytetytyt käskyrivit näkyvät Steps-kohdassa. 57
5.7.5 Virtapiirin ominaisuudet ja kommentointi Virtapiirin kommentointi tehdään valitsemalla ensin koko virtapiiri virtapiirin vasemmasta palkista. Voit rivittää tekstiä näppäinyhdistelmällä CTRL+ENTER. Virtapiirin kommentit tulevat näkyviin virtapiirin yläosaan. Virtapiirin Properties-ikkunan Annotations-lehdellä näkyy virtapiirin kommentoidut elementit eli käskyt, joita pääsee muokkaamaan tai tuhoamaankin täältä. 5.7.6 Käskyelementin ominaisuudet ja kommentointi Käskyelementtejä voidaan kommentoida myös. Valitaan käsky ja aktivoidaan Properties-ikkuna, jos se ei vielä ole auki. Käskyjen viereen oikeaan yläkulmaan tulee kommentin merkiksi ympyrä, jonka sisällä on käskykommenttijärjestystä osoittava numero. Jos valikosta Tools/Options/lehti Diagrams on valittu kohta Show Rung Annotations, niin kommentit listautuvat virtapiirikommentin alle. 58
5.8 Projektin tallennus Projekti tallennetaan valikosta File. Save kysyy ensimmäistä kertaa tallennettaessa myös kansiota ja tiedostonimeä, myöhemmin tallennus tapahtuu ilman dialogia. Save As.. valinta tapahtuu aina dialogin kautta, jolloin voi vaihtaa kansiota tai nimeä. CX-P-projekti tallentuu yhteen tiedostoon, jonka tarkenne on.cxp. Lisäksi tallennushetkellä luodaan samanniminen, mutta.opt-tarkenteinen tiedosto, joka sisältää ikkunointinäkymäasettelut. Tätä tiedostoa ei välttämättä tarvita avattaessa projektitiedosto. CX-Programmerilla voi tehdä myös monia muita tiedostoja. Katso tarkemmin CX-Programmer käyttäjän oppaasta. 5.9 Projektin avaus Projekti avataan valikosta File/Open. Avattavan tiedoston tyyppi voidaan vaihtaa Files of type kentästä vaikka Syswinin.swp-tiedostoksi. 59
6 PERUSKÄSKYJEN OHJELMOINTI Ohjelmaa tehdään siis virtapiireihin. Virtapiiri on pieni looginen kokonaisuus, joka muodostaa yhden tai muutaman muistipaikan ohjauksen. Kaikkien virtapiirin käskyelementtien tulee olla kiinni toisissaan. Virtapiireistä kannattaa pyrkiä tekemään suht yksinkertaisia. Tällöin niiden muokkaaminen on jälkeenpäin helpompaa. Apumuistien käyttäminen helpottaa ohjelmointia ja yksinkertaistaa virtapiirejä. Apumuisteiksi kutsutaan logiikan sisäisiä muistipaikkoja, joita käytetään välitallennuksiin ennen varsinaista ohjausta. Muista, että virtapiirien määrä ei suoranaisesti tee ohjelmasta suurta ja raskasta. Päinvastoin jos ohjaus on jaoteltu sopivasti virtapiireihin, voi ohjaus olla rivi- eli käskymäärältään pienempi, kuin jos se olisi tehty minimaaliseen määrään virtapiirejä. Pyrittäessä minimoimaan virtapiirien määrä, tulee ohjelmiin paljon relekaaviossa näkymättömiä, mutta käskylistamuodossa näkyviä käskyjä. Ohjelman kontrollikäskyt ohjelmoidaan aina omiin virtapiireihinsä. 6.1 Ohjelmaelementti- eli käskytyökalut Elementtityökaluille löytyy pikapainikkeet, joiden opastetekstit kertovat myös näppäimen, jolla elementti saadaan ohjelmaan. Selitykset vasemmalta oikealla, suluissa pikanäppäimet. valintatyökalu Selection Tool (ESC) sulkeutuva kosketin New Contact (C) avautuva kosketin New Closed Contact (/) sulkeutuva rinnakkaiskosketin alapuolelle New Contact OR (W) avautuva rinnakkaiskosketin alapuolelle New Closed Contact OR (X) pystyviiva (U tai CTRL+nuoli ylös piirto ylöspäin / V tai CTRL+nuoli alas piirto alaspäin) vaakaviiva (H tai tai CTRL+nuoli oikealla piirto oikealla / tai CTRL+nuoli vasen piirto vasen) bitin kopiointi New Coil (O) bitin käänteinen kopiointi New Closed Coil (Q) funktiokäskyt, myös ajastimet ja laskurit (I) toimilohkokutsu (F) toimilohkon parametri (P) viivan piirto raahaamalla hiiren vasen painike pohjassa viivan tuhoaminen raahaamalla hiiren vasen painike pohjassa Valitse ensin työkalu hiirellä ja klikkaa haluttuun virtapiirin kohtaan tai vie kohdistin ensin haluttuun kohtaan ja paina pikanäppäintä. Työkaluvalinta keskeytytetään Selection Tool valinnalla tai ESC-painikkeella. Elementin eli käskyn lisäämisen jälkeen tehdään aina operandin määrittelyt. valitsemalla muuttuja/arvo jostain symbolilistasta määrittelemällä samalla uusi muuttuja antamalla pelkkä osoite 60
6.2 Käskyikkuna Käskyikkuna avautuu, kun työkalulla on klikattu virtapiiriin tai pikapainiketta on painettu. Ikkunalla on kaksi muotoa. Yksinkertaistettu oletuksena käytössä oleva Simple Dialog ja symbolointia helpottava normaali muoto. Ikkunan muoto valitaan valikosta Tools/Options ja ikkunan välilehden kohdasta Instruction Dialog Mode. Simple Dialog Modessa voi valita vielä osoitteen kommentointi-ikkunan avautumisen. Simple Dialog Mode sopii hyvin, jos symbolit on jo nimetty ja muistaa osoitteet tai symbolien nimet. Ikkunan saa isonnettua Detail >>-painikkeella, jolloin se näyttää seuraavalta. Ainakin alkuvaiheessa ja jos aikoo nimetä muuttujat samalla kun tekee ohjelmaa on isompi eli normaali ikkuna helppokäyttöisempi. Otetaan Simple Dialog Mode pois valikosta Tools/Options. Tämän ikkunan Diagrams-lehdellä on alaosassa kohta Show in Simple Dialog Mode, josta valinta poistetaan. 6.3 AND- ja OR-piirien luominen CX-Programmerilla Peruskäskyihin luetaan LD, LD NOT, AND, AND NOT, OR, OR NOT, OUT ja OUT NOT - käskyt. Näillä toteutetaan bittiohjauksia. Tutustutaan AND- ja OR-piirien ohjelmointiin. Ladder Diagram eli relekaaviomuodossa ohjelmoitaessa ei juuri em. nimityksiä käytetä, vaan puhutaan avautuvista (es. LD NOT) ja sulkeutuvista (es. LD) koskettimista sekä sarja (AND) ja rinnankytkennöistä (OR). Sarjakytkennässä koskettimet kytketään peräkkäin vaakasuoraan. Ohjaus on tosi eli 1 -tilassa, kun kaikki koskettimet ovat kiinni, muutoin epätosi eli 0. Rinnankytkennässä koskettimet kytketään allekkain eli rinnakkain. Ohjaus on tosi eli 1 -tilassa kun vähintään yksi koskettimista on kiinni. Jos kaikki rinnankytketyt koskettimet ovat auki, on ohjaus epätosi. 61
Usein tarvittava ohjausehto muodostuu edellisten yhdistelmistä, tällöin voidaan puhua sekakytkennästä. Virtapiirin ohjelmointi aloitetaan vasemmasta reunasta, valitaan työkalu ja klikataan ensimmäinen elementti ensimmäiseen sarakkeeseen ja annetaan tai valitaan symboli. Työkaluvalinta pysyy voimassa, kunnes valitaan uusi työkalu. Kun virtapiiri on valmis (tai ainakin käännettävissä) kuittaantuu se siirtämällä kohdistin toiseen virtapiiriin. Seuraavassa esimerkissä ohjelmoidaan harjoituksen H1 ohjaus. Kun ohjausvirtapiirikaaviossa on virran suunta ylhäältä alas, niin nyt logiikkaohjelmassa voidaan ajatella sen kulkevan vasemmalta oikealle. Aloitetaan ohjelmointi kelan K1 ohjausvirtapiiristä ja sen ensimmäisestä koskettimesta. I/O-pisteluettelo: S0 S1 F2 K K1 K1 S0 00.00 S1 00.02 F2 00.04 K1 01.00 H1 01.01 H2 01.02 K1 H H 1. Viedään kohdistin ohjelmaikkunassa virtapiirin alkuun, jos se ei ole siellä ja painetaan näppäimistön näppäintä / tai valitaan hiirellä sulkeutuva kosketin New Closed Contact (/) -työkalu ja klikataan virtapiirin alkuun eli vasempaan reunaan. 2. Valitaan Name-alasvetolistasta jo symboloitu muuttuja tai annetaan uusi. Vielä muuttujaa ei ole, joten luodaan se nyt. Annetaan nimi F2, sille kommentti Lämpösuoja M1 ja fyysinen osoite 0.04. Osoitteesta voi jättää turhat etunollat pois. Pisteen käyttö sana- ja bittiosoitteen välissä on vapaaehtoista, mutta suositeltavaa. Symboli talletaan nyt Globaaliin listaan ilman linkitystä. Mitään muutosperusteisia eli differentiaalisia ohjauksia koskettimelle ei valita, vaikka CJ1/CS1/CV-logiikoille se tarvittaessa onkin mahdollista. Myöskään välitöntä eli käskyn suorituksen yhteydessä tapahtuvaa osoitteen IOvirkistystä ei valita.kuitataan OK-painikkeella. 62
3. Mikäli jokin meni väärin muuttujan valinnassa tai symboloinnissa, poistetaan työkaluvalinta ESC-näppäimellä tai Selection Tool-pikapainikkeella, ja annetaan hiirellä tuplaklikki käskyyn, jolloin Edit Closed Contact-ikkuna avautuu. Ikkunan saa auki myös Enter-näppäimellä, kunhan kohdistin on oikeassa kohdassa. Jos halutaan vaihtaa toinen muuttuja, niin valitaan valmis listasta tai kirjoitetaan sen tai uuden nimi ylimpään riviin. Mikäli halutaan muokata nykyistä muuttujaa, niin painetaan Edit-painiketta ja tehdään muutokset. Muutokset näkyvät tietysti koko symbolin vaikutusalueella. Eli globaalilla symbolilla läpi logiikan ja lokaalilla vain kyseisessä ohjelmassa. 4. AND-piiri eli sarjakytkentä syntyy, kun kaksi tai useampi kosketin kytketään peräkkäin sarjaan. Koskettimet voivat olla sulkeutuvia tai avautuvia. Sulkeutuva kosketin on kiinni, kun koskettimen bitti on tosi eli 1. Avautuva kosketin on kiinni, kun koskettimen bitti on epätosi eli 0. Lisätään vielä sarjaan toinen avautuva kosketin, jonka globaali symboli on S_0 ja kommentti Stoppainike. Osoite on 00.00. S0 ei kelpaa symboliksi. 5. Vaihdetaan työkalu sulkeutuvaksi koskettimeksi ja klikataan sillä edellisten perään. Näin on syntynyt kolmen koskettimen sarjakytkentä. Annetaan S1 tiedot käskyikkunaan. Myöskään S1 ei kelpaa symboliksi, vaan annetaan esim. S_1. Kuvasa nähdään blokin nimeltä M_1 ohjelmaikkunaa. Vasemmassa reunassa näkyvän virtapiiripalkin vasen 0 kertoo virtapiirin numeron ja oikean puoleinen 0 virtapiirin ensimmäisen käskyn rivinumeron. Virtapiiripalkin oikeassa reunassa näkyy nyt myös punainen viiva. Tämä on merkki siitä, että virtapiiri ei ole valmis eikä käännettävissä. Sen sisältö ei ole CX-Programmer - ohjelmoinnin kieliopin mukainen. Nämä koskettimet ovat ns. Input-tyyppisiä eli tilaa lukevia käskyjä. Virtapiiri, jossa käsitellään muuttujia, tulee päättää aina kirjoittavaan käskyyn. Kosketinkombinaatioiden tiloja voidaan kopioida muistipaikkoihin New Coil (O) tai New Closed Coil (Q) -käskyillä. New Coil kopioi suoraan ja New Closed Coil käänteisesti koskettimien ohjauksen. 6. Valitaan Kela New Coil (O) ja klikataan sarjakytkennän perään ja annetaan K1 tiedot. Nyt virtapiiri on kieliopillisesti OK, mutta ei vielä ohjelmallisesti. 63
7. Koska kyseessä on painonappiohjaus ja moottorin tulee pyöriä kauemmin kuin mitä Startpainiketta S_1 painetaan, tarvitaan K1 ohjaukselle pito. Pitopiirit voidaan ohjelmoida logiikoissa monella tapaa. Nyt käytämme itsepito-ohjausta, eli ohjelmoimme rinnankytkennän Start-painikkeen S_1 ja K1 kanssa. Virtapiirissä ei ole nähtävissä kuin yksi graafinen rivi. Rinnankytkentää varten tarvitaan lisää tilaa. Helpoiten saadaan tilaa viemällä kohdistin alimmalla rivillä kohtaan, jossa ei ole käskyelementtejä ja painetaan Enter-näppäintä. Kätevästi lisää tilaa alapuolelle saadaan piirtämällä pystyviivaa Vertical Short ( V tai CTRL+ nuoli alas) Viiva piirtyy aktiivisen rasteripisteiden määräämän suorakaiteen vasemmasta reunasta alaspäin. Ylöspäin viivaa voidaan piirtää näppäimellä U tai CTRL+ nuoli ylös. Tämä ei kuitenkaan tee tilaa yläpuolelle, vaan sitä on tehtävä ensin toiminnolla Insert Row. Viivojen piirron jälkeen viedään kohdistin viivojen väliin toiselle riville ja painetaan C-näppäintä itsepitokoskettimen lisäämistä varten. K1 symbolihan on jo luotu, joten valitaan se listasta. Nyt virtapiiri on valmis ja se näyttää tältä. Virtapiirin toiminta ei tietenkään muutu,vaikka sarjassa olevat koskettimet tai kosketinryhmät olisivat toisessa järjestyksessä. Tosin ohjelma lyhenee yhden rivin verran käskylistamuodossa, jos rinnankytketty piiri ohjelmoidaan virtapiiri alkuun. 8. Tehdään vielä merkkivalojen H1 ja H2 ohjausvirtapiirit. Symbolit H1 ja H2 ovat kiellettyjä, joten käytetään taas vaikka alaviivaa, jotta saadaan muuttujat symboloitua. Ohjelmoidaan kumpikin lähtö 64
omaan virtapiiriinsä, koska näille ei ole tehtävässä annettu yhteistä tekijää. Mikäli kuitenkin haluat ohjelmoida lähdöt samaan piiriin, niin käytä tällöin järjestelmäbittiä P_On sulkeutuvan koskettimen yhteydessä haaroituskoskettimena virtapiirin alussa 6.4 Lopetuskäsky END(001) Jotta ohjelma voitaisiin ladata logiikkaan ja testata, tarvitsemme ohjelman päätteeksi END(001)- käskyn. Jos ohjelmasta puuttuu END(001)-käsky, ei ohjelman alaslataus logiikkaan onnistu, vaan tulee siitä tulee huomautus tulostusikkunaan. END(01)-käsky tulee aina omaan virtapiiriinsä. Saakoon se vielä oman blokkinsakin. Kuten aiemmin jo todettiin, on CX-Programmer ohjelmistossa jokaiselle ohjelmalle tehty valmiiksi viimeinen blokki nimeltä END joka sisältää myös END(001)-käskyn. Joten seuraavaksi esitettävää END(001)-käskyn lisäystä ei tarvitse tehdä. Kaikki funktiokäskyt, ajastimet ja laskurit löytyvät painikkeen Instruction (I) takaa. Kun uusi blokki on lisätty ja nimetty, avataan se ohjelmointieditoriin tuplaklikillä projektinhallintaikkunassa. Varmistetaan, että kohdistin on sen ensimmäisen virtapiirin alussa ja painetaan I-kirjainta näppäimistöltä tai valitaan Instructions-työkalu ja klikataan virtapiirin alkuun.. Käskyn määritys Instruction-ikkunan Instruction-kenttään tehdään kolmella tapaa kirjoittamalla funktion nimilyhenne (nyt END), CX-P tarjoaa listasta aina seuraavaa sopivaa nimeä kirjoittamalla funktionumero (nyt 001) käyttämällä hakupalvelua Find Instruction.. Instruction-ikkunan Operands-osio on tärkeä. Yleensä käskyissä on 1-4 operandia, jotka määritellään tässä kentässä. Kun käsky on valittu, mukautuu Operands-osio valinnan mukaan. Operands-kenttien alla kerrotaan Operandin tarkoitus ja opastetaan valitsemaan oikea datatyyppi, 65
osoite tai arvo operandille. END(001)-käsky on ohjelman kontrollikäsky, jolla ei ole yhtään operandia. Instruction Help-toiminnolla saat lyhyen tiivistelmän funktiosta. Sitä kannattaa käyttää, kun tarvitset uusia käskyjä. Help-ikkunan saa auki myös Edit-valikosta. 6.5 OnLine-yhteys ja logiikan toimintatilat Yhteys CX-Programmerista CJ1M -logiikkaan otetaan nyt Toolbus -sarjaliikenneprotokollalla. Onnistunut yhteys vaatii oikeanlaisen kaapelin laitteiden välille. Myös logiikan portin ja CX- Programmerin kommunikointiasettelut olla samat, jotta kommunikointi onnistuu. Tietokoneen kommunikointiasetteluita muutetaan Change PLC-ikkunan Network Type -kohdasta. Yhteys logiikkaan otetaan vaikka valitsemalla pikavalikko logiikan kohdalla ja sieltä Work Online. Jos ns. turvamoodi on aktivoitu, niin ohjelmisto kysyy vielä, että haluatko varmasti tehdä tämän toimenpiteen. Näppäinyhdistelmä CTRL+W toimii myös yhteyden kontrollointiin. Kun yhteys on saatu, tulee projektinhallintaikkunassa logiikan perään sen toimintamoodi, Run, Monitor tai Stop/Program osoittamaan yhteyttä ja tilaa. Myös ohjelmablokki-ikkunoiden taustaväri muuttuu Read Only -tilan määritysten mukaiseksi (oletusväri harmaa). Myös ohjelmien tila näytetään teksteillä Running / Stop. Kun yhteys logiikkaan on valittuna, ei juuri mitään editointitoimenpiteitä voi tehdä logiikalle. Lähinnä voidaan monitoroida logiikan ja ohjauksen tilaa sekä syöttää muistipaikkoihin uusia arvoja. Toimintatilaa voidaan vaihtaa vaikkapa logiikan pikavalikosta riviltä Operating Mode / haluttu tila. Seuraavat näppäinyhdistelmät vaihtavat tilaa CTRL+1 Stop/Program eli ohjelmointitila CTRL+3 Monitor eli suorittava tila, jossa logiikkaa voidaan editoida CTRL+4 Run eli suorittava tila, jossa logiikka on suojattu Yhteys katkaistaan samalla tavoin kuin otettiinkin eli valitsemalla uudestaan Work Online. 66
6.6 Ohjelman siirto logiikkaan eli alaslataus CX-ONE JA LOGIIKKAOHJELMOINTI Alaslataus eli ohjelman ynnä muiden siirto ohjelmistosta logiikkaan aloitetaan taas valitsemalla logiikka ja avaamalla sen pikavalikko. Riviltä Transfer voidaan Online-tilassa valita lataus logiikkaan (To PLC) lataus logiikasta (From PLC) ohjelmien vertailu CX-Programmer projektin logiikan ja logiikan välillä (Compare with PLC) symbolien, kommenttien ja ohjelman siirto tiedostoon, kun kyseessä on CJ1/CS1-logiikka. 67
Transfer To PLC-valinta avaa seuraavan ikkunan. Symbols, Comments ja Program Index -valinnat ovat näkyvissä vain, jos CF-muistikortti on asennettu paikalleen tai CPU on versiota 3.0, joissa on sisäistä kommenttimuistia. Alaslataukseen voidaan valita CJ1M-logiikalla seuraavat seikat: Program(s) käsittää ohjelmat Settings PLC Settings -ikkunan määrittelyt IO-taulu valittaisiin, mikäli IOtaulueditorilla on käyty muokkaamassa taulua ja oletus osoitteenmääräytymistapa ei riitä. Special Unit Setup lataa IOtaulueditorissa tehdyt erikois-io- tai väyläyksiköiden asettelut Symbols-valinta lataa logiikan symbolilistojen tiedot (Symbols.Sym) Comments lataa ohjelman virtapiirija käskykommentit (Comments.Cmt) Program Index lataa blokkikommentit (Program.Idx) V3.0/V4.0 logiikoissa voidaan valita käytettävä muisti kommenteille ja symboleille. Ohjelmamuisti tyhjennetään aina automaattisesti ennen ohjelmien latausta vanhoista ohjelmista. Alaslataukseen valitaan nyt ohjelma Program(s) ja mahdolliset symbolit, kommentit ja indeksi. Ja eikun OK. Jos CPU on Stop/Program-tilassa kun lataus alkaa. Toimintatilan ollessa suorittava, kysytäänkin ensin, että onko soveliasta vaihtaa tilaksi latausta varten Stop/Program. Kyllä vaihdetaaan. Mikäli turvamoodi on päällä, niin aivan ensiksi halutaan varmistus operaatiosta. Katso myös logiikan ohjelmien käännöksien ilmoitukset automaattisesti avautuneen tulostusikkunan Compile-lehdeltä. Myös itse käännös tapahtuu automaattisesti. Sen voi tarvittaessa tehdä myös logiikka- tai ohjelmakohtaisesti näiden pikavalikoista toiminnolla Compile. Onnistuneen eli virheettömän käännöksen jälkeen alkaa lataus. 68
Onnistuneesta alaslatauksesta tulee ilmoitus Download Successful. Tarkistetaan, että CPU palautuu Monitor (tai Run) -moodiin ja testataan ohjelman toiminta. 6.7 Monitorointi ja pakko-ohjaukset Testaus voidaan suorittaa logiikan tuloihin kytkettyjen simulointikytkinten avulla sekä tarkastelemalla lähtöjen merkkivalojen toimintaa. Voit myös hyödyntää koulutuslaitteiston NSnäyttösovellusta Toki CX-Programmerin ohjelmointieditorissa on monitorointi ja pakkoohjausmahdollisuus toiminnan tarkastelua varten. Monitorointi kytkeytyy automaattisesti päälle kun yhteys otetaan logiikkaan. Se saadaan toimintaan tai pois päältä myös Toggle PLC Monitoring-pikapainikkeesta tai logiikan pikavalikosta riviltä Monitoring. Näppäinyhdistelmä CTRL+M toimii myös. Nyt virtapiirien toimintaa ilmaistaan virtausta osoittavilla vihreillä monitorointipalkeilla sekä datakäskyissä näkyvillä sanamuuttujien arvoilla. 69
Kuvasta nähdään: Logiikan toimintatila on Monitor. Alimmainen ohjelmiston rivi on tilarivi, ja siellä näkyy myös logiikan sykliaika 0,9 ms. Kaikki virtapiirissä 0 näkyvät bitit ovat 0 -tilassa, koska avautuvat koskettimet ovat kiinni ja sulkeutuvat taas auki. Toki myös K1:n tila nähdään blankosta kelasta. Mikäli käytössä ei ole kytkimiä, niin testausta voi tehdä pakko-ohjausten avulla. Pakko-ohjaukset eivät toimi, jos CPU on Run-moodissa. Ohjelmisto pyytääkin tässä tapauksessa vaihtamaan toimintatilan Monitor-tilaksi. Ohjelmointieditorissa bittien pakko-ohjaukset tehdään seuraavasti: valitaan haluttu osoite klikillä, avataan hiiren oikealla painikkeella pikavalikko, josta valitaan haluttu toiminto. Force On pakko-ohjaa bitin päälle, kunnes se kumotaan Force Cancel- toiminnolla Force Off pakkonollaa bitin, kunnes ohjaus keskeytetään Force Cancel-toiminnolla. Cancel All Forces keskeyttää kaikki pakko-ohjaukset. Huomaa, että tämän jälkeen bitin tila riippuu siitä, millainen muistipaikka on ja käsitelläänkö sitä ohjelmassa. Tulobittien tilat määräytyvät tulojen jännitteen mukaan ja apumuistien sekä lähtöbittien sen perusteella, miten ohjelma niitä ohjaa. Mikäli ohjelma ei käsittele muistipaikkaa, niin sen tila säilyy ennallaan. Set On ja Set Off ovat vain yhden syklin mittaisia 1 ja 0 -tilan kirjoituksia. Set Value -ikkunasta voidaan kirjoittaa sanaosoitteeseen sopiva arvo, bittiosoitteeseen 0 tai 1. Kuten huomasit, Force-toiminnot ilmaistaan ohjelmaeditorissa pakoitetun osoitteen viereen ilmestyvällä lukkokuvalla. Poista pakko-ohjaukset testauksen jälkeen. Tarkastele ohjelmaa myös käskylistamuodossa. View-valikon Mnemonics avaa ikkunan myös käskylistamuodossa. Kuten huomaat virtapiirit alkavat LD- tai LD NOT -käskyllä. 70
6.8 Virtapiirien ja käskyelementtien muokkaaminen Pidetään lähtökohtana sitä, että näin alussa kaikki muokkaukset tapahtuvat Offline-tilassa (ei yhteyttä logiikkaan). Myöhemmin voidaan ohjelmia muokata ohjelman suorituksen aikana Online Edit -tilassa. Kerrataan vielä virtapiirin sisällön muokkaaminen. Käskyelementti valitaan hiirellä klikkaamalla ja useammat elementit maalaamalla. Tuplaklikillä avautuvassa Edit.. ikkunassa voidaan muokata käskyelementtiä. Jos käskylle halutaan uusi symboli tai osoite, kirjoitetaan se suoraan Name or address-kenttään sekä annetaan muut tarpeelliset tiedot. Jos muuttuja on jo olemassa, niin haetaan se avatusta listasta Name or address -kentässä. Toki tässäkin tapauksessa sitä voidaan kutsua nimellä tai osoitteella. Mikäli nykyistä muuttujaa halutaan muokata tästä käsin, niin klikataan ensin Edit Symbol - painiketta, jonka jälkeen Symbol Information -osio avautuu muutoksia varten. Jos muuttujan osoite vaihdetaan, muuttuu se nyt kaikissa esiintymissä läpi symbolilistan vaikutusalueen. Koskettimen tyypin voi vaihtaa New Closed Contact -työkalulla tai koskettimen pikavalikon riviltä Invert(NOT). Käskyelementti voidaan tuhota DEL-näppäimellä. Tarvittaessa lisää tilaa, eli sarakkeita tai rivejä, virtapiiriin valitaan kohdassa, johon lisäys halutaan, hiiren oikea painike ja pikavalikosta Insert Row lisättäessä rivi (ALTGR+nuoli alas) Insert Rung Column lisättäessä sarake (ALTGR+nuoli oikealle) Delete Row tuhottaessa rivi (ALTGR+nuoli ylös) Delete Rung Column tuhottaessa sarake (ALTGR+nuoli vasemmalle) 6.9 Ohjelman muokkaaminen online-tilassa eli Online Edit Ohjelmaa voidaan muuttaa myös ajonaikaisesti. Tätä tapahtumaa kutsutaan nimellä OnLine Edit. Tällöin voidaan lisätä, poistaa ja muokata virtapiirejä. Ohjelmien ja blokkien muokkaamiset eivät ole mahdollisia. Logiikan tulee olla Monitor-tilassa sekä ohjelmien samanlaiset logiikassa ja CX- Programmerissa ennen muokkaamista. Online Edit etenee seuraavasti: valitse virtapiiri tai peräkkäiset virtapiirit maalaamalla se/ne virtapiirin vasemmasta palkista pelkkää tyhjää virtapiiriä ei voi valita avaa vasemman virtapiiripalkin päällä pikavalikko ja valitse sieltä Online Edit/Begin nyt valittujen virtapiirien tausta muuttuu Offline-tilan väriseksi tee muutokset. Huomaa ettei symboleja voi muuttaa, mutta uusia voi lisätä. myös virtapiirejä voidaan lisätä valitun alueen sisä-, ylä- tai alapuolelle lähetä muutokset avaamalla taas pikavalikko virtapiiripalkin päällä ja valitse sieltä Online Edit/ Send Changes. Virtapiirien tausta palautuu taas Online-tilan väriseksi. 71
7 BITIN KÄSITTELYKÄSKYT Edellisessä luvussa tutustuttiin virtapiirien muodostamiseen ja peruskäskyihin, koskettimiin ja keloihin. Pysymme edelleen bittiohjauksissa, mutta opiskelemme yleisimpiä funktiokäskyjä, joiden avulla saadaan lisää sävyjä ja mahdollisuuksia ON/OFF-ohjauksiin. Tutustumme pitopiiri- ja sekvenssikäskyihin. 7.1 Pitopiiri KEEP(011), SET JA RSET Pitopiiri voidaan luoda peruskäskyjen avulla tai funktiokäskyjen avulla. Tähän tarkoitukseen sopivia funktioita ovat KEEP(011) tai SET ja RSET. Käskyille on ominaista se, että niille riittää syklin mittainen pulssi toteuttaaksen toiminnon. KEEP(011) käsittää sekä asettavan (S) että resetoivan (R) tulon. Ylempi tulo on S ja alempi R. Eli kuvassa S_1 asettaa K1:n 1-tilaan ja S_0 tai F2 resetoi K1:n. Jos molemmat tulot ovat yht aikaa aktiivisia, on myöhemmin ohjelmassa suoritettava rivi, eli resettulo määräävämpi ja näin KEEP-käskyn bitti menee 0-tilaan. KEEP-käsky itseasiassa muistaa, kumpi sen tuloista on ollut viimeksi aktiivinen ja ohjaa bittinsä sen mukaiseen tilaan. SET-käskyllä ei ole funktionumeroa ja se saadaan valittua kirjoittamalla set. Kun SET-käskyä ohjaava bitti aktivoituu, niin SET-käskyn bitti menee 1-tilaan, jossa se pysyykin, kunnes tämä osoite resetoidaan RSET-käskyllä. RSET-käsky on siis bitin nollausta varten. Jos samaa osoitetta ohjaavat SET- ja RSET-käskyt ovat molemmat aktiivisia, niin osoitteen tilan määrää jälleen ohjelmassa myöhemmin suoritettava käsky. Käskyjen välissä voi olla useita virtapiirejä. Näidenkin käskyjen ohjaamiseen riittää pulssi. 72
Aikakaaviolla voidaan toimintaa hahmoittaa näin: S_1 S_0 / F2 K1 Kun funktiokäskyjä ohjelmoidaan, niin voidaan joutua liikkumaa Instruction-ikkunan lisäksi Find Symbol-ikkunassa. Seuraavassa on esitetty KEEP(011)-funktion ohjelmointi. Kun Instruction-kenttään on kirjoitettu käskyn nimilyhenne (osa nimeä) tai funktionumero, tulee ko. kentän alle käskyn koko tiedot. Operands-kentän riveille annetaan opasteet alapuolella. Näemme nyt opasteista, että KEEP(11)-käskyllä on vain yksi operandi. Se on bittiosoite, joka voi sijaita CIO, H, A tai W-muuttujamuistialueilla tai indeksirekisterissä,ir. Symbolin datatyypin tulee olla BOOL eli bittityyppinen. Huomaa, että KEEP(011)-käskyyn voidaan liittää välitön virkistys (!). 73
Kun hiirellä klikataan Operands-kentän riville, tulee rivin päähän...painike, josta päästään Find Symbol -ikkunaan. Ikkunan yläosassa voidaan tarkentaa symbolin hakua. Look In -kohdassa valitaan joko globaali tai lokaali lista ja Symbols of Type -kohdassa voidaan rajata symbolin tyyppi tietyksi tai hakea kaikkia tyyppejä. Jos symbolia ei ole vielä nimetty, se voidaan tehdä nyt. Kirjoitetaan nimi Name or address -kenttään sekä annetaan osoite ja mahdollinen kommentti. Kun palataan Find Symbol -ikkunasta OK-painikkeella Instruction-ikkunaan, nähdään Operandin informaatiokohdassa äsken syötetyt/ valitut tiedot. Jos muuttuja on jo aiemmin tehty, niin sen nimi tai osoite voidaan antaa suoraan Operands-kentän riville. Huomaa vielä, että SET/RSET-käskyihin voidaan liittää välitön virkistys (!), nouseva (@) tai laskeva (%) reuna. Filter Symbol painikkeella voidaan hakea symboleja suoraan listoista. 74
7.2 Reunantunnistus DIFU(013) JA DIFD(014) Edellä tehtiin tilaperustaisia ohjauksia. Toisinaan tilaa tärkeämpää on muutos. Bitin muutos voi olla 0 -> 1 eli nouseva tai 1 -> 0 eli laskeva. Bitin nousevan reunan tunnistus suoritetaan DIFU(013) ja laskevan reunan tunnistus DIFD(014) käskyillä. Nämä antavat aktivoituessaan ohjelmasyklin mittaisen 1 -pulssin käskyn osoittamaan apumuistibittiin. Tätä bittiä käytetään sitten koskettimien yhteydessä tuottamaan kertasuoritteisia ohjauksia. DIFU(013) eli Differentiate Up toimii silloin, kun sitä ohjaava akku aktivoituu, eli ohjaava kosketin(kombinaatio) sulkeutuu DIFD(014) eli Differentiate Down toimii silloin, kun sitä ohjaava akku deaktivoituu, eli ohjaava kosketin(kombinaatio) avautuu. Ohjelmoidaan nousevan reunan tunnistus edellisen tehtävään startille seuraavasti. Lisätään ensin uusi virtapiiri vaikka yläpuolelle, ohjelmoidaan sinne ehtokosketin S_1 ja sen perään valitaan Instruction(I). Kirjoitetaan käskyn nimilyhenne tai funktionumero käskykenttään. Havaitaan, että käskyllä on vain yksi bittioperandi. Klikataan operandikentän ylimmälle riville ja edelleen... - painikkeeseen, jotta päästään symboloimaan. Annetaan nimi Name or address -kenttään, osoite Address or value -kenttään, Data type annetaan olla BOOL ja vielä haluttaessa kommentti nimelle. Valitaan myös symbolilista, johon muuttuja talletetaan. Kuvassa on muuttujalle käytetty W-apumuistialuetta. Muutetaan K1 asettavalle koskettimelle äskeinen uusi muuttuja. Tuplaklikataan kosketinta ja valitaan alasvetolistasta juuri luotu muuttuja. 75
Aikakaaviolla voidaan toimintaa hahmoittaa näin: S_1 S_1_Difu (S_1_Difd) DIFU- ja DIFD-käskyjen ohjaamien bittien 1-tilassa oloaika riippuu sykliajasta ja se on millisekunneista kymmeniin. Yleensä näillä käskyillä ohjataan pitopiirejä tai muita funktioita, jotka halutaan suorittaa kertaluonteisesti. 7.3 Reunatunnisteiset eli kertasuoritteiset koskettimet CJ1/CS1/CV-logiikoissa voidaan liittää reunantunnistus suoraan koskettimiin, jolloin reunatunnistusfunktioita ja apumuisteja ei tarvita. Reunatunnistuksen käyttäminen koskettimen yhteydessä on oikeastaan nopeampi ja helpompi tapa toteuttaa kertasuoritteinen ohjaus. Perinteisissä C-sarjan logiikoissa, kuten CPMx, CQM1 ja C200Hx -logiikoissa tämä ei ole käytettävissä, vaikka CX-Programmer antaakin valita reunan tunnistuksen koskettimen ohjelmoinnissa. Reunan tunnistus määritetään Contact-ikkunan Differentiation-kohdassa. None ei ota tunnistusta käyttöön, Up tekee nousevan reunan tunnistuksen, eli tunnistaa kontaktin sulkeutumisen ja Down laskevan reunan tunnistuksen eli tunnistaa kontaktin avautumisen. Koskettimeen piirtyy nyt reunan tunnistusta kuvaava nuoli. 76
7.4 Useamman peräkkäisen bitin nollaus - RSTA(531) Vaikkapa seuraavassa sekvenssiesimerkissä, jossa toteutus tehdään SET/RSET-käskyillä, voi olla tarpeen tehdä useamman peräkkäisen bitin nollaus yhdellä käskyllä. RSTA(531) sopii tähän hyvin. Käskyllä on kolme operandia 1. aloitussana 2. aloitusbitti, voidaan antaa vakiona (bin, &) tai sanaosoitteena, jolloin aloitusbitti on siis sanan arvo (00..15) 3. nollattavien bittien määrä, voidaan antaa vakiona (bin, &) tai sanaosoitteena, jolloin aloitusbitti on siis sanan arvo (0..65535) Kuvan esimerkissä nollataan bitit 30.00 30.07. 7.5 Sekvenssiohjaukset eli siirtorekisterit Sekvenssiohjausten eli siirtorekistereiden käyttökohteita ovat tehtävät, joissa toiminnot tapahtuvat ajallisesti peräkkäin. Seuraavaan askeleeseen mennään yleensä edellisen askeleen kautta siirtoehdon toteutuessa. Kaaviona sekvenssiohjaus voidaan esittää vaikkapa seuraavasti. Kuvassa sekvenssi etenee järjestyksessä ylhäältä alas aina ehtojen toteutuessa. Kullekin askeleelle varataan oma työ- eli askelbitti, jota sitten käytetään ohjauksiin. Tyypillisesti peräkkäisille askelille varataan peräkkäiset bitit, esim. Askel 1 =H00.00, Askel 2 =H00.01, jne. Sekvenssiohjaukset eli askelohjaukset voidaan toteuttaa mm. KEEP(011), SET/RSET -ketjuilla tai siirtorekisterikäskyllä SFT(010). Startti Askel 1 Askel 2 Askel 3 Ehto 1 Ehto 2 Ehto 3 Ehto 4 Näin alussa voidaan pitää perusajatuksena sitä, että vain yksi askel on aktiivinen, muut nollattuina. Seuraavat bittikarttakuvat osoittavat sekvenssin etenemistä, esimerkiksi bitti 00 =Askel 1, bitti 01 =Askel 2, bitti 02 =Askel 3, jne. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 15 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 15 00 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 15 00 77
Sekvenssin ohjelmarakenne on yleensä sellainen, että siitä voidaan erottaa seuraavat osat (riippuen toteutustavasta) siirtorekisterin runko etenemisehdot lähtöjen ohjaukset eli toimenpiteet 7.5.1 Siirtorekisterin runko KEEP(011) -käskyllä Ohjauksen ymmärtämistä helpottaa, jos peräkkäiset askeleet ohjelmoidaan peräkkäisiin bitteihin. Ohjaus toteutetaan esimerkiksi seuraavalla tavalla. Askeleesta seuraavaan siirrytään, kun edellinen askel on voimassa ja ehto uudelle askeleelle tulee todeksi. Uusi askel nollaa edellisen askeleen asetettuaan. Sekvenssin keskeyttävät toiminnot kerätään yhteen OR-toiminnolla ja talletaan apumuistipaikkaan, jota käytetään askeleiden pysäyttämiseen. Siirtorekisteri voidaan tehdä paristovarmennetulle H-muistialueelle, jos halutaan tai voidaan jatkaa siitä askeleestä, johon jäätiin sähkökatkon ilmetessä. 78
7.5.2 Siirtorekisterin runko SET/RSET- käskyillä KEEP(011) -käskyjä käytettäessä ohjelmoitiin yhteen virtapiiriin yksi askel. SET/RSET-käskyjä käytettäessä virtapiiriin ohjelmoidaan siirto askeleesta seuraavaan. Kuvassa ei ole ohjelmoitu yleisiä askeleiden nollauksia. Koko sekvenssin nollaus voidaan toteuttaa yhdellä virtapiirillä. Myös jokaiseen virtapiiriin voisi ohjelmoida nämä nollausehdot. Tällöin ne toki tekisivät myös askeleen asetuksia, mutta nämä nollattaisiin seuraavan askeleen virtapiirissä. 7.5.3 Siirtorekisterin runko SFT(010)-käskyllä SFT(010)-käsky on bittikäsky, vaikka se varaa siirtorekisterille kokonaisia sanoja. Käskyllä on kaksi operandia. Ensimmäinen operandi on siirtorekisterin aloitussanan ja toinen lopetussana. Kaikki sanat aloitus- ja lopetussanan välillä varataan tälle sekvenssille. Jos tarvitaan korkeintaan 16 askelta, riittää yksi sana. Tällöin aloitus- ja lopetussana ovat samat. Yhdellä käskyllä voidaan siis toteuttaa satoja askelia pitkä sekvenssi. Toki käsky vaatii oikein toimiakseen oheisohjelmointia lähinnä siirtotapahtuman ohjaukseen. SFT(010)-käskyllä tehtyä sekvenssiä varten ladataan esim. sekvenssin käynnistyksen yhteydessä siirtobitti ( 1 ) siirtorekisterin aloitusbittiin. Tämä voidaan tehdä sanan kopiointikäskyllä MOV(021). Käskyyn tutustutaan myöhemmin. 79
SFT(010)-käskyllä on kolme tuloa: Ylin on Datatulo, joka siirtää joka kellotuksella tilaansa rekisterin ensimmäiseen bittiin. Nyt tuloon luetaan 0 -tilaa järjestelmäbitistä P_Off, joka on aina 0. Keskimmäinen tulo on kellotustulo. Jokaisella tulon nousevalla reunalla siirtorekisterin bittikuvio siirtyy yhden bitin eteenpäin. Rekisterin sisältö on muuten pelkkää 0 -tilaa äsken ladattua siirtobittiä 1 lukuunottamatta. Siis siirrämme tavallaan tätä 1 -bittiä eteenpäin. Rekisterin viimeinen bitti menetetään aina siirrossa. Alin tulo nollaa rekisterin sisällön aktivoituessaan. Rekisteri ei siis kellotu, jos tämä tulo on aktiivinen. Käynnistyksessä kopioidaan desimaalivakioarvo 1 sanaan Pesu_Seq. Tällöin kaikki muut, paitsi bitti 00, menevät arvoon 0. SFT(10)-käskyä ohjelmoitaessa on nimetty sana H0 nimellä Pesu_Seq. Toki sanan käytettävät askelbitit nimetään vielä erikseen. 80
7.5.4 Etenemisehto SFT(10)-käskylle Piiri koostuu yleensä rakenteesta, missä kukin ryhmä alkaa siirtorekisterin askelbitillä, jonka kanssa sarjassa on bitti, joka määrää siirtymisehdon seuraavaan askeleeseen. Bitti voi olla apumuisti, johon jossain toisessa virtapiirissä on koottu useita ehtoja yhteen. Jokainen askeleesta siirtyminen kootaan näin OR-kytkennällä yhteen. Näiden kanssa voidaan laittaa siirtobitti käänteisenä sarjaan siirron onnistumiseksi. SFT(010)-käskyn kellotustulohan vaatii nousevan reunan toimiakseen, se varmistetaan tällä avautuvalla koskettimella. Kuvan piiristä on myös hyvä monitoroida sekvenssin etenemistä. 7.5.5 Lähtöjen ohjaukset Eli askeleiden toimenpiteet kootaan ohjelman loppuun. Toki täälläkin voidaan vielä käyttää lisäehtoja ohjauksiin askelbittien lisäksi. 81
8 AJASTIMET CJ1M-logiikoissa on kuusi erilaista ajastinta. Ajastimet ovat tyypiltään vetohidasteisia. Perusajastimen TIM aikayksikkö on 100 ms ja se käyttää BCD-lukujärjestelmää. Kun ajastinta ohjaava akun tila aktivoituu eli suoritusehto käy toteen, alkaa ajan laskenta. Lähes kaikki ajastimet laskevat aikaa alaspäin asetusarvosta nollaan. Kun ajastimen oloarvo on nolla, asettuu ajastimen lippubitti. Ajastimen suoritus on siis akkupohjainen. Ajastin laskee aikaa vain, jos sitä ohjaava kosketin (koskettimet ovat) on kiinni. Ajastimen asetettua ajastimen lippubitti pysyy 1-tilassa niin kauan, kun akku on aktiivinen. Ajastimet löytyvät CX-Programmerissa käskyistä Instructions (I). Samat ajastimet löytyvät sekä BCD-koodattuna että binäärisinä (lue kymmenjärjestelmän mukaisina). Ajastin Resoluutio Suunta BCD-ajastin Binääri-ajastin Perusajastin 100ms SV-> 0 TIM TIMX Pika-ajastin 10ms SV -> 0 TIMH(015) TIMHX(551) Pikapika-ajastin 1ms SV -> 0 TMHH(540) TMHHX(552) Pitkä ajastin 100ms SV -> 0 TIML(542) TIMLX(553) Totaaliajastin 100ms 0-> SV TTIM(087) TTIMX(555) Monilähtöajastin 100ms 0-> SV MTIM(543) MTIMX(554) Samassa logiikassa voi käyttää vain joko BCD- tai binääriajastimia/laskureita. EI molempia. Valinta tehdään logiikan Properties-ikkunan kautta. Huomaa, että C-sarjan laitteissa, CPMx, CQM1, C200Hx, ajastimia on vähemmän ja ne ovat BCD-koodia käyttäviä. 8.1 Perusajastin TIM Perusajastimella TIM pärjää oikein mainiosti. Tässä vihkossa käsitellään vain tämä ajastin. Ajastin tarvitsee siis ohjausehdon. Ehdon käydessä toteen, alkaa ajastimen oloarvo pienentyä 100ms välein yhdellä. Kun ehto edelleen on tosi ja oloarvo saavuttaa arvon nolla, asettuu ajastin. Tällöin sen lippubitti menee arvoon 1. Tämä tilanne pysyy niin pitkään, kun ohjausehto on tosi. Kun ajastimen ohjaus menee epätodeksi, eli ohjaava kosketin avautuu, niin ajastin resetoituu. Eli oloarvo palautuu asetusarvoon ja lippubitti nollautuu. TIM-ajastimella ei ole muistia. TIM määritellään näin. Ohjelmoidaan ensin ohjauskosketin(koskettimet) ja valitaan I. Kirjoitetaan Instruction-kenttään TIM. Operands-osiosta huomataan, että TIM-ajastimella on kaksi operandia. Ensimmäinen operandi on ajastimen numero, jonka datatyyppi on vakio NUMBER. Jos numeroa ei haluta symboloida, riittää kun klikataan ensimmäiselle operandiriville ja kirjoitetaan siihen ajastimen numero. Kun ajastimen lippubitille luodaan symboli, jolle kirjoitetaan myös kommenttia, niin tämä kommentti tulee näkymään symboloimattoman ajastinnumeron yhteydessä. Mikäli numero kuitenkin halutaan symboloida, niin klikataan rivin päässä olevaa...painiketta. 82
Painike avaa Find Symbol-ikkunan, jossa voidaan hakea jo luotu symboli listasta tai sitten määrittää uusi. Alla olevassa kuvassa määritykset ajastimen numerolle. Kun määritykset kuitataan, ikkuna suljetaan ja palataan Instruction-ikkunaan, jossa äsken tehdyt/valitut tiedot on näkyvissä. Meitä muistutetaan vielä, että ajastinnumero saa olla välillä 0...4095. 83
Määritetään vielä ajastimen asetusarvo operandiin kaksi. Asetusarvo voi olla vakio (BCD-vakion tunnus # eteen) tai sanaosoite. Symboloidun muuttujan datatyypin tulee tällöin olla UINT_BCD. Vakiota ei nyt kannata symboloida. Kuvassa on asetusarvoksi annettu vakioarvo #300. Tämä vastaa perusajastimen TIM aikaa 300,0s. Kuittauksen jälkeen ajastinlohko on valmis. Tämä on aikaa ohjaava eli kirjoittava käsky. Ajastuksen tulosta luetaan koskettimella, joka ohjautuu tämän ajastimen tilan perusteella. Tässä tapauksessa koskettimen osoite on T5. T tarkoittaa ajastinmuistialuetta ja 5 ajastinmuistialueen sanaa. Ajastimen kosketin määritellään seuraavasti. 84
Allaolevissa kuvissa on itse ajastin sekä sen kosketin ohjelmoitu samaan virtapiiriin. Näin ei tietenkään tarvitse olla. Ajastimen koskettimia voi olla useita ympäri ohjelmaa, mutta samannumeroinen ajastinlohko saa esiintyä vain kerran. Kun kosketin H00.08 sulkeutuu vasemanpuoleisessa kuvassa, alkaa ajastimen oloarvo sanassa T0005 vähentyä 0,1 s:n portaissa. Kun aika on kulunut 300,0 s:n kuluttua loppuun, ohjautuu bitti T0005 1 -tilaan, ja ohjaa bitin W40.00 päälle. Kun H00.08 menee 0-tilaan, käy samoin bitille T0005. Ajastimen oloarvoksi palautuu asetusarvo #3000. Jos ohjausbitti H00.08 ei pysy 1-tilassa hidastusaikaa, palautuu oloarvoksi asetusarvo #3000, eikä bitti T0005 ehdi tällöin ohjautua 1 -tilaan. Siispä jos ajastus käynnistetään pulssista, niin silloin tulee ajastimen ohjaukseen käyttää pitopiiriä. Oikeanpuoleissa kuvassa ei ajastinnumeroa ole symboloitu, joten lippubitin kommentti näkyy numeron kommenttina. Asetusarvo tulee muuttujasta Linkousaika, joka käyttää datasanaa D18. Jos tarvitaan ajastuksia, jotka ovat pidempiä kuin 999,9 s, niin tällöin käytetään muita ajastimia, binääriajastimia tai laskureita ja järjestelmäpulsseja. Laskurit säilyttävät myös oloarvonsa sähkökatkon yli, ajastimet eivät Totaaliajastinta TTIM(087)/TTIMX(555) lukuunottamatta. Lähinnä totaaliajastinta varten on käytössä ajastimien ja laskureiden resetointikäsky CNR(545)/CNRX(547). 85
9 LASKURIT CJ1M-logiikoissa on kaksi erilaista laskuria. Laskurien toiminta muistuttaa ajastimen toimintaa. Merkittävin ero on, että nyt lasketaan pulsseja, eli laskentatulon nousevia reunoja ajan sijaan. Laskurit ovat myös muistavia käskyjä. Niiden oloarvot eivät resetoidu sähkökatkossakaan. CJ1Mlogiikoissa laskureilla ja ajastimilla molemmilla on omat muistialueensa, joten nyt ei tarvitse varoa ajastimien ja laskureiden päällekkäisyyksiä, kuten C-sarjan laitteilla. Laskurit löytyvät CX-Programmerissa käskyistä Instructions (I). Samat laskurit löytyvät sekä BCDkoodattuna että binäärisinä (lue kymmenjärjestelmän mukaisina). Ajastin Suunta BCD-laskuri Binäärilaskuri Peruslaskuri SV-> 0 CNT CNTX Ylös/alaslaskuri SV -> 0, 0->SV CNTR(012) CNTRX(548) Samassa logiikassa voi käyttää vain joko BCD- tai binääriajastimia/laskureita. EI molempia. Valinta tehdään logiikan Properties-ikkunan kautta. 9.1 Laskuri CNT Laskurissa on kaksi tuloa, ylempi laskentatulo, joka jokaisella nousevalla reunalla vähentää laskurin oloarvoa yhdellä, sekä alempi resetointitulo, joka palauttaa laskurin oloarvon asetusarvoksi ja resetoi laskurin lippubitin. Laskuri ohjelmoidaan samaan tapaan kuin ajastinkin. Ylempi tulo on laskentatulo ja alempi on reset. Laskuri ei laske, jos resettulo on aktiivinen. Laskurin asetusarvo annetaan vakiona tai osoitteena. Myös osoitteesta löytyvän arvon tulee olla BCD-luku BCD-laskureille. Muutoin virhebitti P_ER asettuu. Kuvassa laskurin editointi-ikkuna. Nyt asetusarvo tulee datasanasta D0 Esipesu_SV. 86
Kuvan laskuri laskeen Pesu_Askeleella3 1 sekunnin järjestelmäkellopulsseja. Kun pulsseja on laskettu sanan D0 Esipesu_SV arvon verran saa laskurin oloarvo arvon nolla, asettuu lippubitti, nyt C0000. Lippubitti resetoituu vain laskurin resettulon aktivoitumisella, joka tapahtuu kun joku kolmesta koskettimesta sulkeutuu. 9.2 Ylös/alaslaskuri CNTR(012) On ympäripyörivä laskuri. Laskurilla kaksi laskentatuloa; ylöslaskeva II ja alaslaskeva DI sekä resettulo R. Laskuri asettuu ylöspäin laskettaessa asetusarvon saavuttamisen jälkeisellä pulssilla. Jos asetusarvo on #5, niin toiminta ylöspäin on... 3, 4, 5, 0 ( lippubitti aktivoituu), 1 (lippubitti resetoituu). Alaspäin laskettaessa toiminta on seuraava...2, 1, 0, 5 ( lippubitti aktivoituu), 4 (lippubitti resetoituu). 9.3 Pikalaskurit Kun tarvitaan lukea suurempitaajuisisia pulssijonoja, kuin mitä ohjelmasykli sallii, tarvitaan keskeytypohjaista tulojen luentaa. CPU-malleissa 21, 22 ja 23 on pikalaskurit HSC0 ja HSC1, jotka pystyvät laskemaan pulsseja aina 100 khz taajuuteen asti. Laskuri otetaan käyttöön ja sen toiminta määritellään Settings -ikkunan Built-in Input Setting -näkymässä. MIL-liittimen tuloja voidaan asetella myös keskeytystuloiksi ja edelleen keskeytyslaskureiksi.. 87
10 DATAN KOPIOINTI-, SIIRTO- JA VERTAILUKÄSKYJÄ Tässä luvussa käsittelemme yleisimpiä käskyjä, joiden avulla voimme kopioida, siirtää tai vertailla yhden tai useamman sanan mittaista dataa. Datakäskyt voivat joko jatkuvasuoritteisia tai kertasuoritteisia. Jatkuvasuoritteisia käskyjä suoritetaan niin kauan, kun ohjaava kosketin on kiinni. Kertasuoritteinen eli differentiaalinen käsky suoritetaan vain yhden kerran koskettimen sulkeutuessa (eli akun nousevalla reunalla). Differentiaalinen käsky määritetään ja tunnistetaan symbolilla @ käskynimen edessä. Jos käskyjen suoritus ei esim. ohjelmointivirheestä johtuen onnistu, niin virhebitti P_ER ohjautuu päälle. Tätä voi lukea koskettimella heti käskyjen jälkeen vian selvittämiseksi ongelmatilanteissa. 10.1 Datan osoittaminen ja vakioarvojen tunnukset Yleensä käskyissä voidaan data-arvo antaa vakiona tai osoittaa sanaa, josta arvo löytyy. Näiden lisäksi osoitus voidaan tehdä epäsuorasti. Epäsuoraa osoitusta voidaan tehdä ainoastaan D- datamuistimuistialueella. BCD-pohjainen epäsuora osoitus ilmaistaan käyttämällä D-osoitteen edessä asteriskiä, eli *D XXXX. Binääripohjaisen epäsuoran osoituksen tunnus on @, eli @D XXXX. Kun epäsuora osoitus on määritelty, data haetaankin sanassa D XXXX viitatusta D- sanasta. MOV(21)-käskyn yhteydessä on esimerkki epäsuorasta osoituksesta. Vakioarvo voidaan antaa CX-Programmerissa usealla tapaa. Arvotunnukset vakioille ja monitoroituville datamuuttujille # Hex/BCD arvo & etumerkitön desimaaliarvo (binäärikoodi) +/- etumerkillinen desimaaliarvo (binäärikoodi) tai liukuluku- eli reaaliarvo BCD-luvulle ei tarvitse antaa #-tunnusta arvon syöttökentässä, jos muuttujan symbolin datatyypiksi on määritelty jokin BCD-formaateista 10.2 Datakäskyjen ohjelmointi CX-Programmer opastaa datakäskyjen ohjelmoinnissa. Kuvassa nähdään MOV(021)-käskyn ikkuna. Instructionkentän alla nähdään käskyn mausteet, nyt voidaan valita differentiaalisuus (@) sekä välitön virkistys (!). Operandin 1 kerrotaan olevan Source Word eli lähde, joka voi sanaosoite alla näkyviltä muistialueilta, hex/bcd vakio #, etumerkitön desimaalivakio & tai etumerkillinen vakio +/-. Datatyyppi symbolille voi olla mikä tahansa paitsi BOOL eli bittityyppinen. 88
10.3 Sanan kopiointikäsky MOV(021), @MOV(021) MOV(021)-käsky lienee eniten käytetyin datakäsky. Se kopioi koko lähdesanan (Source) sisällön tai vakioarvon koko kohdesanaan (Destination). Kuvassa jatkuvasuoritteisen MOV(021)-käskyn määritysikkuna, jossa Operandi 2 on aktiivinen. Edellä oli jo Operandin 1 eli lähdeosoitteen /-arvon ohjeet. Operandi 2 on kohdeosoite, joka voi olla opasteen mukaisilla muuttujamuistialueilla. Luodaan samalla kohdeosoitteen muuttuja klikkaamalla...-painikkeesta. Find Symbol -ikkunan yläosassa voidaan valita symbolilista ja datatyyppi, jonka perusteella symbolin etsintä tehdään. Nyt niitä ei tarvitse muuttaa, koska luomme symbolin, jonka datatyyppi on UINT, sanaan D10. 89
Kuvassa nähdään äsken määritelty käsky ohjelmassa. Ohjausehtona tässä Pesu1-tulobitti 0.10. Nyt vakioarvon &1 kopiointia Pesuohjelma_Nro-sanaan D10 tapahtuu aina, kun Pesu1-kosketin on kiinni. Jos kertasuoritteinen kopionti riittää, niin vaihtoehtoja on useita. 1. Muutetaan MOV(021)-käsky kertasuoritteiseksi 2. Lisätään reunantunnistus Pesu1-koskettimeen 3. Ohjelmoidaan reunantunnistusfunktio DIFU(013) Pesu1-koskettimesta ja käytetään sen apumuistia MOV(021)-käskyn ohjaukseen. Seuraavassa esimerkki binääripohjaisesta epäsuorasta muistinosoituksesta MOV(21)-käskyn yhteydessä. Pesuohjelma_Nro -sanan D10 tieto kopioidaan ohjaustulon nousevasta reunasta Tilasto_Osoitin-sanan D100 binääriarvon osoittamaan D-sanaan. MOV(021) tai MVN(022) -käskyillä ei voi muuttaa ajastimien tai laskureiden oloarvoja. BSET(071)-käskyllä tämä onnistuu. 90
10.4 Sanan kopiointikäsky MVN(022), @MVN(022) Toimii kuten MOV(021), mutta kopioikin lähdesanan komplementin kohdesanaan. Komplementointi tarkoittaa sitä, että kukin lähdesanan tai vakion bitti invertoidaan eli nollat käännetään ykkösiksi ja päinvastoin. 10.5 Digitin kopiointikäsky MOVD(083), @MOVD(083) MOV(021)- käsky kopioi kokonaisia sanoja. Jos halutaan kopioida sanan osia, on käytettävä muita käskyjä. Digitin kopiointikäskyllä MOVD(083) voidaan kopioida lähdesanasta 1...4 digittiä haluttuun kohtaan kohdesanassa. Käskyä (tällöin tietysti useampi MOVD(083)) voidaan käyttää jaettaessa yhden sanan tietoa useampaan sanaan tai päinvastoinkin. Käsky kohdistuu vain määriteltyihin digitteihin kohdesanassa. Määrittelemättömät digitit säilyttävät vanhat arvonsa. Operandi 1 on lähdesana. Operandi 3 on kohdesana. Operandi 2 on ohjaussana, jonka perusteella määritellään ensimmäinen kopioitava digitti lähdesanassa, digittien määrä sekä ensimmäinen digitti kohdesanassa seuraavasti: Digitti: 3 2 1 0 Ensimmäinen digitti lähdesanassa (0...3) Digittien määrä (0...3) 0 = 1 digitti 1 = 2 digittiä 2 = 3 digittiä 3 = 4 digittiä Ensimmäinen digitti kohdesanassa (0...3) Ei käytössä, aseta arvoon 0 91
10.6 Blokin kirjoitus BSET(071), @ BSET(071) Blokilla tarkoitetaan peräkkäisten sanojen muodostamaa ryhmää. Blokin kirjoituskäskyllä kirjoitetaan tarvittava data haluttuun määrään peräkkäisiä sanoja. Käskyssä määritellään kirjoitettava data vakiona, suorana tai epäsuorana osoituksena sekä kohdealueen ensimmäinen ja viimeinen sana. Operandi 1 on kirjoitettava data. Operandi 2 on kohdealueen ensimmäinen sana. Operandi 3 on kohdealueen viimeinen sana. Kuvassa ohjelman ensimmäisellä syklillä nollataan alue D0011...D0099. 10.7 Blokin kopiointi XFER(070), @XFER(070) Käsky kopioi joko jatkuva- tai kertasuoritteisesti määritellyn määrän sanoja lähdealueelta kohdealueelle. Huomaa taas ohjelmoitessa CX-Programmerin opastus ensimmäisen operandin ohjelmoinnin suhteen (UINT eli etumerkitön kymmenluku). Sanojen määrä annetaan nyt tunnuksella &. Jos vakio annetaan tunnuksella #, on arvon oltava vastaava heksaluku. Operandi 1 määrää kopioitavien sanojen määrän, 10 Operandi 2 osoittaa ensimmäisen lähdesanan D20, eli kopioidaan sanat D20.. D29. Operandi 3 osoittaa ensimmäisen kohdesanan, johon kopioituu D20:n sisältö. 92
10.8 Sanavertailu CMP(020) Vertailukäskyllä CMP(020) verrataan kahta etumerkitöntä sanan mittaista arvoa toisiinsa, kun käsky on suorituksessa. Vertailun tulos muodostuu järjestelmäalueen bitteihin: P_GT Suurempi kuin, eli ensimmäinen vertailtava on suurempi kuin toinen P_EQ Yhtäsuuri, eli vertailtavat ovat yhtäsuuria P_LT Pienempi kuin, eli ensimmäinen vertailtava on pienempi kuin toinen. Kaikki vertailukäskyt käyttävät samoja bittejä. Lisäksi monet käskyt käyttävät yhtäsuuri-bittiä P_EQ ilmaisemaan käskyn tuloksen arvoa 0000. Tästä johtuen on vertailun tulos -bittejä aina käytettävä heti vertailun jälkeen, jotta ohjaukset olisivat oikein. Suositeltavaa on myös vertailun tulos -bittien ohjaamien apumuistipaikkojen käyttö. Itse vertailua ja vertailun tuloksia tulee ohjata samalla koskettimella, jotta ne olisivat aina yhtäaikaa suorituksessa. Näin tulosbitin ohjaama apumuistibitti ei voi mennä päälle kuin oikean vertailun ohjaamana. Vertailun voi tehdä kumminpäin vain, mutta yleisohje selvyyden vuoksi olkoon, että ensimmäisenä vertailusanana käytetään muuttujaa ja toisena sitä, mihin verrataan. Vertailun tulokset on sijoitettu ohjelmaan heti vertailukäskyn jälkeen. Vertailun tulos -bittien tilat näkyvät monitoroinnissa viimeisen vertailun tai datakäskyn perusteella, joten älä aina usko mitä näet näiden bittien kohdalla. Tarkista vertailun tulos apumuisteista. CMP(020)-käskyyn ei voi ohjelmoida differentiaalisuutta. Tee kertasuoritteisuus tarvittaessa ohjaavaan bittiin. Käskystä löytyy myös tuplasanoja vertaileva versio CMPL(060). 93
10.9 Aluevertailu ZCP(088) Käsky on jalostetumpi versio CMP(020)-käskystä. Nyt yhdellä käskyllä voidaan korvata kaksi CMP(020)-käskyä. ZCP(088) vertaa vertailtavaa etumerkitöntä arvoa arvohaarukkaan. Vertailun tulos muodostuu jälleen järjestelmäalueen bitteihin: P_GT Suurempi kuin, eli vertailtava on suurempi kuin yläraja P_EQ Yhtäsuuri, eli vertailtava on yhtäsuuri tai pienempi kuin yläraja tahi yhtäsuuri tai suurempi kuin alaraja. P_LT Pienempi kuin, eli vertailtava on pienempi kuin alaraja. Operandi 1 on vertailtava data. Operandi 2 on vertailun alaraja. Operandi 3 on vertailun yläraja. Käskystä löytyy myös tuplasanoja vertaileva versio ZCPL(116). 10.10 Lohkoaluevertailu BCMP(068) BCMP(068)-käskyn voidaan taas ajatella koostuvan useista ZCP(088)-käskyistä. BCMP(068)- käskyyn määritellään 16 etumerkitöntä aluetta ala- ja ylärajoineen. Käsky vertaa vertailuarvoa aluetaulukkoon ja ilmoittaa aluetta vastaavan tulossanan bitin 1 -tilalla arvon olevan tietyn alueen sisällä. Sopivia käyttökohteita ovat esim. pyörimisliikettä mittaavat keskeytyslaskurit, joiden arvoa eli kiertymiskulmaa mitataan ja siihen perustuen tehdään ohjauksia. 94
Operandi 1 : Vertailtava arvo 16 bit etumerkitön sana Operandi 2 : Vertailutaulukon alku. Taulukon pituus on 16*2=32 sanaa. Sanaparin ensimmäinen sana määrää alueen alarajan ja toinen ylärajan. Operandi 3 : Tulossana, jonka, bitti 00 =Alue 00 (nyt D600-D601) bitti 01 =Alue 01 (nyt D602-D603) bitti 15 =Alue 15 (nyt D630-D631) 10.11 Blokkivertailija MCMP( 019) MCMP(019)-käskyllä verrataan kahta 16 sanan mittaista aluetta toisiinsa sanapareittain. Vertailun tulos muodostuu tulossanaan seuraavasti. Jos alueen 1 ensimmäisen sanan arvo on sama kuin alueen 2 ensimmäisen sanan, niin tulossanan bitti 00 saa arvon 0, arvojen erotessa on bitin arvo 1. Operandi 1 : Ensimmäisen 16 sanan mittaisen alueen ensimmäinen sana Operandi 2 : Toisen 16 sanan mittaisen alueen ensimmäinen sana Operandi 3 : Tulossana, jonka, bitti 00 =Alue 1/sana 1 vs. Alue2/sana 1 bitti 01 =Alue 1/sana 2 vs. Alue2/sana 2 bitti 15 = Alue 1/sana 16 vs. Alue2/sana 16 Esimerkkikuvassa ohjataan vertailun tulossanan kolmella alimmalla bitillä XFER(070)-käskyä, joka palauttaa varsinaiset muuttuneet parametrit vara-alueella. 95
10.12 Läpiohjelmoitavat symboliset vertailijat CS1/CJ1/CP1/C200Hx-ZE-logiikoissa on läpiohjelmoitavia vertailukäskyjä. Käskyt suorittavat vain käskylle ominaisen vertailun <, <=, =, >=, >, <>. Vertailun käydessä toteen käskyt vastaavat sulkeutunutta kosketinta, muulloin auki olevaa kosketinta. Käskyistä löytyy eri vertailufunktioiden lisäksi eri versioita, esim. yhtäsuuruusvertailu = vertaa kahta etumerkitöntä sanan mittaista arvoa toisiinsa =S vertaa kahta etumerkillistä sanan mittaista arvoa toisiinsa =L vertaa kahta etumerkitöntä tuplasanan mittaista arvoa toisiinsa =SL vertaa kahta etumerkillistä tuplasanan mittaista arvoa toisiinsa =F vertaa kahta reaaliarvoa toisiinsa =$ vertaa kahta merkkijonoa toisiinsa Kuvassa vertaillaan INT-tyyppistä Jepulis_Jee-sanaa ensin etumerkillisellä suurempi kuin -käskyllä >S vakioarvoon -10. Tämän kanssa on sarjaan kytketty etumerkillinen pienempi kuin -käsky <S, joka vertaa muuttujaa vakioarvoon +10. Nyt molemmat vertailuehdot täyttyvät muuttujan arvolla -3 ja T_OKbitti saa ohjauksen. 96
10.13 Sanasiirtorekisteri WSFT(016), @ WSFT(016) Siirtorekisteri voidaan toteuttaa myös sananmittaiselle datalle käyttämällä WSFT(016)-käskyä. Käskyn operandeissa määritellään rekisteriin luettava lähdedata, rekisterin ensimmäinen ja viimeinen sana. Kun käsky (yleensä kertasuoritteisesti) tulee suoritukseen, siirretään data seuraavaan sanaan. Ensimmäiseen sanaan tulee data-arvoksi lähdedatan arvo ja viimeisen sanan data menetetään. WSFT(016)-käskyn operandit: Operandi 1 : Siirtorekisteriin luettava data Operandi 2 : Siirtorekisterin ensimmäinen sana Operandi 3 : Siirtorekisterin viimeinen sana Esimerkki liittyy FIFO-rekisteriin, joka on tehty epäsuoraa muistinosoitusta käyttäen. Kuvassa on FIFOsta lukeminen, jossa on käytetty @WSFT(016)-käskyä siirtämään FIFO-pinon dataa siten, että sanasta D199 voidaan lukea aina vanhin data. Luettaessa FIFOa sen alimpaan sanaan D101 siirretään vakioarvo &0000. Ennen FIFOn ohjausta luetaan sen hetkinen vanhin arvo talteen MOV(021)-käskyllä. FIFOn ohjauksen jälkeen kasvatetaan vielä osoitinsanan D100 arvoa binäärisellä lisäys- eli inkrementointikäskyllä. 97
11 DATAN MUUNNOSKÄSKYT Näillä käskyillä voimme muuttaa datan esitystapaa. Ohjelmoitsija joutuu aina datakäskyjen eli sanapohjaista tietoa käsittelevien käskyjen kohdalla miettimään käytettävän lukujärjestelmän ja symbolin datatyypin. Valintoihin on monia syitä käytettävissä olevat käskyt IO-liityntöjen, esim. analogiliityntöjen käyttämät lukujärjestelmät ulkopuolisten liitäntöjen, kuten käyttöliittymien sallimat lukujärjestelmät tottumukset. Kun lukujärjestelmä on valittu, valitaan sen perusteella muuttujan datatyyppi. Datatyyppi on oikeastaan tulkki, joka kääntää bittikuvioisen arvon haluamallemme esitystavalle. Kuvassa sama arvo on esitetty CX-Programmerin Watch- eli monitorointi-ikkunassa eri esitystavoilla. Allaolevassa kuvassa on monitoroinnissa bittikuvio, joka ei ole BCD-järjestelmän mukainen. Siksi BCD-arvoa ei voida monitoroida. Käytössämme on datakäskyjä, joilla voidaan vaihtaa lukujärjestelmä toiseksi, kuten BCDetumerkitön 10-lukubinääri tai 11.1 BCD-Binäärimuunnos BIN(023), @BIN(023) Käskyllä suoritetaan muunnos joko jatkuva- tai kertasuoritteisesti. Muunnoksessa lähdesanan BCD-luku (UINT_BCD) muunnetaan vastaavaksi etumerkittömäksi 10-luvuksi (UINT) kohdesanaan. Toisinaan joudutaan tekemään muunnoksia, jotta esimerkiksi voitaisiin suorittaa matemaattisia tai vertailevia operaatioita sanoille, joista toinen on BCD- ja toinen binäärikoodattu. 11.2 Binääri-BCD-muunnos BCD(024), @BCD(024) Käskyn suoritusta ohjaavan akun ollessa aktiivinen suoritetaan muunnos joko jatkuva- tai kertasuoritteisesti. Muunnoksessa lähdesanan etumerkitön 10-luku (UINT) muunnetaan vastaavaksi BCD-luvuksi (UINT_BCD) kohdesanaan. Jos lähdesanan arvo ylittää heksa-arvon 270F, ylitetään muunnostulos 9999 ja tästä on seurauksena se, että käskyä ei suoriteta ennen kuin arvo alittuu. Näistä käskyistä löytyy myös 32-bittiset versiot, BINL(058 ja BCDL(059). 98
11.3 Binääri-liukulukumuunnos FLT(452), @FLT(452) Käskyn suoritusta ohjaavan akun ollessa aktiivinen suoritetaan muunnos joko jatkuva- tai kertasuoritteisesti. Muunnoksessa 16-bittinen etumerkillinen 10-luku (INT) muunnetaan 32- bittiseksi liukuluvuksi (REAL). 11.4 Liukuluku-binäärimuunnos FIX(450), @FIX(450) Käskyn suoritusta ohjaavan akun ollessa aktiivinen suoritetaan muunnos joko jatkuva- tai kertasuoritteisesti. Muunnoksessa saadaan 16-bittinen etumerkillinen 10-luku (INT) 32-bittisestä liukuluvusta (REAL). Näistä käskyistä löytyy myös kokonaisluvun 32-bittiset versiot FLTL(453) ja FIXL(451). Kokonaislukuja voidaan muuntaa myös tuplatarkkuuksisiksi liukuluvuiksi (LREAL). Kuvassa esimerkki muunnoksista UINT_BCD > UINT > REAL > INT -> UINT_BCD 99
12 ARITMETIIKKAKÄSKYT CJ1M-logiikoissa perusaritmetiikkakäskyt löytyvät operaattoritunnuksilla +, -, *, / niin sana- kuin tuplasana-arvoille sekä eri lukujärjestelmille. Pelkällä operaattoritunnuksella käsky laskee sanan mittaisia kymmenlukuja. Käskytunnuksissa seuraavat lisäkirjaimet tarkoittavat poikkeuksia B = BCD = BCD-järjestelmän mukaisesti laskeva käsky L = Long = 32 bit eli tuplasanoja laskeva käsky C = Carry = eli muistibittiä käyttävä käsky F = Float = reaali- eli liukuluku D = Double = pitkä liukuluku Otetaan esimerkkinä yhteenlasku- ja lisäyskäskyt, joiden tunnus on +... Suluissa symbolin datatyyppi, jota suositellaan käytettäväksi muuttujilla kyseisten käskyjen yhteydessä. + = 16 bit kymmenjärjestelmäarvojen yhteenlasku ilman carry-bittiä (INT) ++ = 16 bit kymmenjärjestelmäarvon inkrementointi (UINT) ++B = 16 bit BCD-arvon inkrementointi (UINT-BCD) ++BL = 32 bit BCD-arvon inkrementointi (UDINT-BCD) ++L = 32 bit kymmenjärjestelmäarvon inkrementointi (UDINT) +B = 16 bit BCD-arvojen yhteenlasku ilman carry-bittiä (UINT-BCD) +BC = 16 bit BCD-arvojen yhteenlasku carrybitillä (UINT-BCD) +BCL = 32 bit BCD-arvojen yhteenlasku carrybitillä (UDINT-BCD) +BL = 32 bit BCD-arvojen yhteenlasku ilman carrybittiä (UDINT-BCD) +C = 16 bit kymmenjärjestelmäarvojen yhteenlasku carrybitillä (INT) +CL = 32 bit kymmenjärjestelmäarvojen yhteenlasku carrybitillä (DINT) +D = 64 bit eli pitkien liukulukujen yhteenlasku (LREAL) +F = 32 bit liukulukujen yhteenlasku (REAL) +L = 32 bit kymmenjärjestelmäarvojen yhteenlasku ilman carrybittiä (DINT) Tarkastellaan ensin hieman aritmeettisia operaatioita, jotka on tarkoitettu binääri- eli kymmenjärjestelmäkokonaisluvuille. Binääriluvuilla laskettaessa kannattaa käyttää UINT/INTtyyppisiä muuttujia. Tämän jälkeen muutamia käskyjä, jotka on tarkoitettu BCD-koodatuille 16-bittisille kokonaislukusanoille (Symbolin datatyyppi UINT_BCD). Logiikoista löytyy käskyt myös 32- bittisille tuplasanoille (Symbolin datatyyppi UDINT_BCD). 100
12.1 Etumerkillisten kokonaislukujen yhteenlasku +(400), @+(400) Käsky laskee yhteen kaksi kymmenjärjestelmän mukaista arvoa. Käsky ei käytä Carry-bittiä. Kuten kuvasta nähdään, ohjaa CX-Programmer käyttämään +-käskylle INT-tyyppistä muuttujaa. Tällaisen sanan arvo voi olla välillä -32768...+32767. Sanan ylin bitti.15 toimii etumerkkibittinä, jos se on 1, niin arvo on negatiivinen. Vakioarvon voi antaa # eli heksalukuna & eli etumerkittömänä kymmenlukuna +/- eli etumerkillisenä kymmenlukuna +(400)-käskyllä on kolme operandia Operandi 1 lisättävä arvo Operandi 2 yhteenlaskettava arvo Operandi 3 tulossana summalle, pituus 16 bit Kuvassa Laske-bitin laskevalla reunalla on laskettu yhteen sanojen D202 ja D204 arvot. Summa on tulostunut sanaan D206. +50 + (-5) = +45. 101
12.2 Etumerkillisten kokonaislukujen vähennyslasku -(410), @-(410) Käsky laskee erotuksen kahdesta kymmenjärjestelmän mukaisesta arvosta. Käsky ei käytä Carrybittiä. -(410)-käskyllä on kolme operandia Operandi 1 arvo, josta vähennetään Operandi 2 vähennettävä arvo Operandi 3 tulossana erotukselle, pituus 16 bit Kuvassa Laske-bitin laskevalla reunalla on laskettu sanojen D202 ja D204 erotus, joka on tulostunut sanaan D206. +50 - (-5) = +55. 12.3 Etumerkillisten kokonaislukujen kertolasku *(420), @*(420) Käsky laskee tulon kahdesta kymmenjärjestelmän mukaisesta arvosta. Käsky ei käytä Carry-bittiä. Tulos varaa kaksi sanaa, joten huomioi tämä muistipaikkojen varauksissa. Tuloksen datatyypin on hyvä olla DINT, niin nähdään käskyssä koko tulos. *(420)-käskyllä on kolme operandia Operandi 1 kerrottava arvo Operandi 2 kertoja Operandi 3 tulossana tulolle, pituus 32 bit Kuvassa Laske-bitin laskevalla reunalla on laskettu sanojen D202 ja D204 tulo, joka on tulostunut tuplasanaan D206 (D206 alempi ja D207 ylempi sana). +50 * (-5) = -250. 102
12.4 Etumerkillisten kokonaislukujen jakolasku /(430), @/(430) Käsky jakaa kaksi kymmenjärjestelmän mukaista arvoa. Käsky ei käytä Carry-bittiä. Tulos varaa kaksi sanaa, joten huomioi tämä muistipaikkojen varauksissa. /(430)-käskyllä on kolme operandia Operandi jaettava arvo Operandi 2 jakaja Operandi 3 tulossana jakolaskulle, pituus 32 bit. Alempi sana sisältää osamäärän ja ylempi jakojäännöksen. Kuvassa Laske-bitin laskevalla reunalla on laskettu sanojen D202 ja D204 osamäärä, joka on tulostunut tuplasanaan D206 (D206 alempi ja D207 ylempi sana). +50 / (-5) = -10. Jakojäännöksen arvo sanassa D207 on 0000. 12.5 Binäärinen lisäyskäsky ++(590), @++(590) Käsky lisää kohdesanan arvoa yhdellä (Wd=Wd+1) binäärisesti. Lisäys tapahtuu joka sykli, kun jatkuvasuoritteinen käsky on ohjauksessa. Käyttämällä reunantunnistusta tapahtuu lisäys aina kertasuoritteisesti ohjauksen nousevasta reunasta. Käsky ei vaikuta P_CY-bittiin. Kun sanan arvo tavoittaa maksimin 65535, niin seuraavan inkrementoinnin jälkeen sanan arvo on 0000, eli toiminta on ympäripyörivä. Muuttujan datatyyppi voi olla UINT. 12.6 Binäärinen vähennyskäsky --(592), @--(592) Käsky vähentää kohdesanan arvoa yhdellä (Wd=Wd-1) binäärisesti. Vähennys tapahtuu joka sykli, kun se on jatkuvasuoritteinen. Käyttämällä reunantunnistusta tapahtuu vähennys aina kertasuoritteisesti akun nousevasta reunasta. Käsky ei vaikuta CY-bittiin. Kun sanan arvo tavoittaa minimin 0000, niin seuraavan dekrementoinnin jälkeen sanan arvo on 65535, eli toiminta on ympäripyörivä. Muuttujan datatyyppi voi olla UINT. Kuvassa on samaan virtapiirin tehty molemmat inkrementointi ja dekrementointikäskyt. Ohjaavissa koskettimissa on nousevan reunan tunnistus. 103
12.7 Muistibitin asetus STC(040), @STC(040) Käsky asettaa ns. carry-bitin P_CY, jota C-kirjaimella varustetut yhteen- ja vähennyslaskuoperaatiot käyttävät. Carry-bitti asettuu käskyjen suorituksesta, jos tulossanan maksimiarvo ylitetään. 12.8 Muistibitin nollaus CLC(041), @CLC(041) Käsky nollaa ns. carry-bitin P_CY. C-kirjaimella varustetut yhteen- ja vähennyslaskuoperaatiot käyttävät carry-bittiä, joten se on nollattava CLC(041)-käskyllä juuri ennen operaation suorittamista, mikäli sen ei haluta vaikuttavan tulokseen. Tällöin tietysti kannattaa käyttää käskyjä, jotka eivät käytä Carry-bittiä. Perinteiset C-sarjan logiikat CPM*, CQM1, C200Hx sisältävät vain Carry-bittiä käyttäviä yhteen- ja vähennyslaskukäskyjä, joten näiden kanssa tulee käyttää CLC(41)- käskyä. 104
12.9 BCD-kokonaisslukujen yhteenlasku +B(404), @+(404) Käsky laskee yhteen kaksi BCD-järjestelmän mukaista arvoa. Käsky ei käytä laskentaan Carrybittiä. CX-Programmer ohjaa käyttämään +B(404)-käskylle UINT_BCD-tyyppistä muuttujaa. Vakioarvon voi antaa # eli BCD-lukuna (# on myös heksalukujen tunnus, nyt arvo saa sisältää vain numeroita 0..9) +B(404)-käskyllä on kolme operandia Operandi 1 lisättävä arvo Operandi 2 yhteenlaskettava arvo Operandi 3 tulossana summalle, pituus 16 bit Kuvassa Laske-bitin laskevalla reunalla on laskettu yhteen sanojen D202 ja D204 arvot. Summa on tulostunut sanaan D208. 50 + 5 = 55. 12.10 BCD-kokonaisslukujen vähennylasku -B(414), @+(414) Käsky laskee yhteen kaksi BCD-järjestelmän mukaista arvoa. Käsky ei käytä laskentaan Carrybittiä. CX-Programmer ohjaa käyttämään -B(414)-käskylle UINT_BCD-tyyppistä muuttujaa. -B(414)-käskyllä on kolme operandia Operandi 1 arvo, josta vähennetään Operandi 2 vähennettävä arvo Operandi 3 tulossana erotukselle, pituus 16 bit Kuvassa Laske-bitin laskevalla reunalla on vähennetty sanasta D202 sanan D204 arvo. Erotus on tulostunut sanaan D208. 50-55 = 9995.????????? 105
Jos laskennan tulos on negatiivinen, niin carry-bitti (CY) asettuu ja tällöin kohdesanaan tulostuu 10 komplementti. Näin, koska BCD-käskyt käsittelevät vain positiivisia arvoja. Saadaksemme todellisen arvon, on vielä tehtävä toinen vähennyslasku, jossa vähennetään äsken saatu tulos nollasta tai vaihdetaan operandit 1 ja 2 toisinpäin. Kuvan ohjelma toimii niin, että jos D204 saa suuremman arvon kuin D202, niin P_CY-bitti asettuu ja suoritetaan myös toinen vähennyslasku ja sanaan D208 kirjoittuu positiivinen tulos. Merkiksi negatiivisesta tuloksesta asetetaan bitti W09.00 päälle. 106
12.11 BCD-kokonaisslukujen kertolasku *B(424), @*B(424) Kertolaskuoperaatio kertoo kaksi BCD-arvoa. Se ei käytä P_ CY-bittiä. Tulos on 32-bittinen, joten varaa kertolaskun tulokselle kaksi sanaa. Tuloksen symbolin datatyyppi on hyvä olla UDINT_BCD, jotta monitoroitaessa nähdään koko tulos. Käsky laskee tulon kahdesta BCD-järjestelmän mukaisesta arvosta. Käsky ei käytä Carry-bittiä. Tulos varaa kaksi sanaa, joten huomioi tämä muistipaikkojen varauksissa. *B(424)-käskyllä on kolme operandia Operandi 1 kerrottava arvo Operandi 2 kertoja Operandi 3 tulossana tulolle, pituus 32 bit Kuvassa Laske-bitin laskevalla reunalla on laskettu sanojen D202 ja D204 tulo, joka on tulostunut tuplasanaan D208 (D208 alempi ja D209 ylempi sana). 50 * 5 = 250. 12.12 BCD-kokonaisslukujen jakolasku /B(434), @/B(434) Jakolaskuoperaatio suorittaa jaon kahdelle BCD-arvolle. Se ei käytä P_ CY-bittiä. Tulos on 32- bittinen, joten varaa jakolaskun tulokselle kaksi sanaa. Tuloksen symbolin datatyyppi voi nyt olla UDINT_BCD tai UINT_BCD. /B(434)-käskyllä on kolme operandia Operandi jaettava arvo Operandi 2 jakaja Operandi 3 tulossana jakolaskulle, pituus 32 bit. Alempi sana sisältää osamäärän ja ylempi jakojäännöksen. Kuvassa Laske-bitin laskevalla reunalla on laskettu sanojen D202 ja D204 osamäärä, joka on tulostunut tuplasanaan D208 (D208 alempi ja D209 ylempi sana). 50 / 5 = 10. Jakojäännöksen arvo sanassa D209 on 0000. 107
12.13 BCD- lisäyskäsky ++B(594), @++B(594) Käsky lisää kohdesanan arvoa yhdellä (Wd=Wd+1) BCD-järjestelmän mukaisesti. Lisäys tapahtuu joka sykli, kun jatkuvasuoritteinen käsky on ohjauksessa. Käyttämällä reunantunnistusta tapahtuu lisäys aina kertasuoritteisesti ohjauksen nousevasta reunasta. Käsky ei vaikuta P_CY-bittiin. Kun sanan arvo tavoittaa maksimin 9999, niin seuraavan inkrementoinnin jälkeen sanan arvo on 0000, eli toiminta on ympäripyörivä. 12.14 BCD- vähennyskäsky --B(596), @--B(596) Käsky vähentää kohdesanan arvoa yhdellä (Wd=Wd+1) BCD-järjestelmän mukaisesti. Vähennys tapahtuu joka sykli, kun se on jatkuvasuoritteinen. Käyttämällä reunantunnistusta tapahtuu vähennys aina kertasuoritteisesti akun nousevasta reunasta. Käsky ei vaikuta CY-bittiin. Kun sanan arvo tavoittaa minimin 0000, niin seuraavan dekrementoinnin jälkeen sanan arvo on 9999, eli toiminta on ympäripyörivä. Kuvassa on samaan virtapiirin tehty molemmat inkrementointi ja dekrementointikäskyt. Ohjaavissa koskettimissa on nousevan reunan tunnistus. Yllä olevaan BCD-laskuriin on tehty valvonta seuraavassa kuvassa. 108
Sanassa D202 olevan BCD-laskurin oloarvoa tarkkaillaan perinteisen CMP(020) vertailun avulla. Laskurin sallittu arvohaarukka on 00..99. Mikäli oloarvon ollessa 99 tehdään vielä lisäys arvoon 100, niin tällöin palautetaan arvoksi takaisin 99 MOV(021)-käskyllä. Jos oloarvon ollessa 0 tehdään vähennys, niin tällöin laskurin arvoksi tulee 9999, niin vertailu ohjaa bitin W301.01 päälle, jonka ansiosta palautetaan laskuriin takaisin arvo 0. Huomaa sanan D202 arvo CMP(020)-käskyssä, se on UINT-arvo &80. Katsottaessa arvoja MOV(021)-käskyissä, nähdään oikea BCD-arvo #50. Sanaanhan vaikutetaan BCDlaskentakäskyillä. Sana D202 pitäisi symboloida, jotta joka käskyssä nähtäisiin arvo saman muotoisena. Käyttämällä muita vertailijoita saadaan erilainen ratkaisu. Toki myös lisääminen voidaan estää oltaessa yläraja-arvossa ja vähentäminen alarajassa. 109
12.15 Reaaliarvojen laskentaa Helpointa lienee laskea liuku- eli reaaliluvuilla. Näistä tässä pieni esimerkki laskennasta,, jossa tehdään toimilohkolla skaalaus. IN-muuttuja on kokonaisluku INT ja sen arvo on -2000. Tämä luku muunnetaan reaaliluvuksi FLT-käskyllä IN_Rmuuttujaan. Nyt sitten lasketaan reaaliluvuille kertolasku IN_R * GAIN, jonka tulokseen vielä lisätään OFFSETmuuttujan arvo Lopuksi tämä tulos OUT-R vielä kokonaistetaan FIX-käskyllä OUTmuuttujaan 110
13 LOOGISET KÄSKYT Loogisilla käskyillä käsitellään sanaa biteittäin ja suoritetaan näille loogisia operaatioita. 13.1 Komplementti COM(029), @COM(029) Käsky kääntää kohdesanan sisällön komplementiksi, eli nollat ykkösiksi ja päinvastoin. 13.2 Kahden komplementti NEG(160), @NEG(160) Käsky kääntää kohdesanan sisällön komplementiksi, eli nollat ykkösiksi ja päinvastoin ja lisää siihen ykkösen. Tekee siis vastaavan negatiivisen arvon (INT). 13.3 Looginen JA ANDW(034), @ANDW(034) Käsky tekee kahden sanan kullekin bitille AND-operaation ja muodostaa tulossanan vastaavaan bittiin bittien AND-operaation tuloksen. 1 0 1 1 1 0 0 1 0 1 0 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 0 1 1 1 0 0 1 0 1 0 0 0 0 0 0 Esimerkissä maskataan alin digitti pois Datasanasta1. 13.4 Looginen TAI ORW(035), @ORW(035) Käsky tekee kahden sanan kullekin bitille OR-operaation ja muodostaa tulossanan vastaavaan bittiin bittien OR-operaation tuloksen. 0 0 0 1 1 0 0 1 0 1 0 0 1 1 1 0 1 1 0 1 1 0 0 1 0 1 1 1 0 0 0 0. 1 1 0 1 1 0 0 1 0 1 1 1 1 1 1 0 Kätevä käsky lisättäessä arvoon negatiivinen etumerkkibitti ( bit 15 = 1 ) 13.5 Ehdoton TAI XORW(036), @XORW(036) Käsky tekee kahden sanan kullekin bitille XOR-operaation ja muodostaa tulossanan vastaavaan bittiin bittien XOR-operaation tuloksen. 1 0 0 1 1 0 0 1 0 1 0 0 1 1 1 0 1 1 0 1 1 0 0 1 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 1 0 111
14 TOIMILOHKO-OHJELMOINTI CX-ONE JA LOGIIKKAOHJELMOINTI Toimilohkot, Function Blocks (FB), ovat esimääriteltyjä ohjelmia tai toimintoja, joita voidaan käsitellä yhdellä käskyllä relekaavio-ohjelmassa. Samaa toimilohkoa voidaan kutsua useita eri kertoja relekaavio-ohjelmasta. Tämä onkin tärkein peruste toimilohkon luomiseksi. Sama ohjelmarakenne tehdään vain kerran muodostamalla siitä toimilohko. Ja sitten kutsutaan eri muuttujilla relekaavio-ohjelmasta. Osa laitteen A Ajastuspiiri 1 A T B X TI 1 #010 Y Z In pu t A n OhjelmaB n - Ohjelmointi sekä Input ja Output- Ajastuspiiri n A T B X TI n #010 Y Z O ut pu t Xn Yn Zn Osa laitteen A Toimilohkokut Toimilohkomäärit Toimilohkomall Ajastuspiiri 1 P O A1 B1 Ajastuspiiri 2 P O A2 B2 Device Control E EN A X B Y Z X1 Y1 Z1 Aseta input / output Device Control E EN A X B Y Z X2 Y2 Z2 Relekaavioohjelmaan Device Control E EN A X B Y Z Tähän asti toimilohko-ohjelmointi on korvattu Sysmac-logiikoissa erilaisilla aliohjelmaratkaisuilla, joissa käytössä ovat olleet joko makrofunktiot tai epäsuorat muistinosoitukset. Toimilohkoja tukevat CJ1- ja CS1- (3.0 / 4.0) sekä myös CP1H- ja CP1L-L ja CP1L-M--logiikat.. Toimilohkojen määrä / CPU riippuu CPU-tyypistä. CJ1M-logiikoilla maksimi on 128 lohkoa ja 256 kutsua, kun taas tehokkaimmilla CPU:illa arvot ovat 1024/ 2048. Lisäksi muistin koko voi rajoittaa myös käyttöä. Toimilohkot ohjelmoidaan joko relekaavio- (LD) tai strukturoitu teksti- (ST) muodossa. ST muoto on IEC 61131-3 mukainen. Toimilohkoon määritellään tulo-, lähtö- ja sisäisiä muuttujia. 112
Toimilohkokutsu relekaavio-ohjelmassa muotoutuu juuri näiden tulo- ja lähtömuuttujien perusteella. Käskyssä on vasemmalla sen tulot ja oikealla lähdöt. Kutsukäsky siis vaatii määritettäväksi tarvittavat parametrit. Toimilohkot voidaan tallettaa omiksi tiedostoiksi.cxf. Käytössä on myös Omronin valmiit toimilohkot, joita talvella 2008 on yli 600 kpl. Nämä ovat myös dokumentoitu omissa pdftiedostoissaan. 14.1 Toimilohkon luominen Toimilohko lisätään logiikkaan esim. Function Blocks pikavalikosta projektinhallintaikkunassa. Toimilohkoksi luodaan uusi tai sitten se haetaan tiedostosta (.cxf). Luotaessa uutta lohkoa valitaan heti ohjelmointitapa, relekaavio (LD) tai strukturoitu teksti (ST). ST on mukavampi vaihtoehto, jos toimilohkon tehtävä on laskea paljon. Toimilohkon pikavalikosta voidaan avata sen ikkuna, tallettaa lohko, kääntää tai vaikka nimetä se 113
14.2 Toimilohkon määrittely Ladder-toimilohkoikkuna näyttää tältä. Alaosa on lohkon ohjelmointieditoria. Yläosassa on muuttujien määrittelyikkuna, jossa on omat lomakkeet Lohkon sisäisille muuttujille (Internals) Tulomuuttujille (Inputs) Lähtömuuttujille (Outputs) Version 4.0 CJ1/CS1-logiikoille myös IN Out muuttujat, jotka näkyvät toimilohkomallissa sekä vasemmalla että oikealla. ulkoisille muuttujille (Externals) Toimilohkon ohjelmoinnissa ensin määritellään muuttujat ja sitten tehdään ohjelma. Muuttujat määritellään muuttujaikkunassa pikavalikon Insert Variable -riviltä. Tällöin kannattaa valita jo valmiiksi oikea muuttujalomake. Toki muuttujan editoinnin kautta se voidaan vaihtaa toisen tyyppiseksi. Määrittely voidaan tehdä myös ohjelmaeditorista käsin ohjelmoinnin yhteydessä tuttuun tapaan. Uusi muuttuja ikkuna avautuu käskyn kuittaamisen jälkeen. Muuttujia voi kopioida ja liittää myös symbolilistoista. Varsinkin Input- ja Output-muuttujien kanssa pääsee helpommalla, kun jo valmiiksi miettii sen, missä järjestyksessä haluaa näiden muuttujien tulostuvan toimilohkomalliin. Luonti kannattaa tehdä ylhäältä alas järjestyksessä. Insert Variable Above /Below toiminnolla lisätään muuttuja haluttuun paikkaan. Muuttujien järjestystä voi muuttaa leikkaamalla muuttujan leikepöydälle ja liittämällä sen takaisin. Liitetty muuttuja listautuu aina viimeiseksi. 114
14.2.1 Muuttujan määrittely Muuttuja määritellään antamalla sille Nimi Haluttu datatyyppi muuttujatyyppi Alkuarvo Tarvittaessa säilyvyys (Retain) Nimen kommentti Advanced-painikkeen kautta voidaan määrittää taulukkomuuttuja antamalla taulukon koko eli jäsenten määrä. Taulukkomuuttujan jäsentä kutsutaan nimen perään syötettävällä hakasulkulausekkeella, kuten taulu[0] muuttujalle kiinteä osoite muutttujamuisteista. Range-kohta näyttää sallitut muistialueet Lohkoilla on aina valmiiksi kaksi muuttujaa EN tulomuuttuja, lohkon suoritusehto ENO lähtömuuttuja, lohkon suoritustila Tässä on määritelty kyseiselle skaalaustoimilohkolle tarvittavat muuttujat. Sisäinen Var muuttuja on 4-jäseninen taulukkomuuttuja. 115
Edellisillä muuttujamäärittelyillä saadaan seuraavan näköinen toimilohkokutsu Vasemmalla tulot ja oikealla lähdöt siinä järjestyksessä, missä ne ovat muuttujalistoissakin. Näitä liityntöjä kutsutaan toimilohkokutsun parametreiksi. Parametrinimien yläpuolella näkyy määritelty muuttujan datatyyppi. 14.2.2 Toimilohkon ohjelmointi relekaaviolla Ohjelmointi tapahtuu normaaleilla säännöillä. Nyt muuttujat valitaan vain juuri määritellyistä listoista. Toki muuttujan lisääminen onnistuu vielä tässä vaiheessakin. 116
14.3 Toimilohkon kutsu Toimilohkokutsu ohjelmoidaan virtapiirin EN- (Enable-) eli lohkon ehtokoskettimien perään kuten funktiokäskytkin. Toimilohkomallin ylin tulo on normaalisti tämä EN-tulo. Toimilohkokutsu saadaan F-näppäimellä tai pikapainikkeella Toimilohkokutsun oikealla puolen voi olla käsky ENO- (Enable Out) bittilähdössä. Samaan virtapiiriin voi ohjelmoida muita käskyjä vain lohkon oikealle puolen ENO-lähtöön. Toimilohkokutsua lisättäessä annetaan Yksilöllinen nimi kutsulle (FB Instance), joka ei saa alkaa alaviivalla _ Kutsuttava toimilohko (FB Definition) Tämän jälkeen lohko ilmestyykin virtapiiriin Tällainen virtapiiri ei ole vielä käännettävissä, koska lohkon parametrit ovat antamatta Toimilohkon parametrit syötetään valinnan ollessa parametriliitännän kohdalla P- tai Enternäppäimellä. Parametri voidaan antaa myös pikapainikkeella Avautuneeseen New Parameter ikkunaan haetaan jo luotu symboli listasta tai kirjoitetaan se. Myös uusi symboli voidaan luoda normaaliin tapaan ENO-lähdön kuten muutkin lähdöt voi jättää vapaaksi. 117
14.4 Toimilohkojen muokkaaminen CX-ONE JA LOGIIKKAOHJELMOINTI Mikäli toimilohkolle on tehty jo kutsu relekaavio-ohjelmaan ja toimilohkoa muutetaan esim. tulojen tai lähtöjen järjestyksen suhteen, saadaan kutsuvirtapiiriin virhe. Syyn voi tarkistaa kääntämällä ohjelman. Kutsu saadaan päivitettyä kutsun pikavalikon riviltä Update Function Block Invocation. 14.5 Toimilohkojen lataukset Logiikan toimilohkot latautuvat logiikkaan normaalisti ohjelmien alaslatauksen yhteydessä. Alaslatauksen yhteydessä tulostuu Output-ikkunan viimeisiksi riveiksi tietoja ladattujen lohkojen käytöstä. Varattu muistin määrä sekä CPU:lle sallitut lohkojen että kutsujen määrä rajoittavat toimilohkojen käyttöä. Itse toimilohkot kuluttavat muistia, kutsut vain hieman. Käyttämättömistä toimilohkoista saadaan varoitus käännöksessä. Toimilohkot voidaan myös ylösladata. 14.6 Toimilohkojen suojaus Toimilohkot voidaan nyt myös suojata Properties-ikkunan Protection-lehdellä salasanalla. Suojaus kohdistuu näyttämiseen sekä muokkaamiseen (toimilohkon sisälle ei näe, eikä sitä voi muokata) tai pelkästään muokkaamiseen. 14.7 Toimilohkojen monitorointi Toimilohkojen toimintaa voidaan monitoroida itse toimilohkon sisällä tai pelkästään muuttujien arvoja tarkastelemalla. Toimilohkokutsua monitoroimalla näkee vain tulo- ja lähtömuuttujien tilat. 118
Kun logiikka on Online-tilassa ja monitoroi, niin tuplaklikillä toimilohkokutsuun eli instanssiin pääsee suoraan toimilohkon sisälle tarkkailemaan ohjelmaa kutsun mukaisin parametriarvoin. Kuvassa yo. kuvan instanssin mukaiset arvot toimilohkon sisällä. Samaan näkymään pääsee myös toimilohkon monitorointi-ikkunasta (Alt+5). Ikkunan vasemmasta osasta valitaan haluttu monitoroitava toimilohkon instanssi. Oikeassa osassa näkyy muuttujalistat. Skaalaus toimilohko näkyy kuvassa olevan varustettu lukolla, se on nyt kirjoitussuojattu. Pelkästään toimilohkon muuttujien arvoja voi tarkastella vaikkapa Monitorointi-ikkunassa. Toimilohkojen instanssit (ja tavallaan niiden käyttämät muuttuja)t listautuvat globaaliin listaan. Kätevimmin toimilohkon instanssin muuttujat saadaan monitorointi-ikkunaan instanssin pikavalikon riviltä Register in Watch Window. 119
15 PROJEKTIN TARKISTUKSET, PARAMETROINTI JA YLLÄPITO 15.1 Ohjelman tarkistukset Compile- eli käännöstoiminnolla CX-Programmer-ohjelman kieliopillista oikeellisuutta voidaan testata Compile -toiminnoilla. Compile All PLC Programs eli käännä kaikki logiikan ohjelmat löytyy logiikan pikavalikosta tai PLC-valikosta. Compile löytyy taas ohjelman pikavalikosta tai Program-valikosta ja se kääntää vain valitun ohjelman. Käännös tehdään automaattisesti ohjelman alaslatauksen yhteydessä. Jos käännöksessä löytyy virheitä, niin ohjelmaa ei voi ladata logiikkaan, varoitukset eivät estä latausta. Ennen käännöstä voidaan valikosta PLC/Program Check Options valita pois asiat, joita käännöksessä ei haluta huomioitavan., esimerkiksi sanojen tuplaohjaukset. Tulos käännöksestä saadaan Output- eli tulostusikkunaan Compile-lehdelle. Jos virheitä tai varoituksia löytyy, niin tuplaklikillä riviin saadaan vastaava ohjelmaikkuna ja kyseinen kohta näkyville. Kuvassa väitetään, että CMP(020)-käskylle ei ole sopivaa käyttää muuttujaa, jonka datatyyppi on UINT_BCD, vaan pitäisi käyttää UINT-tyyppistä muuttujaa. Tämä ei kylläkään haittaa, mutta nyt pitää olla vain tarkkana, koska CMP(20) -käsky pystyy käsittelemään kaikenlaisia bittikuvioita. Vertailijan monitoroivat arvot eivät vastaa tulosbittien tiloja, jos se vertaa keskenään BCD- ja binäärityyppisiä arvoja. 120
15.2 Logiikan IO-taulu, PLC IO Table CJ1-logiikoilla on IO-taulu. Sitä päästään tarkastelemaan ja käsittelemään IO Table -ohjelman kautta. IO-taulu sijaitsee logiikan parametrimuistin IO-taulu-osassa ja se sisältää tiedon CPU:hun liitetyistä yksiköistä. CJ1-logiikat tunnistavat yksiköt automaattisesti, joten taulua ei ole pakko määritellä. Vaikkei taulua olisikaan määritelty, niin automaattisesti tunnistetut yksikkötiedot voidaan ladata logiikasta IO-taulueditoriin tarkastelua varten. IO Table avataan tuplaklikillä logiikan alta projektinhallintaikkunasta. Kuvassa on yhteys Monitor-tilassa olevaan logiikkaan. Taulu on luettu Options-valikon Transfer from PLC -toiminnolla. Yksikköpaikassa 00 (aina vasemman puoleisin paikka) on 16-pisteinen digitaalinen tuloyksikkö ja se varaa sanan CIO0000 itselleen. Paikassa 01 on 16-pisteinen digitaalinen lähtöyksikkö ja se varaa sanan CIO0001. Lisäksi logiikasta löytyvät Ethernet- (Unit 0) ja DeviceNet-yksiköt (Unit 1). Eli täältä voi käydä tarkastamassa yksiköiden osoitteet. Tiettyjä erikois-io ja CPU-väyläyksiköitä voi käydä asettelemassa tai niiden tilaa voi tarkastella täältä. Tällöin valitaan yksikkö hiiren oikealla painikkeella ja valitaan pikavalikosta Unit Setup asetuksia tai Software switches tilojen tarkasteluja varten. Yksiköiden parametritiedot löytyvät CPS-tiedostoista. Tehdyt määrittelyt voidaan tallettaa omiksi tiedostoikseen. JOS IO-taulu on määritelty, niin tällöin yksikkökonfiguraatiota muutettaessa CPU generoi virheen tai hälytyksen. Nyt IO-taulu on määritettävä uudestaan. Normaalisti se tapahtuu toiminnolla Create, joka löytyy myös Options-valikosta. Toki taulun voi tuhota logiikasta Delete-toiminnolla, niin taas homma toimii. Kaikki logiikkaan kohdistuvat määritys- tai kirjoitustoimenpiteet vaativat Stop/Program-tilan. Taulua voi muokata myös käsin valitsemalla yksikköpaikkoihin pikavalikosta haluttuja yksiköitä tai asettelemalla Options-valikosta esim. räkin alkuosoitteen halutuksi. Nämä käsin tehdyt asetukset on kirjoitettava logiikkaan Transfer to PLC -toiminolla. Yleensä tätä ei tehdä. 121
15.3 Logiikan parametrointi PLC Settings SYSMAC-logiikat sisältävät joukon asetuksia, joilla voi vaikuttaa logiikan toimintoihin. Logiikoissa on paljon toimintoja, jotka eivät ole oletusasetteluilla vielä käytössä. Laite toimii oletusasetteluillakin, mutta lähinnä käynnistyksen jälkeinen toimintatila on yleensä parametroitava pois oletusasetteluista. PLC Settings -ohjelmistolla voidaan asetella logiikan parametrit halutuiksi. PLC Settings avataan tuplaklikillä logiikan alta projektinhallintaikkunasta. Ikkunan sisältö riippuu valitun logiikan tyypistä. Asetukset voidaan lukea logiikasta, kirjoittaa logiikkaan tai niitä voidaan verrata logiikan asetusten kanssa ikkunan Options-valikosta. Lataus-toimenpiteet kohdistuvat ikkunan kaikkiin välilehtiin. Toki nämä toimenpiteet voidaan tehdä myös Ohjelman alas- ja ylöslataus- tai vertailuikkunoissa. Asetusten kirjoittaminen onnistuu vain logiikan ollessa Stop/Program-tilassa. Tyypillisimmät muutettavat parametrit ovat Startup-lehdellä käynnistystila (Startup Mode) Built-in Input -lehdellä pikalaskuri (High Speed Counter) ja keskeytykset (Interrupts) Host Link/ Peripheral Port-lehdillä sarjaliikenneporttien asetukset. Kuvassa on näkyvissä Startup-lehti ja siinä asetukset, jotka kannattaa tehdä. Seuraava oletusasetuksista poikkeava käynnistystapahtumavalinta on tehty: Sähköjen kytkeytymisen jälkeen logiikka asettuu Monitor-tilaan. Oletus on Use programmm... Ennen käytössä olevan logiikan parametrien muokkaamista kannattaa lukea logiikasta nykyiset asetukset Options/Transfer From PLC -toiminnolla. 122
Asetusten muuttamisten jälkeen tulee ne kirjoittaa logiikkaan Options/Transfer to PLC -toiminnolla tai ohjelman alaslatauksen yhteydessä valinnalla Settings. Kirjoittaminen onnistuu vain logiikan ollessa Stop/Program-tilassa. Kun uudet parametrit on kirjoitettu logiikkaan, on vielä tehtävä sähkökatkos logiikalle, jotta kaikki asetukset varmasti astuisivat voimaan. Tämän jälkeen voidaan vielä tarkastaa asetuksien voimaan astuminen Read-toiminnolla. 15.4 Muuttujamuistieditori PLC Memory Niin tämä kuin IO Table tai PLC Settings -editorikin ovat CX-Serverin apuohjelmia. Näitä voidaan käynnistää muistakin sovelluksista. Huomaa, että ikkunat lisäävät ikonit windowsin tehtäväpalkkiin. PLC Memorylla päästään vaikuttamaan suoraan logiikan muuttujamuisteihin. Lisäksi arvot voidaan tallettaa joko osaksi projektia tai omaksi tiedostoksi. PLC Memory - Editoriin voidaan avata useita ikkunoita eri muistialueilta. Ikkuna saadaan auki valisemalla muistialue tuplaklikkaamalla muistialueen tunnusta näytön vasemmasta reunasta. Ikkunaan avautuu aina koko muistialue. Muistialueen ikkunan esitystapaa voidaan muuttaa pikapainikkeista tai valikosta View/Display. Ikkunoiden yläosassa on kenttä ensimmäisen näkyvän osoitteen valitsemiseksi sekä painikkeet bittien ja sanojen arvojen ohjailemiseksi. Kuvassa avoinna D- ja W-muuttujamuisti-ikkunat. Ikkunat on järjestetty hienosti toiminnolla Window/Tile. Ikkunoiden arvot ovat taulukkotietoa, joten arvoja voidaan kopioida ja liittää helposti. Maalataan hiirellä haluttu alue, otetaan siitä kopio leikepöydälle ja liitetään haluttuun paikkaan. Esim. samaan ikkunaan, toiseen ikkunaan tai vaikka Excel-taulukkoon. 123
Kun CX-Programmerista on kytketty yhteys logiikkaan voidaan tehdä online-toimintoja, eli arvojen lukemista logiikasta, monitorointia, vertailua tai kirjoittamista logiikkaan. Muistialueikkunoihin saadaan luettua arvo Transfer from PLC- toiminnolla pikapainikkeella, ikkunan pikavalikosta tai valikosta. Transfer from PLC -ikkunassa valitaan luettavat avatut ikkunat ja luettava alue, koko muistialue, näkyvä alue tai yhden muistialueen kyseessä ollessa maalattu valinta on mahdollinen. Arvoja muuttaa klikkaamalla soluun ja kirjoittamalla uusi arvo. Isomman alueen kirjoittaminen samaan arvoon tehdään valikosta Grid/Fill Data Area löytyvällä toiminnolla. Kun kaikki halutut sanat on muutettu, kannattaa ikkuna tallettaa omaan tiedostoon (*..MEM) File/Save to File tai projektiin Save in Project-toiminnolla ennen kirjoitusta 124
Kirjoitus tapahtuu Transfer to PLC -toiminnolla. Yleensä kirjoitukseen valitaan yksi ikkuna, jolle taas tehdään kirjoitusalueen valinta, koko alue, hiirellä valmiiksi tehty valinta tai Range-kentässä määriteltävä alue. Jostain syystä CIO/W-alueiden kirjoitus ei onnistu kuin ohjelmointitilassa, jolloin siitä ei ole mitään hyöyä, koska alueet kuitenkin nollautuvat logiikan mennessä suoritustilaan. Jos muistialueita Memory-ikkunan ja logiikan välillä halutaan vertailla, valitaan Online/Compare with tai pikapainike. Jos sanojen arvot poikkeavat, saadaan haluttaessa molemmat arvot soluihin näkyviin. Logiikassa olevat arvot näkyvät suluissa. Näkymä palautuu normaaliksi valitsemalla valitaan Online/Compare with uudestaan. Monitorointi ikkunoihin saadaan päälle Online/Monitor valikosta, pikavalikosta tai pikapainikkeesta. Monitorointia tapahtuu vain ikkunan näkyvässä osassa. Monitoroitavan ikkunan arvoja ei voi käsitellä. Monitoroinnin katkaisun jälkeen on arvot luettava logiikasta uudestaan. 125
15.5 Ohjelmien vertailu Compare with PLC Ennen logiikan ohjelman monitorointia vika- tai huoltotilanteessa tulee varmistua siitä, että monitoroi oikeaa, eli logiikassa olevaa ohjelmaa. Vertailu tehdään Compare with PLC toiminnolla, joka löytyy logikan pikavalikon Transfer-riviltä. Mikäli ohjelmat ovat samanlaiset tulee ilmoitus Compare Succesful. Tällöin voidaan luottaa siihen, mitä monitoroinnissa nähdään. Jos taas eroavaisuuksia löytyy, saadaan ilmoitus Tulokset vertailusta saadaan Compare Result ikkunaan. Kuitataan Compare Failed ikkuna OKpainikkeella ja katsastetaan Result-ikkunan sisältö ohjelma- ja blokkitasolla. Tuplaklillä eroavaan blokkiin saadaan rivimuotoinen näkymä esille ohjelmasta tarkempaa tarkastelua varten. Käytännössä nyt joudutaan tekemään ohjelman ylöslataus, jotta voimme monitoroida ja muokata nimenomaan logiikassa olevaa, toimivaa ohjelmaa. 126
15.6 Ohjelman ylöslataus Transfer From PLC CX-ONE JA LOGIIKKAOHJELMOINTI Osa logiikoiden ylläpitoa on logiikoiden ohjelmamuistin talteenotto. Tätä siirtoa logiikan muistista oheislaitteelle kutsutaan ylöslataukseksi. Ylöslataustoiminto löytyy logiikan pikavalikosta Transfer From PLC. Ylöslatausta varten tulee tietysti olla yhteys kunnossa. Ylöslataus onnistuu kaikissa logiikan tiloissa. Ylösladatut ohjelmat ovat tarkasteltavissa normaalissa relekaaviomuodossa. Nimet ja kommentit objekteille, virtapiireille ja blokeille eivät siirry C-sarjan logiikoiden muistiin ohjelman alaslatauksessa. Vaikka ylöslataus tehtäisiin avatun projektin päälle, tuhoutuu ohjelma, lokaalit symbolit sekä kaikki ohjelman kommentit ylöslatauksessa. Globaalit symbolit säilyvät. Noh, asiat eivät enää ole välttämättä näin, koska nykyisin CX-Programmer antaa mahdollisuuden säilyttää ohjelman kommentit Use Comments... valinnalla. CJ1CS1-logiikoihin voidaan siirtää myös symbolit ja kommentit, kuten alaslatauksen yhteydessä todettiin. Tämä kuitenkin vaati tiedostomuistia (E-tiedostomuisti, CF-kortti tai v3.0 kommenttimuisti). Kun logiikkaan on ladattu symbolit ja kommentit, niin ne voidaan myös ylösladata. Näin saadaan logiikasta täysin kommentoitu ohjaus. Upload Options -ikkunan Includeosassa voidaan valita, mitä kaikkea halutaan logiikasta CX-Programmer -projektiin siirtää. Kuvassa olevassa logiikassa näyttää olevan tiedostot ainakin sisäisessä kommenttimuistissa, koska Symbols ja Comments -kohdat ovat valittavissa JOS muistikorttia ei ole asennettu, niin tällöin logiikasta voidaan ladata ohjelmien lisäksi parametrit ja IO-taulu. Kaikki lokaalit symbolit tuhoutuvat. Ohjelmakommenttien tuhoutuminen on kiinni Use Comments... valinnasta. Nämä voidaan kuitenkin palauttaa Transfer from File -toiminnolla, jos ne on aikaisemmin tallennettu omiin tiedostoihin Transfer to File -toiminnolla, joka löytyy samasta paikasta, kuin muutkin logiikan lataustoiminnot. Ylöslataus tehdään, mikäli vertailussa havaitaan projektin ja logiikan ohjelmien eroavan, jotta voidaan luottaa logiikan ohjelmien monitorointiin tai jos logiikasta ei ole projektitiedostoa lainkaan. 127
15.7 Logiikan eri osien tallentaminen tiedostoon Logiikan ohjelmat, kommentit ja symbolit voidaan tallentaa omiin tiedostoihinsa. Save Comment/Program löytyy File-valikosta tai logiikan pikavalikosta Transfer to File -riviltä. Jokaiselle tiedostolle määritellään sopiva nimi ja tallennuskansio...-painikkeen avaavassa ikkunassa. Kuvassa on valittu tallennettaviksi blokkikommentit eli Program Index (.idx), symbolit eli Symbols (.sym) sekä ohjelman kommentit eli Program comments (.cmt). Ohjelmista eli Programs (.obj) ei tehdä omaa tiedostoa. Tallennus tapahtuu OK-painikkeella. 15.8 Logiikan osien lataaminen tiedostosta Logiikan ohjelmat, kommentit ja symbolit voidaan ladata omista tiedostoistansa valittuun projektin logiikkaan. Load Comment/Program löytyy File-valikosta tai logiikan pikavalikosta Transfer from File -riviltä. Logiikan tulee olla tällöin offline-tilassa. Valitaan halutut osiot ja määritetään ladattavat tiedostot. OK-painikkeen valinnan jälkeen varoitetaan vielä seuraavalla ikkunalla. Valitut tiedostot tulevat korvaamaan kyseiset logiikan osiot. 128
15.9 Ohjelmien vertailu tiedostoon Logiikan ohjelmaa/ ohjelmia voidaan verrata tiedostossa olevaan. Compare Program -toiminto löytyy File-valikosta tai logiikan pikavalikosta. Aktivoinnin jälkeen ohjelmisto pyytää valitsemaan projektitiedoston (Target File) johon projektin logiikkaa (Current Project) verrataan. Compare Options -ikkunassa valitaan toisiinsa verrattavat logiikat. Vertailua voidaan rajoittaa logiikan sisällä haluttuihin ohjelmiin ja blokkeihin. Mikäli logiikoiden valitut ohjelmaosat vastaavat toisiaan, saadaan ilmoitus Compare Successfull: Jos asiat eivät ole näin hyvin, eli ohjelmat eivät vastaa toisiaan, saadaan ensin ilmoitus Compare Failed. Kuitattaessa OK, avautuu Compare Result -ikkuna. Ikkunan oikeassa alakulmassa on selvitetty vertailussa käytettävät värikoodit, jotka ovat: Valkoinen = sama, keltainen = eroaa, vihreä = sirrtynyt ja musta = riviä ei ole. Logiikoiden näkymät ovat tällä hetkellä blokkitasolla. Käskylistamuotoinen ohjelmaosa saadaan näkyviin tuplaklikkaamalla suoraan eroavaan blokkiin tai valitsemalla ensin etsi seuraava- Find Next (F4) -painike ja tämän jälkeen Mnemonic View - painike. 129
Nyt voidaan kahta eri lähteestä tulevaa koodia tarkastella vierekkäin. Tuplaklikki käskyriville vie kohdistimen CX-Programmerissa olevan logiikan vastaavaan ohjelmakohtaan. Tarvittavat muutokset tehdään siellä, Compare Result -ikkunassa ei voi niitä tehdä. Eli muutokset tehdään CX- Programmerissa ja uusi käännös voidaan tehdä Compare (F5) -painikkeella. Overview-painike palauttaa näkymän blokkitasolle takaisin. File-valikosta voi tallettaa (Save As) ohjelmat CSV-tiedostoon, jolloin ohjelmia voi tarkastella vaikka Excelissä. Ikkuna suljetaan normaaliin tapaan. 15.10 Ristiviittauslista View/Cross Reference Report -valikosta saatava ristiviittausraportti on oiva väline ohjelmassa käytettyjen ja vapaiden osoitteiden etsimiseksi. Helpoiten luettavan listan saa, kun valitsee Usage Overview -tyypin raportin halutulta muistialueelta. Lista luodaan Generate-painikkeella. Raportin tyyppejä on useita ja näillä erilaisia näkymiä: yksityiskohtainen -> pitkä lista, kaikki muistialueet ja esiintymät siellä yleiskatsaus -> yleensä tämä yleiskatsaus, symboleilla ja kommenteilla yleiskatsaus, myös käyttämättömät yleiskatsaus, symboleilla ja kommenteilla, myös käyttämättömät duplikoidut ohjaukset yleiskatsaukset kohdistuvat valittuun muistialueeseen Nyt kuvassa näkyy W-alueen käytetyt muistipaikat. Numero bitin kohdalla kuvaa esiintymäkertoja ja Address -kentässä näkyy summa ko. sanan tai sanan bittien esiintymistä. D-kirjain tarkoittaa sitä, että muuttuja on symboloitu. Free UM ilmoittaa vapaan logiikan ja Total UM koko ohjelmamuistikapasiteetin. 130
Datamuistialueen näkymä on toisenlainen, koska siellähän ei voi käsitellä bittejä, vain sanoja. 15.11 Muuttujien etsintä Find in PLC Etsi-editori avataan valikosta Edit/Find tai vastaavasta pikapainikkeesta. Etsintäalue (Scope) on koko logiikka tai alue, missä kohdistin on. Alue voi olla projekti (Find in Project), ohjelma, ohjelman blokki tai symbolilista. Include BOOLs valinnalla kohdistetaan haku myös bitteihin, vaikka Find -kentässä olisikin annettu sanaosoite. Find Next -painike käynistää etsinnän. Reportpainike tulostaa raportin Output-ikkunan Report-lehdelle. Edit/Find -toiminnolla voidaan etsiä mitä vaan (all) osoitteet (addresses / bit addresses) arvot (values) käskyt (mnemonics) symbolit (symbol names) kommentit (symbol comments, program comments) Esiintymän löytyessä avataan kyseinen ikkuna näytölle päällimmäiseksi. Kun esiintymä on löydetty, voidaan ohjelmassa liikkumista jatkaa GoTo-toiminnoilla, jotka löytyvät esiintymässä avatusta pikavalikosta. Toinen vaihtoehto on käyttää Address Reference Tool -ikkunaa (Alt+4). 131
15.12 Osoiteviiteikkuna osoitteen jäljittämisessä Address Reference Tool Address Reference Tool -ikkuna (Alt+4) on oiva keino liikkua ohjelmassa osoitteen esiintymästä toiseen. Ensin valitaan logiikka ja etsitään yksi esiintymä. Sen jälkeen vain klikkaillaan ikkunan esiintymärivejä siirtyäksemme esiintymästä toiseen. Etsittävän osoitteen esiintymän voi Find-ikkunan lisäksi hakea suoraan Address Reference Tool - ikkunan Find-riviltä. 132
15.13 Ohjelman rakenneikkuna Section/Rung Manager Section/Rung Manager on ikkuna, jolla voi tarkastella sekä muokata logiikkaohjelman rakennetta. Ikkuna avataan valikosta Program/ Section/Rung Manager tai vastaavasta pikapainikkeesta. Valitaan ensin tutkittava ohjelma Program: kentässä, niin nähdään ohjelman blokkirakenne. Toki tämä nähdään suoraan projektinhallintaikkunassakin. Mutta siellä ei näe listaa blokin virtapiireistä, kuten täällä. Valitaan blokki Section:osassa ja ko. blokin virtapiirilista tulostuu Rung Comment:osaan. Klikkaamalla virtapiirin, avautuu näytölle kyseinen ohjelmablokki-ikkuna virtapiirin kohdalle. Kuvassa on yhteys logiikkaan kytkettynä, koska Rung Operation -painikkeet ovat harmaina. Offline-tilassa niiden avulla voi järjestellä, nimetä tai tuhota niin blokkeja kuin virtapiirejäkin. Myös Goto Commented Rung -ikkunaa voi käyttää virtapiirilistaukseen ja liikkumiseen, mutta se näyttä nimensä mukaisesti vain kommentoidut virtapiirit. Kuvissa samat blokit. 133
15.14 Logiikan tilan tarkistus ja virhehistoria Error Log Mikäli CPU:n ERR/ALM-merkkivalo indikoi virhettä tai hälytystä, niin syytä tähän voi etsiä Online-tilassa projektinhallintaikkunassa näkyvän Error Log -rivin toiminnoilla. PLC Errors -ikkunan Errors-välilehti näyttää aktiiviset häiriöt. Status-kenttä ilmaisee häiriölajin. Fatal on virhe ja Non-Fatal hälytys. Häiriön aiheuttaja poistetaan ja kuitataan vika. Viat kuittaantuvat tekemällä joko sähkökatkos logiikalle tai kytkemällä logiikka Stop/Program -moodiin ja klikkaamalla Clear -painiketta. Aina vika ei selviä helpolla. Code- ja Details -kenttien opastuksella selvitetään laitteen käsikirjaa lukien häiriön aiheuttaja ja poistetaan se. Logiikan virhehistoriaa voidaan tarkastella Error Log -lehdellä. Historia nollataan Clear Allpainikkeella. Jos logiikassa on reaaliaikakello, niin tällöin nähdään myös tapahtuma-ajankohdat. 134
16 HARJOITUKSIA Ensimmäiset harjoitukset ovat suppeita painottuen pelkästään CX-Programmer:n ja peruskäskyjen käyttöön. Pyri tekemään selkeitä ohjelmia käyttämällä blokkijakoja, mikäli se on tarpeen, sekä anna nimet ja kommentit niin blokeille kuin virtapiireille. Voit laatia IO-pisteluettelon vaikka ensimmäiseksi. Koulutuslogiikoissa on tulosana 00 ja ensimmäinen lähtösana 01. Jokainen meistä tekee sovelluksen omalla tavallaan, mutta tietyistä säännöistä on kuitenkin pidettävä kiinni, jotta ohjelma toimisi oikein. Testaa ohjelmien toimintaa jo laatimisvaiheessa, jos siellä on selvästi eroteltavia toiminnallisia osia. Kun tietty osa toimii oikein, on hyvä taas jatkaa sovelluksen tekoa lisää. 135
H1 Oikosulkumoottorin painonappiohjaus. Moottori käynnistetään painikkeella S1 ja pysäytetään painikkeella S0. F2 on moottorin terminen suoja. Merkkivalot osoittavat moottorin tilan. Kontaktorin K1 kosketintieto voidaan valita joko niin, että käytetään sisäistä pitopiiriä (01.00) tai ulkoista pitopiiriä, jolloin vapaalla tulolla, esim. 00.06 simuloidaan kontaktorin K1 tilaa. I/O-pisteluettelo: S0 F2 S0_ 00.00 S1_ 00.02 F2 00.04 K1 01.00 H1_ 01.01 H2_ 01.02 S1 K K1 K1 K1 H H H2 Oikosulkumoottorin suunnanvaihtokytkentä. Moottori käynnistetään pyörimään myötäpäivään painikkeella S1 ja vastapäivään painikkeella S2. Moottorin suuntaa voidaan vaihtaa sen pyöriessä. Pysäytys tapahtuu painikkeesta S0. F2 on moottorin terminen suoja. Merkkivalot osoittavat toiminnan. I/O-pisteluettelo: S0 S1 S2 F2 K S2 S1 K K1 S0_ 00.00 S1_ 00.02 S2_ 00.04 F2 00.06 K1 01.00 K2 01.01 H1_ 01.02 H2_ 01.03 H3_ 01.04 K2 K1 K2 K1 K2 H1 H2 H3 K1 K2 136
H3 Oikosulkumoottorin tähtikolmiokäynnistys. Moottori käynnistetään painikkeella S1 tähtikytkentään, jolloin pääkontaktori K1 ja tähtikontaktori K2 vetävät. Asetellun ajan (3 s) kuluttua tähtikontaktori K2 päästää ensin ja sen jälkeen kolmiokontaktori K3 vetää. Nyt moottori pyörii kolmiokytkennässä. Moottori pysäytetään painikkeella S0, jolloin pääkontaktori K1 päästää ensin ja sitten kolmiokontaktori K3. Moottori on suojattu termisellä suojalla F2. I/O-pisteluettelo: S0 S1 F2 S0_ 00.00 S1_ 00.02 F2 00.04 K1 01.00 K2 01.01 K3 01.02 K1 K2 K3 K4 K4 K2 K1 K H4 Tehtävässä harjoitellaan ajastimen käyttöä. Tee harjoitus osio kerrallaan ja testaa. Lisää samaan projektiin uusi blokki aina joka osiossa. Kaikkia osioita voidaan sitten lopuksi testailla yhtäaikaa. Osiotehtävät on esitetty aikakaavioin. a) Vetohidastus 00.00 01.00 2,0 s b) Päästöhidastus 137
00.02 01.01 1,5 s c) Veto/päästöhidastus 00.04 01.02 1,1 s 0,9 s d) Pulssi, tulon 00.06 tulee olla aktiivinen pulssin ajan, jotta lähtö olisi päällä 2,2 s. 00.06 01.03 2,2 s e) Vakiopulssi, tulon ei tarvitse olla päällä pulssiaikaa, toki se saa. - 00.08 01.04 1,8 s f) Vilkku, joka loistaa 1,2 s ja on pimeänä 0,6 s. 00.10 01.05 H5 a) Moottoriohjaus. Pumpun moottorin ohjauspiirissä on pääkytkin S0, käynnistyspainonappi S1 sekä pysäytyspainonappi S2. Moottori käy 5 s, jos pääkytkin S0 on kiinni ja käytät käynnistyspainiketta S1 päällä. Moottori pysähtyy heti, jos pääkytkin S0 käännetään 0-asentoon tai painetaan pysäytyspainiketta S2. b) Lisää ohjelmaan käyntikertalaskuri. Käynnistysehdot ovat edelleen samat muuten, paitsi mutta nyt moottori käynnistyy vain 5 kertaa. Kun moottori on sammunut viidennen kerran, niin tällöin merkiksi tästä syttyy merkkivalo. Merkkivalo sammuu ja uudelleen käynnistys on jälleen mahdollista kuittauksen S3 jälkeen. I/O-pisteluettelo: 138
S0_ 00.00 Pääkytkin S1_ 00.02 Start S2_ 00.04 Stop S3_ 00.06 Kuittaus K1 01.00 Moottorikontaktori H1_ 01.01 Merkkivalo H6 Käytävävalaistus. Käytävän valoja ohjataan neljällä painonapilla. Ohjauksen toiminta vastaa sysäysreleen toimintaa. Valot syttyvät, kun suljet ja avaat minkä tahansa kytkimen niin, että kaikkien painonappien koskettimet jäävät auki. Lamput sammuvat, kun suljet ja avaat minkä tahansa kytkimen niin, että kaikkien painonappien koskettimet jäävät auki. H7 Auton sähkölaitteet. Tehtävässä luodaan auton sähkölaitteiden ohjaussovellus. Tehtävän aikana joudutaan lisäämään ja muuttamaan virtapiirejä. a) Valot. Jos virta ei ole päällä ainoastaan parkit saavat palaa. Virran ollessa kytkettynä toimii ajovaloautomatiikka, mikäli parkkivalokatkaisija ei ole päällä. Siis parkit ja lähivalot syttyvät. Jos parkkivalokatkaisija on kytkettynä syttyvät vain parkit. Lähivalot syttyvät jos lähivalokatkaisija sekä parkkivalokatkaisija ovat kytkettynä, eikä kaukovalokatkaisija ole kytkettynä. Kaukovalot syttyvät mikäli kaukovalo-, lähivalo- ja parkkivalokatkaisijat ovat kytkettynä. Virtakytkin 00.00 Parkkivalokatkaisija 00.02 Lähivalokatkaisija 00.04 Kaukovalokatkaisija 00.06 Parkit 01.00 Lähivalot 01.01 Kaukovalot 01.02 b) Käynnistys. Virran tulee olla kytkettynä, jotta auto voidaan käynnistää. Sovitaan niin, että auto käynnistyy, kun startpainiketta on painettu 2,5 s ajan. Tämän jälkeen startpainike tulee palauttaa. Starttauksen aikana eivät lähi- ja kaukovalot saa loistaa. Moottorin käydessä valojen toiminta on kuten virrat päällä tilanteessa. Moottori sammutetaan virtakytkimestä Startti 00.08 Moottori käy 01.03 c) Vilkut. Vilkut saavat toimia vain moottorin käydessä, mutta hätävilkun tulee toimia aina. Vilkkuihin käytetään järjestelmäbittiä P_1s. Oikea vilkku 00.10 01.04 Vasen vilkku 00.12 01.05 Hätävilkku 00.14 d) Tihkukytkin. Pyyhkimet toimivat virran ollessa kytkettynä Tihkukytkin toimii siten, että pyyhkäisyjä on 3, jonka jälkeen seuraa 3 s tauko. Ja taas 3 pyyhkäisyä ja tauko. Pyyhkäisyyn käytetään bittiä P_1s, eli pyyhkäisy sekä lyhyt tauko kestävät 0,5 s. 139
Tihkukytkin 00.15 01.06 H8 Ajan mittaus. Ohjelmalla mitataan painikkeen kytkentäaikaa seuraavasti. Painetaan tulokytkintä 00.00 haluttu aika. Kytkimen päästämisen jälkeen lähtöön 01.00 muodostuu painamisajan mittainen pulssi. Pulssi muodostetaan ajastimella. Aikaa lasketaan ++B-käskyn ja P_0_1s bitin avulla. H9 Ulkoinen pulssiohjaus. Tehdään kahdella ajastimella vilkku, jonka loistamis- ja taukoaikaa voidaan muuttaa tulokytkimien avulla välillä 0...8,3 s. Loistamisaika määräytyy tulojen 00.00, 00.02, 00.04 ja 00.06 perusteella ja taukoaika tulojen 00.08, 00.10, 00.12 ja 00.14 perusteella. Ohjaukset pitää siirtää kahteen eri sanaan ja muuntaa ajastimia varten BCD-muotoon. Voit käyttää ohjausdigittien erotukseen ja siirtoon ANDW- ja MOVD-käskyjä. H10 Parkkipaikka. Hallissa on 50 auton parkkipaikka, johon on sisään- ja ulosportti. Sisäänajon tunnistin on 00.00 ja ulosajon tunnistin 00.02. Parkkipaikan täyttymistä valvotaan kahdella valolla, salliva vihreä 1.00 ja kieltävä punainen 1.01. Jos parkkipaikalla on autoja 45 tai vähemmän, loistaa vihreä valo jatkuvasti. Jos autoja on 46...48, vilkkuu vihreä kiihkeästi (P_0_2s). Jos autoja on 49, vilkkuvat vihreä ja punainen valo hitaasti (P_1s) vuorotellen. Jos parkkihalli on täysi, niin punainen loistaa jatkuvasti ja vihreä on pimeänä. Tee binäärinen laskuri ++ ja -- käskyillä. Käytä sopivia vertailukäskyjä ohjauksiin. Kokeile myös laskurin arvon rajoitusta sallitulle alueelle. Onhan ikävää, jos vähennetään nollasta. H11 Sylinterien ohjaus. Laadi ohjelma, joka ohjaa kahta paineilmasylinteriä seurantadiagrammin mukaisesti. Sylinterit saavat ohjauksensa monostabiilien suuntaventtiilien kautta. Kun venttiilin kela saa jännitteen logiikan lähdön ohjaamana, sylinterin mäntä tekee +liikkeen. Niin kauan, kuin kelalla on jännite, pysyy sylinterin mäntä +asennossa. + C1 - + C2-1 2 3 4 5 6 7 8 9 Diagrammin mukainen toimintajakso alkaa, käynnistyspainike S0 aktivoidaan. Jakso suoritetetaan vain yhden kerran. Uusi jakso voidaan käynnistää, kun edellinen on suoritettu. Hätä-Seis-painikkeen S1 vaikuttuminen pysäyttää jakson ja männät palautuvat -asentoon. 140
I/O-pisteluettelo: S0_ 00.00 Start S1 _ 00.02 HS C1_In 00.04 Sylinteri C1 sisällä C1_Out 00.06 Sylinteri C1 ulkona C2_In 00.08 Sylinteri C2 sisällä C2_Out 00.10 Sylinteri C2 ulkona C1_ 01.00 Sylinterin C1 ohjaus C2_ 01.01 Sylinterin C2 ohjaus H12 Liikenteen ohjaus. Ohjauksessa kuusi lamppua sytytetään 1 sekunnin välein siten, että edellisetkin jäävät loistamaan. Kun kaikki kuusi palavat yhtaikaa 1 sekunnin, niin seuraavaksi ne sammuvat 1 sekunniksi, loistavat kaikki 1 sekunnin ja vielä sammuvat 1 sekunniksi. Tämän jälkeen ohjaus alkaa taas alusta. Tämä yhdeksänvaiheinen sekvenssi toimii niin kauan, kun ohjaustulo 00.00 on aktiivinen. H13 Yhteen- ja vähennyslasku. Tulo 00.00 käynnistää laskurin CNT, jonka asetusarvo on 0999. Laskentaan käytetään 0,1 s kellopulssia. Laskuri resetoidaan tulolla 00.04. a) Tulo 00.02 pysäyttää laskennan ja kopioi laskurin oloarvon lähtösanaan 1. b) Tulon 00.02 nousevalla reunalla lasketaan sanaan D0000 alusta saakka laskettujen pulssien määrä. Sanaan D0001 lasketaan edellisen tarkastelun (eli edellisen 00.02 vaikuttumisen) jälkeen lasketut pulssit. c) Lasketaan vielä sanaan D0002 lukukertojen määrä. b)-kohdassa käytetään vähennyslaskua ja c)-kohdassa yhteenlaskua. 141
H14 Sekvenssiohjaus, jossa siirretään tuotteita alakuljettimelta K1 yläkuljettimelle K2 pneumaattisilla sylintereillä Y1 ja Y2. Y2 K2 S3 K1 S2 Y1 S1 Toimintasekvenssi: 1. Kuljetin K1 siirtää tuotteita. Kun S3 tunnistaa tuotteen olevan sylinterin Y1 työntimellä, pysähtyy kuljetin K1. Tämän jälkeen Y1 saa ohjauksen ja mäntä liikkuu ylös. Sylinteriä Y1 ohjataan jousipalautteisella monostabiililla suuntaventtiilillä. Sylinterin Y1 asentoa seurataan antureilla S1 ja S2. 2. Kun anturi S2 tunnistaa Y1:n olevan yläasennossa, saa sylinteri Y2 1 sekunnin mittaisen pulssin, ja työntää tuotteen Y1:n työntimeltä kuljettimelle K2. K2 saa käydä kaiken aikaa. 3. Y2:n ohjauksen loputtua poistuu myös Y1 ohjaus ja se palautuu alas. 4. Kun Y1 on palannut kotiasentoon, käynnistyy kuljetin K1 jälleen. JATKOKURSSIN OHJELMOINTIHARJOITUKSIA H15 Harjoitus perustuu pikalaskurin HSC1 toimintaan. Pikalaskuri parametroidaan toimimaan vaihe-eromoodissa ja se resetoidaan ohjelmallisesti laskurin resetbitillä. Kun laskurin oloarvo kasvaa arvoon 1000, niin lähtö.00 ohjautuu 1-tilaan Kun laskurin oloarvo kasvaa arvoon 2000, niin lähtö.01 ohjautuu 1-tilaan ja.00 nollautuu Kun laskurin oloarvo kasvaa arvoon 3000, niin lähtö.02 ohjautuu 1-tilaan ja.01 nollautuu Kun laskurin oloarvo kasvaa arvoon 4000, niin lähtö.02 sekä laskurin oloarvo nollautuvat. Toteuta ohjaukset käyttämällä: a) pikalaskurin vertailutaulua ja keskeytysaliohjelmia b) vertailujen avulla. 142
H16 Tehdään invertteriohjatun hissin paikoitusohjaus. Invertterin taajuuden ohjaus tapahtuu digitaalisten tulojen ohjaamien vakionopeusasettelujen perusteella. Invertterin käy eteen/taakse-ohjaus tapahtuu 2-johdin ohjauksella. Paikkatieto tulee pulssianturilta, joka ohjaa vaihe-eromoodiin aseteltua pikalaskuria HSC1. Ajokuvio: v v2 0 100 900 1000 <-alas / ylös -> Invertterin ohjaukset voidaan tehdä vertailujen avulla pikalaskurin oloarvoon perustuen. Ala-asennosta (HCS1 PV = 0) saadaan myös anturitieto S1. Ajon käynnistys ylös-suuntaan tulolla S0. Alaspäin-ajon käynnistys automaattisesti 1,5 sekunnin kuluttua siitä, kun ylöspäin-ajo on pysäytetty. S0 0.00 S1 0.02 Run_FW 01.00 Run_REW 01.01 v1 01.02 v2 01.03 v1 s H17 Muuta edellistä harjoitusta siten, että nyt yläpään ajopositioita onkin yhden sijasta kolme. Ensimmäinen on sama 1000 pulssia, toinen 1500 ja kolmas 2000. Näihin pisteisiin ajetaan aina vuorotellen 0-pisteestä. Yläpään nopeuden muutos tapahtuu 100 pulssin erolla ajopositiosta (siis 900, 1400 ja 1900). Käytä epäsuoraa muistinosoitusta. Tee pointteri sanaan D0100 ja pino sanoihin D0101...D0103 H18 Tehdään FIFO. Tuotantolinjalla on 4 robottia, jotka asettavat tuotteita kerääjäkuljetinlinjalle. Kerääjä käy noukkimassa tuotteita linjalta periaatteella vanhin ensin (FIFO). Pinoon lisätään tietoa ( kuittaus valmiista tuotteesta robottiasemassa) esim. käyttämällä DEC käskyä sekä epäsuoraa muistinosoitusta. Pointteria siirretään alaspäin aina uuden tuotteen valmistuessa. Kerääjän noudettua linjalta vanhin valmistunut tuote, saadaan kuittaus tuotteen poistumisesta paikalta sekä kerääjältä. Tällöin WSFT-käskyä käyttäen siirretään pinoa ja pointteria ylöspäin. Tee pointteri sanaan D0010 ja pino sanoihin D0011...D0014. Roboteilta saadaan kuittaukset tuloihin 00.00... 00.06. (Bitti = 1, kun valmis tuote on asemassa). Kerääjän kuittaus 00.08. Robottiasema 1 antaa tietoa 0001, Robottiasema 2 antaa tietoa 0002, Robottiasema 3 antaa tietoa 0003 ja Robottiasema 4 antaa tietoa 0004. Robotti voi asettaa uuden 143
valmiin tuotteen vasta, kun edellinen on noudettu. Tulosta lähtösanaan tieto seuraavasta noudettavasta tuotteesta. H19 Harjoituksessa tehdään binäärinen heiluri sanaan D0001 käyttämällä binäärisiä yhteen- ja vähennyslaskukäskyjä. Lisättävää arvoa voidaan muuttaa CX- Programmerista käsin sanaan D0000. Heilurin kellotus voidaan tehdä vaikka 20 ms pulssilla. Heilurin alue on 0...4000 dec. Heilurin arvo skaalataan alueelle 50...250 (INT) sanaan D0002. Kun skaalattu arvo on välillä 50..100 niin lähtö.00 on 1-tilassa. Kun skaalattu arvo on välillä 101..200 niin lähdöt.00 ja.01 ovat 1-tilassa. Kun skaalattu arvo on välillä 201..250 niin lähdöt.00....02 ovat 1-tilassa. H20 Toteuta lottoarvontakone, joka arpoo tulobitin ohjauksella uuden numeron riviin. Rivissä saa tietenkin esiintyä sama numero vain kerran. Tehdään satunnaislukugeneraattori arvoille 1...39. Tätä arvoa tarkkaillaan jo rivissä oleviin. Jos arvoa ei löydy vielä rivistä, hyväksytään se. Mikäli arvo jo löytyy, täytyy yrittää uudestaan. Rivi muodostetaan peräkkäisiin D-sanoihin epäsuoran osoituksen avulla. Kun rivi on valmis, siitä ilmoitetaan, vaikkapa lähtöbitillä. 144