torstai 1. huhtikuuta 2004

Järjestelmän laitteisto- ja ohjelmistoarkkitehtuuri

Järjestelmän laitteistoarkkitehtuuri on suunniteltu siten, että jokaisessa laitteessa (ECU, WBSU, BusMaster) on mikrokontrolleri, johon on tehty peruskäyttöjärjestelmä joka osaa lähettää ja vastaanottaa viestejä CAN-väylään.
Laitteissa on plugandplay-tuki, jota BusMaster ohjaa. Kun väylälle liitetään laite, antaa BusMaster onbus-viestin, jolla MCU saa tiedon uudesta laitteesta. Vastaavasti jos väylältä katoaa laite, BusMaster antaa offbus-viestin.
Kussakin laitteessa on sisäänrakennettu jännitevalvonta, joka lähettää väylälle viestin, jos käyttöjännite muuttuu tai syöttösähkössä on epätasaisuutta. Näin BusMaster osaa kertoa MCU:lle väylän jännitetasot kustakin väylällä olevasta noodista. Tällä järjestelyllä havaitaan helposti, jos väyläkaapeloinnissa on epäluotettavia kohtia. Toisaalta jos jännitetasot putoavat väylän päässä liian alas, voidaan väylään lisätä lisäsyöttöjä.

Järjestelmän PC-pohjaisen MCU:n ohjelmistoarkkitehtuuri tehtiin noudattamaan täsmällisesti laitteistoarkkitehtuuria. Kustakin järjestelmän fyysisestä osasta tehtiin vastaava oliopohjainen komponentti. Näin esim. olio TWSU, TbusMaster ja TECU on peritty oliosta TCanNode. Näin TCanNode osaa tulkita kaikkien eri noodityyppien perusviestit, esim. OnBus ja OffBus-viestit, jännitemuutosviestit ja hälytykset. Esim. tästä oliosta peritty TECU sisältää toiminnot, joita perus TCanNode ei tunne (releiden ohjaus, dac-himmenninohjaus). Vastaavasti TWBSU-olio osaa tulkita nappien painamisviestejä ja ohjata WBSU:n ledejä.

PC-pohjaisen MCU:n rooli on toimia järjestelmän ytimenä. Kun väylälle liitetään laitteita, MCU alustaa muistiin vastaavia olioita. Tietokoneen muistissa on siis järjestelmän fyysisiä kytkentöjä seuraava ohjelmallinen malli. Toisaalta MCU:n säännöstöt ohjaavat, miten väylän tapahtumat saavat aikaan väylän kautta tehtäviä ohjauksia.

PC:ksi valittiin tehokas teollisuus-PC, jossa ei ole lainkaan liikkuvia osia, kuten tuulettimia.

maanantai 1. maaliskuuta 2004

Tapahtumankäsittelijän toimintamalli (MCU)

Järjestelmän konfigurointi tehdään kirjoittamalla sääntöjä. Nykyisellään säännöt kirjoitetaan tekstieditorilla, eli mitään graafista editoria ei ole toteutettu.

Kukin rele tai DA-muunnin nimetään. Nimeämistapa on määritelty tyyliin

ECU:16,1=WC
ECU:16,2=Eteinen
ECU:16,3=Olohuone

Määrityksissä =-merkin vasemmalla puolella oleva lyhytnimi (esim. ”ECU:16,1” --> ECU-noodin jonka CAN ID = 16, rele numero 1) on muissa määrityksissä käytettävä määritys --- Käyttöliittymä voi näyttää tekstinimen (WC).

Kullekin painikkeelle voidaan opettaa sääntö, mitä päällekytkentä ohjaa. Ohjauksia voi olla yksi tai useampia.

Sääntö on muotoa:
WBSU:40,1=ECU:16,1 ; ECU16,2 ; WBSU:42,1 ; WBSU:40,1

Selitys: Mikäli WBSU noodin 40 ledi 1 ei pala -> WBSU-noodin 40 painike 1 ohjaa päälle ECU-noodin 16 releet 1 ja 2. Samaisen kytkimen ledi sytytetään, mutta myös WBSU-noodin 42 napin 1 ledi sytytetään myös. Tässä tapauksessa WBSU-noodi numero 42 nappi 1 on ”masterkytkin” isommalle määrälle valaisimia (esim. koko yläkerran sammutus).

Ledin sytytys tarkoittaa myös sitä, että ko. napin ”pinoon” (pino sijaitsee MCU:lla) lisätään tieto releistä, joita on ohjattu päälle. Mikäli painetaan painiketta, jonka ledi palaa, ohjataan kaikki pinoon lisätyt releet/painikeledit 0-asentoon.

Huom! Vaikka WBSU sisältää vain 3 lediä, samaa toimintamallia voi käyttää kaikille WBSU- outputeille. On MCU:n vastuulla hoitaa tämä pinologiikka ja lähettää väylälle lediohjausviesti vain niille ledeille, joita laitteessa oikeasti on.

Huom! Esimerkkikuvissa näkyvä Web-käyttöliittymä generoidaan automaattisesti sääntökuvauksesta. Samalla kun kuvataan järjestelmän toiminta fyysisille kytkimille syntyy myös selain- ja mobiilikäyttöliittymät.

sunnuntai 1. helmikuuta 2004

Järjestelmän kuvaus

SmartPirtti on CAN-väyläpohjainen järjestelmä, jossa samassa väylässä on erilaisia noodeja:

WBSU = Wall Button Swicth Unit
ECU = Electric Central Unit
BMU = Bus Master Unit
MCU = Master Control Unit

Wall Button Swicth Unit (WBSU)

WBSU:lla on yksilöllinen CAN ID (16-48) ja se pystyy lukemaan n-kpl painikkeita. Väylälle lähetetään viesti sekä painikkeen alas- että päästötilasta. WBSU:lla on 3 ohjattavaa lediä, joiden kirkkautta voidaan säätää 0-100%.
Kuva: WBSU:n toimintamalli. WBSU:hun

Electric Central Unit (ECU)

ECU:lla on yksilöllinen CAN ID (16-48) ja se pystyy ohjaamaan 14 relettä (1-14), neljää himmennintä (DA) ja lukemaan neljää ulkoista input-tietoa.

Bus Master Unit (BMU)

BMU liittyy väylään ja se muuntaa CAN-väyläviestit esim. PC:llä käsiteltäväksi sarjaliikenneviesteiksi. Sarjaliikenteellä voidaan vastaavasti lähettää CAN-viestejä väylällä oleville noodeille ja näin ohjata esim. ECU:n releitä tai WBSU:iden ledien tiloja.

Master Control Unit (MCU) - Tapahtumankäsittelijä

MCU on laite tai ohjelma, jolle voidaan opettaa toiminnallisuuksia, mitä ohjauksia tapahtuu haluttujen tapahtumien seurauksena. Näin esim. valopainikkeen (WBSU) painaminen saa aikaan rele-ohjauksen halutulla ECU:lla sekä sytyttää valopainikkeen LEDin.
Ensimmäisessä toteutuksessa MCU:n rooli hoidetaan PC-ohjelmalla, joka on liitetty väylään BMU:lla. Kakkosvaiheessa PC:llä tehty ja testattu toimintomalli voidaan tallentaa väylällä olevalle MCU:lle, joka voi olla esim. BMU:hun tai ECU:un lisätty toiminnallisuus.

torstai 1. tammikuuta 2004

Skenaariokertomus

Seppo painaa makuuhuoneen ovenpielestä painikkeesta 1 kattovalon päälle. Painikkeen 1 ledi kirkastuu ilmoittaen, että valot on päällä. Samalla kirkastuu sängyn päässä painikkeen 10 ledi.
Seppo painaa ovenpielestä painikkeesta 2 seinävalon päälle. Painikkeen 2 ledi kirkastuu.
Seppo painaa painiketta 10. Koska siinä on kirkas merkkivalo (tarkoittaen, että valot on päällä), sammuu sekä kattovalo että seinävalo.

Sekä painike 1 että 2 on opetettu ohjaamaan myös painikkeen 10 lediä ja näin yhdellä napilla voidaan sammuttaa useita valaisimia. Painikkeen 10 päällekytkentätoiminto voi ohjata vain esim. seinävaloa, eli kyseessä on perinteistä ”nappula – valo-ohjaus”-ryhmittelyä älykkäämpi toimintamalli.

Kaikki yläkerran painikkeet voidaan myös liittää alakerrassa olevaan ”Koko yläkerta”-nappiin. Näin alakerrassa syttyy ledi kirkkaana kun yläkerrassa on yksikin valo päällä. Alakerran nappia painamalla sammuu kaikki yläkerran valot.