Heps! Olen harrastanut mikrokontrollereiden ohjelmointia c kielellä ja haluaisin laajentaa osaamistani automaation pariin.
Otetaan nyt esimerkiksi vaikka omalta työmaalta löytyvä possujen liemiruokkija. Se on suht yksinkertainen laitos jonka toimintaperiaatteet tunnen, siksi haluaisin kokeilla tehdä sellaiseen ohjelman. En tietenkään juuri tälle koneelle vain vastaavalle alustalle vastaavanlaisen ohjelman näin harjoitusmielessä.
Ruokkijassa ohjelma pyörii jonkinsortin teollisuustietokoneella josta sitten tieto menee relekortille tms IO kortille sarjamuodossa. Ohjelma koneessa näyttää samalta kun jotkun dossin päällä pyörivät ohjelmat.
Tietoa tarvitisin siis siitä että minkälaisia alustoja tällaiseen automaatioon yleisesti käytetään ja mitä tarvitsen että voin alkaa kehittämään ohjelmaa ko alustalle. Kielenä olen ajatellut käyttää c++ kieltä koska minulla on kokemusta c kielestä ja olen käsittänyt että c++ kielen osaaminen olisi kaikin puolin hyödyllistä. Lisäksi olen hieman opiskellut sen perusteita.
Ohjelma itsessään on melko yksinkertainen hieman laskemista IO toimintaa tiedon tallentamista ja lukemista sekä tietenkin valikoiden tms piirtämistä.
Tämä kirjoitus voi olla hieman epäselvä mutta kysykää pois jos joku ihmetyttää. Kiitos jo etukäteen neuvoista.
Yleisimmin käytetään FANUC ja Siemens ohjauksia. Erilaisia ohjauksia on olemassa pilvin pimein. Kerro mikä ohjausjärjestelmä on kyseessä niin siitä se lähtee.
yleisimmin as in kyseisellä työpaikalla. omallamme Siemens ja Mitsubishin logiikat.
Tapoja on monia. voit käyttää ohjelmoitavia logiikkoja tarvittavilla lisämoduuleilla, tai sitten Pc pohjaista ratkaisua (joka on usein on kyllä kalliimpi, ja tarpeeton. jos meinaan tarvii tietokonetta pelkästään ohjaukseen, joten se on suht kallis turha investointi)
itse olen tehnyt ohjauksia pääsääntöisesti siemensin S7 logiikoille sekä Mitsubishin Q ja FX sarjoilla. ohjelmointioppaita saa jälleenmyyjiltä, sekä kursseja löytyy paljon. (Siemens lähes joka AMK jossa kone tai sähköautomaatiota), beijeri järjestää mitsubishille (www.beijer.fi))
PC ohjauksissa taasen olen käyttänyt MCC:N (Measurement computing, jälleenmyyjänä ainakin Hantekno, http://www.hantekno.com/Hantekno.htm), joka on mielestäni paras käyttämäni IO ja AD ratkaisu pc maailmassa. tollanen perus palikka jolla voi 16 tuloa ja lähtöä ohjata, sekä muutama ad kanava, maksaa ~300e. (korttien lähdöt ja tulot TTL tasojen mukaisia, joten optoreleitä tarvitaan jos vaikka 24v laitteita ohjailet,saatika että nämä usb korttien virrat on tosiaan porttiin rajoitettuja (max 500mAh per portti))
ohjaus itsessään tapahtuu mukana tulevan kirjaston kautta, mukana tuli muistaakseni perus dll ja .NET kirjastoa hyödyntävä kirjasto.
kielinä olen käyttänyt C# pääasiassa, mutta eikai tolla mitään väliä ole. mikä parhaalta tuntuu. Varsinkaan kun mittausnopeudesta ei usein tarvitse huolehtia koska data yleensä luetaan kortin omasta puskurista, joka vie särmää pakolliselta optimoinnilta koodissa viiveiden vähentämiseksi.
grafiikan piirtoon olen käyttänyt zedgraph kirjastoa (Ilmainen), jolla saa kaikki tarpeelliset käppyrät ja hajonnat tehtyä nopeasti joita se johto kuitenkin haluaa nähdä. Visual studiota kun käytän muuten niin en ole tarvinnut mitään erillistä kirjastoa GUI:n rakentamiseen. Gdi+:aa jos jotain erikoisia vänkyröitä on tarvinnut jonnekkin tehdä.
Kyseessä lienee pc ohjaus. Päättelen siitä että ei se ainakaan logiikalta näytä. Kyseessä on siis sellainen metallilaatikko noin 250x350x60 jossa on liittimet näytölle ps2 näppärille ja sarjaportti IO moduuliin kiinnittämistä varten (Voi kai myös olla niin että loota on jokin mikrokontrollereilla toteutettu systeemi joka ajaa omaa ohjelmaa flahsiltä ilman mitää käyttistä tms).
Olettaisin että tämä sopii ko koneeseen paremmin koska koneen toimintaa pitää jatkuvasti säätää ja sinne pitää syöttää tietoa käsin monta kertaa päivässä esim ruokintatietoja eläinten määrään muutoksia jne lisäksi säädellään reseptejä ruokinta käyriä ja sitten on vielä monen monia koneen toimintaa liittyviä asetuksia.
Minulla on sellaine kuva että logiikan kanssa tuollainen käytettävyys on rajoitetumpaa.
no ei rajoitetumpaa mutta epäkäytännöllisempää jos operointipaneelilla joutuu käyriä säätämään.
mitä luultavammin kyseessä on teollisuuspc, jotka on yleensä on rumia metallilaatikoita. voihan se olla räätälöitykin malli, jolloin uudelleenkoodaus olisi aika työläs.
Tässä tapauksessa hommaisin uuden tietokoneen, MCC:n usb ohjausmoduulin, läjän optoreleitä ja rupeisin suunnittelemaan ohjauspuolen sähköjä uudelleen. Täytyy myös muistaa että kun muutoksia tehdään, laitteet tulisi konedirektiivien mukaan päivittää vastaamaan nykyisiä turvamääräyksiä etc, joten budjettia ei kovin tarkkaan kannata alussa määrittää ennenkuin muutostarve on kartoitettu.
Hätäseispiirit (jos tarpeen) ja turvapiirit tulee muutenkin elektromekaanisesti suorittaa (turvareleet etc.), joten ohjelmallisesti ei saa niitä toteuttaa (esim. moottorin hätäpysäytys katkaisemalla lähtö taajuusmuuttajan ohjaukseen).
Ok. Tarkoitukseni ei toki ole alkaa tätä ko konetta mitenkään rukata.
Tarkoitus olisi vain päästä alkuun vastaavanlaisten sovellusten (ruokkijaa ohjaavan ohjelman) kehittelemisessä vastaavanlaiselle alustalle niinkun näin opiskelumielessä.
Pitäisikö siis ensin hommata tuollainen teollisuus pc ja alkaa aluksi koodaamaan jotain yksikertaista sille vai onnistuuko tuo sovelluskehitys normaalilla koti pc:llä tarvitaanko esim jotain emulaattoreita tms.
Entä millainen kehitysympäristö ko tehtävään sopii parhaiten kun puhe on ohjelmasta joka olisi visuaalisesti vaatimaton mutta toiminnan pitäisi olla todella vakaata ja käytettävyys pitäisi olla myös hyvä.
Kielenä olen ajatellut c++ mutta muitakin ehdotuksia otetaan vastaan jos vaikka löytyisi joku helpompi kriteerit täyttävä vaihtoehto.
Ilmaisia ohjelmia olen näin opiskelussa ajatellut käyttää mutta niitähän on saatavilla käsittääkseni reilusti.
no teollisuuspc:tä et tarvitse, ellei ympäristö sitä vaadi (Likainen, kosteutta, pölyä järkyttävästi). itse koodaamisen voit tehdä vaikka kotona.
Jotain lisätietoa ohjauksesta tarvitsen jotta voin auttaa. aiotko uusia myös relekortin? mikä jännite tuloissa lähdöissä on? NPN vai PNP kytkentä? (eli tuleeko tuloihin + jännittettä ja lähdöt + jännitettä, eli PNP, vai toimiiko miinuksella, eli NPN)
Ohjaukseen suosittelen C# tai visual c++, ilmaiseksi gui:ksi joko Visual studio express tai Sharp developia. Gui:n rakenteleminen IDE:llä jossa itse ikkunoiden ja controllien luominen tapahtuu drag&n&Dropilla helpottaa huomattavasti, saatika että voi visuaalisesti muokkailla.
Okei, latasin juuri SharpDevelopin koneelleni ja etsin muutamia C# oppaita.
En aio tehdä tuolle ruokkijalle yhtään mitään. Tarkoitus olisi vain oppia miten vastaavaan järjestelmään tehdään ohjelma.
Relekortteja ja muita voi hankkia/tehdä sitten kun on joku systeemi mihin niitä tarvitaan.
Onko tuollaisella teollisuus pc:llä mitä eroa verrattuna normaaliin koti pc koneeseen jos ei huomioida esim pölysuojausta tms.
Esim mitä käyttöjärjestelmää niissä yleisesti käytetään? epäilen että ei windowsia.
Olenko käsittänyt oikein jos sanon että jos tavallista pc konetta ohjaamiseen käytettäessä voidaan ohjelman koodata kuin mikä tahansa muukin tavallinen pc ohjelma. Rajapinta laitteiden ja ohjaavan tietokoneen välillä voisi olla esimerkiksi usb relekortti.
Taas jos käytetään teollisuus pc:tä voi koneessa olla itsessään lähtöjä ja tuloja sekä ad kanavia joihin päästään käsiksi mukana tulevien kirjastojen avulla.
Vaihtoehtoja toteutukseen: Labview ( http://www.ni.com )
Sopii kylläkin lähinnä ammattikäyttöön maksullisuuden vuoksi.
Opiskelijaversion hinta näytti olevan 80 dollaria. Ei paha hinta jos tosissaan haluaa opiskella systeemiä (eli käyttää ammatikseen).
teollisuus pc:ssä ei itsessään ole mitään tuloja tai lähtöjä sen enempää kuin muissakaan, lisäkortteja saa mihin vaan tietokoneeseen. ne on vaan paremmin suojattuja ja kestävämpiä komponentteja, isompia välimuisteja etc.
ohjelma koodataan kuin mikä tahansa ohjelma. esimerkiksi käyttämässäni MCC:n palikoissa (Usb IO Moduuleita) kirjaston käyttäminen toimii pääasiassa näin (koodi ei täysin oikein, en muista kirjastoa ulkoa mutta periaate selvenee):
1. Määritetään laite käyttöön erillisellä ohjelmalla (hoitaa ajurikättelyt sun muut taustalla)
2. Itse ohjelmassa
using MCC; // Kirjasto käyttöön MCC.Card _MCC = new MCC.Card(0); Luodaan olio ensimmäisestä MCC:n kortista joka on asennettu, indeksi tulee erillisestä ohjelmasta //korteissa on eri alueita, jotka vastaavat eri tulo/lähtöalueita, FirstportA ensimmäiset 8 tuloa/lähtöä, FirstportB toiset jne. MCC.ErrorObject Error = new MCC.ErrorObject; //Olio johon eri virheet tallentuu Error = _MCC.FirstportA(MCC.Signal.Output,0) // Onko tuloja vai lähtöjä, bittinumero. eli ensimmäinen IO, numero 0, on lähtö. Error = _Mcc.FirstPortA.State(0,MCC.Signal.State.High); //IO nro 0, lähtö ylös //Tämä oli karkea esimerkki, mutta ei mitään vaikeaa. oikeat metodit selviää kirjaston mukana tulevasta oppaasta. runsaasti eri esimerkkejä on myös.
Aihe on jo aika vanha, joten et voi enää vastata siihen.