• Ei tuloksia

Design and implementation of the user interface software of an uninterruptible power supply

N/A
N/A
Info
Lataa
Protected

Academic year: 2022

Jaa "Design and implementation of the user interface software of an uninterruptible power supply"

Copied!
71
0
0

Kokoteksti

(1)

TEKNILLINEN KORKEAKOULU Sähkö-ja tietoliikennetekniikan osasto

Tuomo Kaikkonen

VARMISTETUN TEHONSYÖTTÖLAITTEEN KÄYTTÖLIITTYMÄ- OHJELMISTON SUUNNITTELU JA TOTEUTUS

Diplomityö, joka on jätetty opinnäytteenä tarkastettavaksi diplomi-insinöörin tutkintoa varten Espoossa 16.03.2004

Työn valvoja Professori Jorma Skyttä

Työn ohjaaja Diplomi-insinööri Risto Karola

(2)

TEKNILLINEN KORKEAKOULU Diplomityön tiivistelmä Tekijä: Tuomo Kaikkonen

Työn nimi: Varmistetun tehonsyöttölaitteen käyttöliittymäohjelmiston suunnitteluja toteutus

Päivämäärä: 16. Maaliskuuta, 2004 Sivumäärä: 61 + viii Osasto: Sähkö- ja tietoliikennetekniikan osasto

Profesuuri: Signaalinkäsittelytekniikka Työn valvoja: Professori Jorma Skyttä Työn ohjaaja: DI Risto Karola

Varmistetut tehonsyöttölaitteet, eli UPS-laitteet, ovat sähkönjakelun katkeamattomuuden ja häiriöttömyyden varmistamiseen käytettyjä laitteita. Niiden ensisijaisena tarkoituksena on suojata herkkien sähköllä toimivista laitteista koostuvien järjestelmien toimintaa häi­

riötilanteissa.

Työn kohteena ollut UPS-laite koostui sähkötehoa käsittelevistä osioista, sekä laitet­

ta ohjaavasta prosessorikortista. Laitteeseen kuului myös CAN-väylän (Controller Area Network) kautta prosessorikorttiin yhteydessä oleva etupaneeli, joka sisältää graafisen nestekidenäytön, summerin, merkkivaloja sekä painikkeita.

Tässä diplomityössä suunniteltiin ja toteutettiin UPS-laitteen etupaneelin käyttöliittymää ohjaava ohjelmisto. Työssä paneuduttiin käyttöliittymäohjelmistoa suunniteltaessa koh­

dattaviin ongelmiin ja muihin huomioon otettaviin tekijöihin. Ohjelmisto toteutettiin C- ohjelmointikielellä.

Ohjelmisto suunniteltiin siten että sen avulla saataisiin toteutettua sama käyttöliittymä joustavasti myös useilla eri kielillä. Tämän toteuttamiseksi työssä kehitettiin tapa ohjel­

mallisesti ilmaista käyttöliittymän tekstien ja elementtien sijoittelu sekä sisältö vapaasti eri kielten tarpeiden mukaisesti.

Lopuksi toteutettiin itse käyttöliittymä, joka käyttää hyväkseen käyttöliittymäohjelmis­

toon toteutettuja ominaisuuksia. Käyttöliittymästä toteutettiin erikielisiä versioita, mu­

kaan luettuna kiinankielinen versio. Toteutuksessa pyrittiin kiinnittämään huomiota myös laitteen käytettävyyteen.

Avainsanat: Varmistettu tehonsyöttölaite, UPS-laite, signaaliprosessori, CAN-väylä, etupaneeli, käyttöliittymä, C-kieli

(3)

HELSINKI UNIVERSITY OF TECHNOLOGY Abstract of the Master’s Thesis Author: Tuomo Kaikkonen

Title of thesis: Design and implementation of the user interface software of an uninterruptible power supply

Date: 16th March, 2004 Pages: 61 + viii

Department: Department of Electrical and Communications Engineering Profesorship: Signal processing technology

Supervisor: Professor Jorma Skyttä Instructor: MSc Risto Karola

Uninterruptible power supplies, or UPS devices in short, are devices designed for secur­

ing the distribution of electricity against breaks and other kinds of disturbances. Their primary purpose is to protect the operation of vulnerable systems consisting of electrical devices.

The UPS described in this thesis consists of a few major components. Most important parts for the device as a UPS are the parts for handling electrical power and a dedicated processor board. The processor board contains a digital signal processor (DSP) that is responsible for all the control. There is also a separate front panel, which is connected to the processor board using a controller area network (CAN) bus. The front panel con­

tains a graphical liquid crystal display (LCD), buttons, light emitting diodes (LEDs) and a buzzer that together make up the front panel user interface of the unit.

This thesis focuses on the design and implementation of a user interface software of a UPS device. The user interface software in this case means a software that controls the user interface in the DSP processor, and uses the front panel for user interaction. The the­

sis discusses the various problems and issues that need to be taken care of. The software was implemented using C programming language.

During the design of the software, attention was paid to keep it flexible and understand­

able. The software was designed also keeping in mind the fact that it will need to adapt to the needs of the different languages. This was taken care of by designing a way to define free positioning of user the interface texts and elements in different language versions.

In the final phase, a user interface was built in different languages, including Chinese. It makes use of the features implemented in the user interface software. Attention was paid also to usability issues.

Keywords: Uninterruptible power supply, UPS, signal processor,

CAN bus, front panel, user interface, C programming language

(4)

Alkulause

Tämä diplomityö on tehty Powerware Oy:n palveluksessa, jossa kirjoittaja on toi­

minut tuotekehittäjänä laiteohjelmistojen parissa. Työn aikana Powerware Oy on tarjonnut monipuolisen ja itsenäisen ympäristön tämän diplomityön tekoon.

Kiitän saamastani kannustuksesta ja tuesta työni ohjaajaa DI Risto Karolaa Powerware Oy:stä. Suuret kiitokset myös työn aikana kannustusta antaneille ja us­

koa kirjoitustyön etenemiseen valaneille kollegoille. Kiitokset myös kiinnostunutta otetta UPS-laitteita kohtaan esittäneelle työni valvojalle Jorma Skytälle TKK:sta.

Kiitokset tuesta myös Dinalle, sekä muille perheenjäsenille ja ystäville.

Espoo, 16 Maaliskuuta, 2004

Tuomo Kaikkonen

(5)

Sisältö

Tiivistelmä... ii

Abstract... iii

Alkulause... iy Sisältö... v

Symboli- ja lyhenneluettelo...viü 1 Johdanto 1 2 UPS-laitteiden tekniikka 3 2.1 UPS-laite... 3

2.1.1 On-line UPS... 3

2.1.2 Rinnankytkentä... 5

2.2 CAN-väylä... 5

2.2.1 ominaisuudet... 6

2.2.2 Tiedonsiirron Perusteet... 6

2.2.3 CAN-paketin rakenne ... 7

2.2.4 CANalyzer... 8

2.3 Työn kohteena olleen UPS-laitteen rakenne... 9

2.4 Kontrollikortti... 10

2.4.1 Signaaliprosessori TMS320F2812... 10

2.4.2 eCAN -moduuli... 10

2.4.3 D S P/B IOS... 10

2.5 Näyttökortti... 13

2.5.1 LCD-näytön ohjaaminen... 14

2.5.2 Muiden toimintojen ohjaaminen... 15

2.5.3 Nappuloiden toiminta 15

(6)

SISALTO vi

2.5.4 Ohjelman perustoiminta ja päivitysohjelmointi... 15

2.5.5 Aikavalvonta... 16

3 Taustatietoja toteutukselle 17 3.1 Laiteohjelmistot UPS-laitteissa... 17

3.1.1 C-ohjelmointikieli... 17

3.2 Kielet ja käyttöliittymä... 18

3.2.1 Unicode... 19

4 UPS-laitteen käyttöliittymäohjelmiston suunnittelu 20 4.1 Käyttöliittymäohjelmiston vaatimukset... 20

4.2 Menurakenteen esittäminen... 21

4.3 Menujen kielen ja ulkonäön esitysmuoto... 23

4.4 Kontrollikoodien sisällyttäminen merkkijonoihin... 25

4.5 Kielen mukaan muuttuvat osat... 28

4.6 Lisätoiminnallisuus ja tapahtumiin reagointi... 29

4.6.1 Toimintofunktiot... 29

4.6.2 Tapahtumat... 29

4.7 Käyttöliittymäohjelmaan toteutettuja toimintoja... 30

4.8 Käyttöliittymäohjelman perustoiminta... 32

4.8.1 Näytön piirtäminen... 33

4.8.2 Näytön päivitys... 34

4.8.3 Usearivisten tekstien käsittely... 35

4.8.4 Näytön ohjaaminen... 36

4.9 Graafisia ominaisuuksia... 37

4.9.1 Painikkeiden kuvakkeet ... 37

4.9.2 Mimic-näyttö... 37

4.10 UPS:n parametrien hallinta... 38

4.11 Kieliversioiden testaaminen... 40

5 Käyttöliittymän toteutus käytännössä 41 5.1 Käyttöliittymän integrointi DSP/BIOS-ympäristöön...41

5.1.1 Säietyypin valinta... 41

(7)

SISÄLTÖ vii

5.1.2 CAN-väylän käyttö näytön kanssa kommunikointiin .... 42

5.1.3 Toteutettu ratkaisu... 42

5.2 Merkkijonojen pakkaaminen... 44

5.2.1 Merkkijonojen pakkaamisen vaihtoehdot... 45

5.2.2 Merkkijonojen pakkaamisen toteutus ... 45

5.3 Erikielisten käännöstiedostojen luominen... 46

5.4 Käyttöliittymän toteutus ... 47

5.4.1 Lähtökohdat toteutukselle... 47

5.4.2 Käännökset eri kielille... 48

5.4.3 Mittausarvot ja mittausarvojen lukitseminen näytölle .... 50

5.4.4 Neljän painikkeen ongelmat ja toteutettuja ratkaisuja .... 50

5.4.5 Näytön kielen vaihtaminen... 51

5.4.6 Painikkeiden kuvakkeet ... 53

5.5 Toteutuksen eteneminen ... 54

6 Johtopäätökset 55

Kirjallisuutta 57

A Esimerkkejä kontrolli- ja muuttujakoodien määrittelystä C-kielellä 59

В Toteutettu menurakenne 61

(8)

SISÄLTÖ viii

Symboli- ja lyhenneluettelo

A/D ANSI

Analogi-Digitaali (Analog-Digital)

Standardien kehitystä tukeva organisaatio USA:ssa (American National Standards Institute)

ANSI-C ASCII

ANSI:n julkaisema C-ohjelmointikielen kielen standardi Seitsemän bittinen merkkijärjestelmästandardi (American Standard Code for Information Interchange)

ATK CAN CRC

Automaattinen Tietojenkäsittely

Sarjamuotoinen tiedonsiirtoväylä (Controller Area Network) Syklinen varmistus (Cyclic Redundancy Check)

CSMA/CD Väylän vuoronvarausmenettely törmäyksentunnistuksella (Carrier Sense Multiple Access with Collision Detection) DSP

DSP/BIOS

Digitaalinen signaaliprosessori (Digital Signal Processor) Texas-Instruments:in reaaliaikainen käyttöjärjestelmä signaaliprosessoreille (BIOS = Basic Input Output System) EEPROM Sähköisesti tyhjennettävä uudelleenkirjoitettava haihtumaton

lukumuisti (Electrically Erasable Programmable Read Only Memory)

HWI Laitteistokeskeytys (Hardware Interrupt)

IDE Taustasäie (Idle Loop)

ISR LCD LED

Keskeytyksen palvelurutiini (Interrupt Service Routine) Nestekidenäyttö (Liquid Crystal Display)

Valodiodi (Light Emitting Diode) RAM

ROM SWI Unicode UPS

Käyttömuisti (Random Access Memory)

Haihtumaton ohjelmamuisti (Read Only Memory) Ohjelmallinen keskeytys (Software Interrupt) Kansainvälinen merkkijärjestelmästandardi

Varmistettu tehonsyöttölaite (Uninterruptible Power Supply)

(9)

Luku 1 Johdanto

Maailman sähköistyessä yhä enemmän ja enemmän kasvavat myös varmistettu­

jen tehonsyöttölaitteiden, eli UPS-laitteiden (UPS, Uninterruptible Power Supply) markkinat. Jotta alati kasvavilla markkinoilla pysyisi kilpailukykyisenä on UPS- laitteita valmistavan yrityksen pystyttävä tuomaan markkinoille uudistuvia laitteita.

Asiakkaat arvostavat [1] laitteissa ennen kaikkea edullista hintaa, laitteen merk­

kiä sekä luotettavuutta. Markkinoilla edukseen erottumiseksi on enenevissä määrin kiinnitettävä huomiota myös pieniin yksityiskohtiin. Näihin kuuluu myös laitteen etupaneelin käyttöliittymä.

UPS-laitteen etupaneelin käyttöliittymä on perinteisesti edustanut hyvin pientä osaa laitteesta. Se on tyypillisesti koostunut muutamasta laitteen toimitilaa ilmaisevasta LED-valosta (LED, Light Emitting Diode), sekä virtakytkimestä. Myöhemmin mu­

kaan ovat tulleet alfanumeeriset näyttöpaneelit ja tuoneet mukanaan yksinkertaisten tekstipohjaisten käyttöliittymien muodossa mahdollisuuden valvoa sekä ohjata lait­

teen toimintaa yhä laajemmalla skaalalla. Etupaneelin käyttöliittymä on kuitenkin perinteisesti ollut se viimeinen paha joka laitteeseen on toteutettu kiireisesti juuri ennen laitteen julkaisua eikä siihen ole kiinnitetty järin suurta huomiota.

Etupaneelin kautta voidaan seurata laitteen toimitilaa ja selata erilaisia mittausar­

voja, joita ovat esimerkiksi laitteen syöttämän sähköverkon ottama tehoja laitteen akustosta riittävä varakäyntiaika sähkökatkon aikana. Etupaneelin kautta voidaan nähdä myös mahdollisten virhetilanteiden aiheuttamat hälytykset ja selailla etenkin huoltomiehiä hyödyttää tapahtumalokia. Myös monet laitteen toimintaan vaikutta­

vat asetukset ja parametrit ovat aseteltavissa etupaneelin käyttöliittymän kautta.

(10)

2 Yksi tärkeä käyttötarkoitus etupaneelille johtaa juurensa kuitenkin laitteen mark­

kinoinnista. Kun UPS-laitteita esitellään yleisölle vaikkapa messuilla, on laitteesta ulospäin näkyvä osa yleensä juuri etupaneeli. Varsinkin jos laitetta voidaan etupa­

neelin kautta ohjata ostajan omalla kielellä, on sillä positiivinen vaikutus juuri sen laitteen ostopäätökseen.

Tässä työssä käsitellyn UPS-laitteen ohjaus on toteutettu nykyaikaisella signaa­

liprosessorilla. Laitteen käyttöliittymän esittämistä varten laitteessa on erillinen CAN-väylän (Controller Area Network) kautta ohjattava graafinen käyttöliittymä- paneeli, jonka ominaisuuksiin kuului perustason näytönkäsittelyominaisuudet.

Tämän diplomityön tarkoituksena oli toteuttaa signaaliprosessoriin muun ohjaus- ohjelmiston oheen laitteen etupaneelin käyttöliittymää ohjaava ohjelmisto. Työn ta­

voitteena oli kiinnittää erityisesti huomiota ohjelmiston selkeään rakenteeseen ja ymmärrettävyyteen jotta käyttöliittymän muokattavuus ja laajennettavuus jälkikä­

teen säilyisi mahdollisimman hyvänä ja yksinkertaisena. Suunnittelussa oli otettava huomioon myös prosessorin rajallisen muistin asettamat rajoitukset. Työ oli tarkoi­

tus tehdä C-ohjelmointikieltä käyttäen.

Tärkeä tavoite oli suunnitella käyttöliittymäohjelmisto siten että se mukautuisi tar­

peeksi joustavasti myös eri kielten asettamiin tarpeisiin eritoten näytölle ladottavan tekstin ja tietojen osalta. Viimeisessä vaiheessa tavoitteena oli vielä toteuttaa itse laitteen käyttöliittymä työn aikana rakennetun ohjelmiston päälle.

(11)

Luku 2

UPS-laitteiden tekniikka

2.1 UPS-laite

Nykyisin on suuntauksena että erilaisten sähköllä toimivien laitteiden määrä ko­

deissa ja yrityksissä kasvaa. Varsinkin monenlaisia tehtäviä hoitavia automaattisia tietojenkäsittely- eli ATK-järjestelmiä on yrityksissä yhä enemmän ja enemmän.

Häiriöt näiden laitteistojen toiminnassa aiheuttavat suuria ongelmia ja kuluja yri­

tysten toiminnassa, moitteeton toiminta on tullut tärkeäksi asiaksi.

Huomiota on näin ollen kiinnitetty entistä enemmän järjestelmän ulkopuolelta tu­

leviin häiriöihin. Ulkopuolisista häiriöistä yleisimmät ovat sähkönsyötöstä johtuvat [2] häiriöt. Erilaisia sähkönsyötön häiriöitä ovat muun muassa jännitepulssit, kat­

kokset, transientit sekä yli-ja alijännitteet. Sähkönsyötön häiriöitä on havainnollis­

tettuna kuvissa 2.1 ja 2.2.

Sähkönsyötön häiriöttömyys on ehdoton edellytys, jotta ATK-järjestelmät voisivat toimia luotettavasti. Tätä tehtävää varmistamaan käytetään varmistettua tehonsyöt- tölaitetta, lyhemmin ilmaistuna UPS-laitetta. Suojattavaa kuormaa puolestaan nimi­

tetään usein kriittiseksi kuormaksi.

2.1.1 On-line UPS

On-line UPS -laitteen, eli kahden muunnoksen UPS-laitteen rakenne koostuu nel­

jästä perusosasta: tasasuuntaajasta, akustosta, vaihtosuuntaajasta sekä staattisesta

(12)

2.1 UPS-laite 4

1yhytäikäiset

katkokset transientit

lyhytaikaiset ylij ännitteet jännitepulssit

Kuva 2.1 : Verkkojännitteen häiriöitä

jännite- ylijännite

alijännite

Kuva 2.2: Verkkoj ännitteen häiriöitä

kytkimestä. Kaaviokuva on-line UPS -laitteesta on nähtävissä kuvasta 2.3.

Ohitusverkko

Staattinen kytkin

Tasasuuntaaj a Vaihtosuuntaaja

Akusto

Kuva 2.3: On-line UPS -laitteen perusrakenne

Tällaisessa laitteessa normaalitoiminnassa sähkö syötetään kriittiselle kuormalle tasasuuntauksen ja vaihtosuuntauksen kautta. Kahden muunnoksen toimintaperi­

(13)

2.2 CAN-väylä 5 aate takaa lähtöjännitteen riippumattomuuden UPS-laitetta syöttävän sähköverkon häiriöistä [3] ja katkoksista. Suuretkaan jännite- tai taajuuspoikkeamat eivät siirrä UPS-laitetta akkusyötölle, vaan tasasuuntaaja kykenee syöttämään tarvittavan vir­

ran vaihtosuuntaajalle.

Normaalitoiminnan aikana myös akuston latausta pidetään yllä tuloverkosta saata­

valla virralla. Tuloverkon pettäessä kuormaa syötetään akustoa purkaen.

Staattisen kytkimen avulla voidaan UPS-laitteen ulostulo valita vaihtosuuntaajan ja niin sanotun ohitusverkon väliltä. Staattinen kytkin on läsnä kahden tärkeän syyn

[4] takia:

1. Ylikuormitustilanteessa voidaan riittävä tehonsyöttö tarjota ohitusverkon kautta. Ylikuormituksen voi aiheuttaa esimerkiksi kuormana olevien laittei­

den ottamat suuret käynnistymisvirrat.

2. Ohituskytkin varmistaa tehonsyötön kriittiselle kuormalle jos itse UPS-laite jostain syystä vikaantuu.

2.1.2 Rinnankytkentä

Sähkönsyöttöä voidaan usein edelleen varmentaa käyttämällä useampaa eri UPS- laitetta rinnakkain, tällöin ne kytketään yhdessä syöttämään kriittistä kuormaa.

Laitteiston kokonaisteho mitoitetaan riittäväksi siten, että esimerkiksi yhden UPS- laitteen vioittuminen ei vielä vaaranna kuorman suojausta sähkökatkon yllättäessä.

2.2 CAN-väylä

CAN-väylä (Controller Area Network) [6] on järeä sarjamuotoinen tiedonsiirto­

väylä, joka kykenee IMbps siirtonopeuteen. Sen loi alunperin saksalainen auto­

alan järjestelmien toimittaja Roher Bosch [5] 1980-luvun puolivälissä. Tavoitteena oli tehdä autoista luotettavampia, turvallisempia ja taloudellisempia vähentämäl­

lä kaapeloinnin aiheuttamaa painoa ja kompleksisuutta. Julkaisunsa jälkeen CAN- protokolla on saavuttanut laajaa suosiota erityisesti teollisuusautomaatiossa sekä autoalan sovelluksissa. CAN-protokollan määrittely on standardoitu ISO:n (Inter­

national Organization of Standardization) toimesta numerolla ISO-11898 [7].

(14)

2.2 CAN-väylä 6

2.2.1 ominaisuudet

CSMA/CD

CAN-protokolla on CSMA/CD (Carrier Sense Multiple Access with Collision De­

tection) protokolla. CSMA tarkoittaa sitä että jokaisen verkkoa käyttävän laitteen on seurattava väylää, laite voi aloittaa lähetyksen vasta kun väylä on ollut tietyn aikaa joutilaana. CD (Collision Detection) puolestaan tarkoittaa yhteentörmäysten tunnistusta. Jos kaksi laitetta aloittaa lähetyksen samanaikaisesti, ne huomaavat yh­

teentörmäyksen ja toimivat asiaankuuluvan menettelyn mukaisesti.

CAN-protokollassa käytetään säilyttävää bittikohtaista sovittelumetodia (Non­

destructive Bitwise Arbitration). Tämä tarkoittaa että viestit säilyvät vahingoittu­

mattomina vaikka törmäyksiä havaittaisiinkin. Sovittelutapahtumat väylällä tapah­

tuvat korruptoimatta tai viivästämättä korkeamman prioriteetin omaavan viestin vä­

litystä.

2.2.2 Tiedonsiirron Perusteet

CAN perustuu niin kutsuttuun hajalähetysmekanismiin, jossa jokainen laite näkee jokaisen viestin, mutta reagoi vaan sille itselle tärkeisiin viesteihin. Protokolla ei määrittele asemia ja niiden osoitteita, se määrittelee vain viestin sekä viestin tun­

nisteen. Viestin tunniste on uniikki koko verkossapa se määrittelee viestin sisällön lisäksi viestin prioriteetin. Tämä on tärkeää usean lähettäjän kiistellessä pääsystä väylälle.

Viestin prioriteetin määrittelee viestin aloittava tunnistekoodi, tärkeämmän viestin tunnistus perustuu tunnistekoodien vertailemiseen. Prioriteetit määritellään järjes­

telmän suunnitteluvaiheessa, eikä niitä voida muuttaa dynaamisesti. Matalimman tunnistekoodin omaavalla viestillä on korkein prioriteetti.

Säilyttävä bittikohtainen sovittelu on toteutettu siten, että jokainen lähettävä laite seuraa väylälle lähettämänsä bitin tilaa. Konfliktitilanteessa, dominoiva nolla-bitti näkyy väylälläpä mahdollista ykkösbittiä lähettävä laite joutuu väistymään ja siitä tulee automaattisesti kuuntelija kunnes väylä seuraavan kerran vapautuu. Sovittelu tapahtuu siis viestin aloittavaa tunnistekoodia lähetettäessä, jolloin ainoastaan kor­

keamman prioriteetin omaavan viestin lähettäjä jatkaa muiden väistyessä. Kuvassa

(15)

2.2 CAN-väylä 7

S

0

F 1C 9 8 7 6 5 4 3 2 1 0 R T R

Kontrolli

& Data

Laite 1 Vain kuuntelu

Laite 2

Laite 3 Vain kuuntelu

Väylä

Kuva 2.4: Säilyttävä bittikohtainen sovittelu toiminnassa

2.4 on esitettynä esimerkkitapaus, jossa laitteet yksi ja kolme väistyvät laitteen kak­

si saadessa oikeuden jatkaa lähetystä.

2.2.3 CAN-paketin rakenne

CAN-protokolla tukee kahta viestien kehysrakennetta, joiden ainoana oleellisena erona on tunnistekoodin pituus. Niin kutsuttu standardikehys tukee 11-bittistä tun­

nistetta, laajennettu kehys tukee 29-bittistä tunnistekoodia.

Tunniste-

koodi Data

Kuva 2.5: CAN-standardikehyksen rakenne

CAN-standardikehys on esitettynä kuvassa 2.5. Kehyksen alussa on siis 11-bittinen tunnistekoodi, joka määrää paketin prioriteetin sekä kertoo vastaanottajille sen tyy­

pin. Kehys voi sisältää nollasta kahdeksaan tavua hyötydataa. Datan määrä kerro­

taan DLC-kentässä jota seuraa kyseisen kentän kertoman määrän verran tavuja hyö-

(16)

2.2 CAN-väylä 8 tydataa. Kehyksen eheyden takaa CRC-kenttä (CRC, Cyclic Redundancy Check), joka sisältää syklisen varmistussumman, vastaanottajat tarkistavat että CRC-summa pitää paikkansa. Viestin lopussa esiintyvän ACK-bitin asettavat viestin oikein vas­

taanottavat laitteet, jolloin tiedetään että ainakin yksi laite on vastaanottanut viestin oikein.

Laajennettu kehys erotetaan standardikehyksestä IDE-bitin avulla, jos se on päällä on kyseessä laajennettu kehys jolloin IDE-bitin jälkeen seuraa tunnistekentän 18- bittinen laajennusosa. Jotta laajennettua kehystä voidaan käyttää on kaikkien väylän laitteiden tuettava sitä, muutoin väylällä syntyy väärinkäsityksiä.

2.2.4 CANalyzer

CANalyzer on työssä apuna käytetty työkalu CAN-väylään perustuvien järjestel­

mien kehitystyöhön. Se koostuu kannettavaan tietokoneeseen liitettävästä lisäkor­

tista jonka kautta voidaan liittyä CAN-väylälle, sekä tietokoneessa ajettavasta oh­

jelmasta jonka kautta sitä käytetään.

CAN-väylä

Laite 2 Laite 1

CANalyzer

Kuva 2.6: CANalyzer -työkalu

Tämän työn kannalta CANalyzer-työkalun tärkeimpänä ominaisuutena oli mahdol­

lisuus seurata CAN-väylällä liikkuvia paketteja. CANalyzer kuuntelee ylimääräise­

nä laitteena CAN-väylää ja rekisteröi paketit viestilokiin, josta niiden lähetysaikoja ja sisältöä voidaan tarkastella. CANalyzer voidaan myös asettaa lähettämään väy­

lälle paketteja, joko jonkin näppäimen painalluksen seurauksena tai vasteena jonkin tietyn paketin vastaanottoon.

(17)

2.3 Työn kohteena olleen UPS-laitteen rakenne 9

2.3 Työn kohteena olleen UPS-laitteen rakenne

Tämän työn kohteena olleen UPS-laitteen kaaviokuva on esitettynä kuvassa 2.7.

Fyysisesti suurin osa laitteesta koostuu sähkötehon ohjaamiseen käytettävistä osioista. Nämä osat käsittävät tasa- ja vaihtosuuntaajan, akkulaturin, sekä ohitus- verkon ohjaamiseen käytetyn staattisen kytkimen.

Kontrollikortti

Näyttökortti

sovitus A/D- muunnoksi11e

EEPROM

Ohitusverkko

Vaihto­

suuntaaja Tasa­

suuntaaja

Voimasähkö ja I/O

Kuva 2.7: Työn kohteena olleen UPS-laitteen rakenne pääpiirteissään

Laitteen ohjauksesta vastaa yleiskäyttöiseksi suunniteltu kontrollikortti. Kontrolli- kortin ytimenä toimii signaaliprosessori, joka huolehtii pääosin koko UPS-laitteen ohjauksesta. Signaaliprosessorin seurana kontrollikortilta löytyy haihtumatonta EEPROM-muistia (Electrically Erasable Programmable Read Only Memory) tär­

keiden asetusten tallettamista varten. Suuri osa kortin pinta-alasta on täytetty analogiasignaalien sovituksesta sekä multipleksauksesta huolehtivalla logiikalla.

Analogi-digitaali, eli A/D-muunnosten kautta kortti saa mittaustiedot laitteen teho- sähköosioilta. Signaaliprosessori on yhteydessä CAN-väylän kautta näyttöpanee- liin, sekä PLD-piireille ohjelmoidun logiikan kautta muihin laitteen osioihin.

(18)

2.4 Kontrollikortti 10

2.4 Kontrollikortti

2.4.1 Signaaliprosessori TMS320F2812

Signaaliprosessori TMS320F2812 Texas Instrumentsiin TMS320-perheeseen kuu­

luva kiinteän pilkun prosessori [8]. Prosessorin suorituskyvystä vastaa 150MHz kel­

lotaajuudella käyvä ydin.

Prosessorin ominaisuuksiin kuuluu muun muassa 128 kilosanan uudelleenohjelmoi­

tava flash ROM-muisti (ROM, Read Only Memory), sekä 18 kilosanaa käyttö- eli RAM-muistia (RAM, Random Access Memory). Muistin koko ilmoitetaan nime­

nomaan sanoina, sillä käytetty prosessori käsittelee muistia 16 bitin erotuksella.

Prosessorista löytyy myös muun muassa 16-kanavainen 12-bittinen A/D-muunnin, sekä CAN-väyläyhteysmoduli.

Prosessori tarjoaa myös raudalle toteutetun edistyneen ajonaikaisen emulaatiotoi- minnon virheiden havaitsemista ja korjaamista helpottamaan. Tämä mahdollistaa esimerkiksi ohjelman ajamisen käsky kerrallaan prosessorin sisällä.

2.4.2 eCAN -moduuli

Signaaliprosessori sisältää CAN 2.0B standardin mukaisen CAN-väylän ohjainmo- duulin [11]. Ohjain sisältää 32 yksikön kokoisen postilaatikkorakenteen, joista jo­

kainen yksittäinen postilaatikko voidaan asettaa joko lähettämään tai vastaanotta­

maan CAN-paketteja. Postilaatikot ovat toisistaan riippumattomia, joten jokaisen postilaatikon käyttämät viestien tunnistekoodit voidaan asettaa vapaasti. Pakettien vastaanotossa voidaan käyttää postilaatikkokohtaista suodatusta vastaanotettavien viestien tunnistekoodien mukaan.

2.4.3 DSP/BIOS

DSP/BIOS [9] on Texas-Instrumentsiin signaaliprosessorejaan varten suunnittele­

ma reaaliaikainen käyttöjärjestelmä. Se on suunniteltu sovellutuksille, jotka vaati­

vat muun muassa reaaliaikaista ajoitusta ja synkronointia sekä ajonaikaista ohjel­

man suorituksen valvontaa.

(19)

2.4 Kontrollikortti 11 Säikeiden hallinta

Yleensä reaaliaikaiset DSP-sovellukset (DSP, Digital Signal Processor) suorittavat useita erillisiä näennäisesti riippumattomia toimintoja samanaikaisesti. Toimintoja suoritetaan esimerkiksi kontrollisignaaleista riippuen tai tietyn datan saatavuuden seurauksena. Sekä toiminnot että niiden suoritushetket ovat tärkeitä. Tällaisia toi­

mintoja kutsutaan säikeiksi (thread). Säikeiden määrittely on usein löyhää, mutta DSP/BIOS -ympäristössä kaikki itsenäiset komentojen suoritusvirrat lasketaan säi­

keiksi.

DSP/BIOS mahdollistaa suoritettavan sovelluksen kasaamisen säikeistä joista jokai­

nen suorittaa omaa toimintoansa. Useita säikeitä käyttävää ohjelmaa ajetaan yhden prosessorin sisällä siten, että korkeamman prioriteetin omaavien säikeiden sallitaan suorittaa tehtävänsä keskeyttäen toimiensa ajaksi alemman prioriteetin omaavien säikeiden suorituksen.

DSP/BIOS tarjoaa tuen useille erityyppisille säikeille joilla on eriarvoiset prioritee­

tit. Jokaisella säietyypillä on erilaiset ominaisuudet sekä suorituksen, että alemman prioriteetin omaavien säikeiden keskeytyksen suhteen. Säikeiden tyypit korkeim­

masta matalimpaan prioriteettiin ovat:

• laitteistokeskeytykset (HWI, Hardware Interrupt)

• ohjelmalliset keskeytykset (SWI, Software Interrupt)

• tehtävät (Tasks)

• taustasäie (IDL, Idle Loop)

Laitteistokeskeytykset

Laitteistokeskeytykset (HWI, Hardware Interrupt) ovat keskeytyksiä jotka tyypil­

lisessä DSP-ympäristössä suoritetaan vasteena sisäisten oheislaitteiden tai ulkois­

ten laitteiden palvelupyyntöihin. HWI-keskeytyksen palvelurutiini (ISR, Interrupt Service Routine) suoritetaan periaatteessa välittömästi HWI-keskeytyksen liipaisun seurauksena, jos HWI-keskeytyksiä ei ole väliaikaisesti estetty tai toinen ylemmän prioriteetin omaava HWI ei ole suorittamassa tehtäväänsä. Laitteistokeskeytykset

(20)

2.4 Kontrollikortti 12 ovat korkeimman prioriteetin omaavia keskeytyksiä ja ne suorittavat tyypillises­

ti tiukan aikarajan (clOOus) omaavaa tehtävää. Ohjelmistokoodin määrässä HWI- keskeytyksessä pyritään tyypillisesti vähimpään mahdolliseen, jotta muiden aika­

kriittisten säikeiden suoritus ei häiriintyisi.

Ohjelmalliset keskeytykset

Ohjelmalliset keskeytykset (SWI, Software Interrupt) sijaitsevat prioriteettihierar- kiassa HWI-keskeytysten alapuolella. Ne laukaistaan kutsumalla SWI-funktiota oh­

jelman sisältä käsin. Niiden aikarajat vaativat tiukempaa kontrollia kuin tehtävien (tasks) kohdalla, mutta ne eivät ole yhtä tiukkoja kuin HWI-keskeytysten ollessa ky­

seessä. SWI-keskeytykset sallivat HWI-keskeytyksessä jättää vähemmän aikakriit­

tinen prosessointi alemman prioriteetin SWI-säikeeseen, lyhentääkseen palveluru- tiinin vaatimaa aikaa. SWI-keskeytykset suoritetaan HWI-keskeytysten tavoin aina kerralla loppuun asti.

Tehtävät

Tehtvät (tasks) omaavat korkeamman prioriteetin kuin taustasäie, ja alemman prio­

riteetin kuin SWI-keskeytykset. Tehtävien suurin ero verrattuna SWI-keskeytyksiin on, että ne voivat keskeyttää suorituksensa esimerkiksi kunnes tietyt resurssit ovat saatavilla. Toisin kuin muiden säietyyppien kohdalla jotka kaikki käyttävät yhteistä systeemipinoa, jokaisella tehtävällä on käytössään oma ajonaikainen muistipinonsa.

DSP/BIOS tarjoaa useita tietorakenteita jotka mahdollistavat tehtävien välisen kom­

munikaation ja synkronisoinnin. Näitä ovat jonot (queues), postilaatikot (mail­

boxes) sekä opastinsignaalit (semaphores). Näiden avulla saadaan tietoa siirretysti synkronoidusti säikeiden välillä ja tehtävä voidaan jättää odottamaan jonkin tietyn resurssin saatavuutta.

Taustasäie

Taustasäiettä (IDL) ajetaan DSP/BIOS -sovelluksessa alimmalla prioriteettitasolla joutoajalla joka prosessorilta jää korkeamman prioriteetin omaavien säikeiden suo­

ritukselta. Taustasäie on loputon jatkuva silmukka joka ajaa yksi toisensa perään

(21)

2.5 Näyttökortti 13 IDL-objektien funktiot lävitse, sitä suoritetaan aina kunnes korkeamman tason säi­

keet sen keskeyttävät.

2.5 Näyttökortti

Käyttöliittymäkortti on erillinen piirikortti jolla käyttöliittymän eri elementit sijait­

sevat. Käyttöliittymä esitetään 100x33 pikselin kokoista graafista nestekide-, eli LCD-näyttöä (Liquid Crystal Display) käyttäen. LCD-näytön lisäksi kortilla on nel­

jä LED-valoa sekä summeri ilmaisemaan UPS-laitteen tilaa. Näiden lisäksi kortil­

ta löytyy vielä käyttöliittymän ohjaamista ja toimintojen suorittamista varten neljä painiketta. Näyttökortin eri elementit ovat esitettynä kuvassa 2.8.

LCD näyttö

O O O painikkeet valot

Summeri

PIC mikro­

kontrolleri

Kuva 2.8: Käyttöliittymäkortti

Käyttöliittymäkortti on yhteydessä muuhun UPS-laitteistoon CAN-väylän välityk­

sellä. Väylän kautta kortti saa kaiken tarvittavan ohjausinformaation, se ei itsenäi­

sesti tee mitään lukuun ottamatta tilannetta jolloin CAN-väylä ei jostain syystä ole kunnossa. Kortin ohjaamiseen käytetään mikrokontrolleria, joka suorittaa haluttuja toimintoja CAN-väylältä saamansa informaation perusteella.

Käyttöliittymäkortti toimii siis täysin oijalaitteena, se ottaa vastaan yksinkertaisia

(22)

2.5 Näyttökortti 14 komentoja, jotka suoritettuaan se lähettää kuittauksen tiedoksi operaation onnistu­

misesta. Näytön ymmärtämät komennot ovat yksinkertaisia perustoimintoja, se ei suorita itsenäistä päättelyä vaan toimii pelkästään komentojen mukaisesti. Komen­

not muodostavat hyvin pohjatason rajapinnan näytön käsittelyyn, joka kuitenkin on riittävä jottei ohjattavan LCD-näytön rautakohtainen ohjaus näy lävitse. Tällöin esimerkiksi LCD-näyttö voitaisiin tarpeen milen vaihtaa toisen valmistajan malliin itse käyttöliittymäohjelmaa muuttamatta, ainoa muutettava asia olisi CAN-väylän komentoja tulkitsevan mikrokontrollerin ohjelmakoodi.

2.5.1 LCD-näytön ohjaaminen

Kortin tarjoamia komentoja LCD-näytön ohjaamiseen ovat muun muassa näytön tyhjentäminen ja kursorin siirto haluttuun paikkaan. Oleellisia perustoimintoja ovat tekstin kirjoittaminen kursorin osoittamaan paikkaan, sekä yksittäisten pikseleiden tilan asettaminen. Kortti tarjoaa myös mahdollisuuden kirjoitettavan tekstin koon sekä merkistön asettamiseen, tekstin koko voidaan tuplata joko vaaka- tai pysty­

suunnassa, tai molemmissa. Tällä voidaan lisätä jonkin tärkeän asian huomioarvoa tai parantaa näkyvyyttä.

Jokaisen toiminnon suoritettuaan näyttö lähettää kuittauksen CAN-väylän välityk­

sellä. Kuittauksilla on muutama eri merkitys käyttöliittymää ohjaavan tehtävän kan­

nalta. Toisaalta se saa kuittausten avulla tiedon siitä että haluttu toiminto on suori­

tettu ja että CAN-kommunikaatio on kunnossa. Kuittaus voi myös sisältää muuta informaatiota, jollaista on esimerkiksi kursorin uusi sijainti ruudulla tekstin kirjoit­

tamisen jälkeen.

Käytössä oleva merkistöt on talletettuna mikrokontrollerin muistiin. Oletuksena on tavallinen ASCII-merkistö (ASCII, American Standard Code for Information In­

terchange) jota käytetään oletuskielen englannin ja muiden samaa merkistöä käyt­

tävien kielten esittämiseen. Lisäksi näytön muistiin voi olla talletettuna mitä ta­

hansa muita merkistöjä. Rajoittavana tekijänä kuitenkin on, että yksi merkistö on maksimissaan 256 merkin kokoinen. Jokaista merkkiä merkistössä siis vastaa yksi kahdeksan bittinen lukuarvo. Tämä saattaa olla ongelma lähinnä suurien merkistö­

jen kohdalla, joista hyvänä esimerkkinä kiinan kieli. Kooltaan näytön merkistöjen merkit voivat olla aina 16x31 pikselikokoon asti.

(23)

2.5 Näyttökortti 15

2.5.2 Muiden toimintojen ohjaaminen

Käyttöliittymäkortilla sijaitsevat LED-valot voidaan asettaa haluttuun tilaan yksin­

kertaisella komennolla, mahdollisia tiloja ovat sammuksissa, päällä, tai vilkkuva.

Jatkuvasti päällä olevaa valoa käytetään jatkuvat tilan ilmaisemiseen, vilkkuvan va­

lon tarkoitus on kiinnittää UPS-laitteen operaattorin huomio uuteen hälytykseen tai muuhun huomiota vaativan seikkaan. Vastaavasti voidaan asettaa myös LCD-näytön taustavalo, mahdollisina tiloina päällä tai poissa.

Summerin tila voidaan valita joko hiljaiseksi, jatkuvan äänen, tai muutamaan eri­

laajuisen piipityksen väliltä. Erityyppisten äänten on tarkoitus esittää erityyppistä tapahtumaa, joko varoittaa tai ilmaista hälytystilaa ja kiinnittää operaattorin huo­

mio.

2.5.3 Nappuloiden toiminta

Käyttöliittymäkortin nappuloiden toiminta on määritelty siten, että se lähettää tie­

don väylän välityksellä nappuloiden tilan muuttumisesta automaattisesti. Myös jos nappulaa pidetään pohjassa, alkaa kortti lähettää tilaa tietyin väliajoin. Näiden tie­

tojen avulla käyttöliittymäprosessi voi reagoida suoraan nappuloiden tilan muutok­

seen, eikä CAN-väylää tarvitse kuormittaa jatkuvilla kyselyillä nappuloiden tilasta.

2.5.4 Ohjelman perustoiminta ja päivitysohjelmointi

Näytön ohjelma koostuu kahdesta osasta. Ensimmäinen osa on niin sanottu käyn- nistyslataaja (boot loader) joka on kiinteänä pysyvä osa ohjelmakoodia. Tämän tar­

koitus on tarkistaa itse pääohjelman kunto käynnistyksessä tarkistussumman avulla, sekä hoitaa kortin uudelleenohjelmointi. Toinen osa koodia on itse pääohjelma, joka hoitaa näytön ohjaamisen normaalitilanteessa.

Näytön ohjelmiston perustoiminta on esitettynä kuvassa 2.9. Kun näyttö käynnis­

tyy, ja ohjelman kunto on tarkastettu, alkaa se lähettää ilmoitusta hengissä olostaan CAN-väylän kautta. Näyttö ilmoittaa olevansa joko pääohjelmassa, tai käynnistys- lataajassa tilanteesta riippuen ja käyttöliittymäohjelmisto voi toimia tilanteen mu­

kaisesti.

(24)

2.5 Näyttökortti 16

valmis

onko näytön ohjelmisto

kunnossa

kyllä

ohjelmiston päivityspyyntö käynnistys

/ alustus

suorita pääohjelma

käynn i s t y s 1 a t aa j a suorita

Kuva 2.9: Näytön ohjelman perustoiminta

Kun näyttö on käynnistyslataajatilassa, se voidaan uudelleen ohjelmoida CAN- väylän kautta. Uusi ohjelma lähetetään paketteina väylän ylitse, ja ohjelmoinnin ollessa valmis kortti käynnistetään uudestaan.

2.5.5 Aikavalvonta

Käyttöliittymäkortti valvoo normaalitoiminnassa CAN-väylän toimintaa. Jos väy­

lältä ei tule komentoja muutaman sekunnin kuluessa, aikavalvonta asettaa kortin katkotilaan josta se tietyn ajan kuluttua ilmoittaa kirjoittamalla ruudulle viestin.

Katkotilassa ollessaan kortti myös yrittää lähettää CAN-väylälle tiettyä viestiä, jo­

hon vastaamalla kortti saadaan herätettyä takaisin normaalitoimintaan.

(25)

Luku 3

Taustatietoja toteutukselle

3.1 Laiteohjelmistot UPS-laitteissa

UPS-laitteita ohjaavien mikroprosessoreiden laiteohjelmistot (firmware) on aiem­

min yleisesti kirjoitettu symbolista konekieltä (assembly) käyttäen. Symbolista ko­

nekieltä tarvitaan edelleen varsinkin aikakriittisten ohjelman osien tekemiseen, mut­

ta prosessoritehojen, muistin määrän ja laitteiden ohjelmien monimutkaisuuden kasvaessa tästä työläästä tavasta ohjelmoida ollaan siirtymässä yhä enemmän kor­

keamman tason ohjelmointikieliin.

3.1.1 C-ohjelmointikieli

Parhaiten jalansijaa laiteohjelmistojen kirjoittamiseen on pikkuhiljaa saavuttanut ohjelmointikielistä C-kieli. C-kieli on riittävän matalan tason kieli tason kieli laitteistoajureiden- ja ohjelmistojen kirjoittamiseen. Samalla se on myös riittävän korkean tason kieli vielä esimerkiksi käyttöliittymäkirjastojen kirjoittamiseen. C- kieli ei ole kovinkaan laaja kieli eikä ole erikoistunut millekään tietylle alueelle, sen yleispätevyys ja turhien rajoitusten puute tekeekin siitä hyvin yleiskäyttöisen moniin tehtäviin.

C-ohjelmointikielen esittelivät alunperin vuonna 1978 herrat Kernighan ja Ritc­

hie kirjassaan C Programming Language [12]. Joitain vuosia myöhemmin ANSI (American National Standards Institute) otti toimekseen kehittää kieltä laitteistosta riippumattomampaan ja vähemmän monitulkintaiseen suuntaanpa lopputuloksena

(26)

3.2 Kielet ja käyttöliittymä 18 C-ohjelmointikieli on standardoitiin vuonna 1990 (ANSI/ISO 9899-1990). Tämän standardin mukaisesta C-kielestä käytetään nimitystä ANSI-C.

C-kielisen ohjelman kääntäminen ajettavaan muotoon koostuu kolmesta päävai­

heesta. Ensimmäisessä vaiheessa lähdekooditiedostot esikäännetään. Esikääntäjä mahdollistaa muun muassa erilaisten makrojen ja vakioiden korvaamisen varsinai­

sella ohjelmakoodilla. Toisessa vaiheessa esikäännetty C-kielinen ohjelma käänne­

tään tiedosto tiedostolta varsinaisella C-ohjelmakääntäjällä, jolloin tuloksena saa­

daan joukko objektitiedostoja. Nämä sisältävät ohjelman konekielisessä, mutta va­

paasti muistiin sijoiteltavassa muodossa. Viimeisessä vaiheessa objektit kootaan varsinaiseksi ohjelmaksi. Tämä vaiheen suorittaa niin kutsuttu linkitysohjelma, joka nimensä mukaisesti linkittää viittaukset objektien välillä yhteen ja kokoaa ohjelman lopulliseen suoritettavaan muotoonsa.

3.2 Kielet ja käyttöliittymä

Käyttöliittymässä esiintyvien tekstin kääntäminen on yksi osa käyttöliittymän kään­

tämistä vieraalle kielelle. Kokonaisuudessaan tehtävä ei kuitenkaan rajoitu siihen, vaan on kuitenkin myös monia huomioonotettavia seikkoja joista useat on otettava huomioon jo käyttöliittymää suunniteltaessa.

Yksi asia mikä helposti saattaa aiheuttaa ongelmia kielten esittämisessä oikein, on erilainen sanajärjestys. Esimerkiksi lause, joka toisessa kielessä esitetään muodos­

sa “suorita toiminto %A laitteelle %B” voi toisessa kielessä olla luontevin esittää muodossa “laitteelle %B suorita toiminto %A”. Sanajärjestyksen lisäksi myös se, että toisissa kielissä sanat taipuvat ja toisissa eivät juuri ollenkaan voi vaikuttaa jon­

kin asian suunnittelussa.

Kaikki kielet eivät myöskään käytä yleisesti esimerkiksi välejä sanoja erottamas­

sa, näin on ainakin kiinan kielen [14] tapauksessa. Sanat muodostuvat yhdestä tai useammasta kirjoitusmerkistä, ja niiden vääränlainen ryhmitteleminen aiheut­

taa yleensä lauseen merkityksen muuttumisen. Esimerkiksi lause ABCDEFG, jossa jokainen kirjain vastaa yhtä kiinalaista kirjoitusmerkkiä, voi tarkoittaa jotain jos se ryhmitellään AB C DE FG, mutta väärä ryhmittely kuten AB CD E FG voi johtaa lauseen merkityksen muuttumiseen tai tehdä lauseesta merkityksettömän.

Myös sanojen pituus on hyvin erilainen eri kielissä, toisella kielellä esitettynä tietty

(27)

3.2 Kielet ja käyttöliittymä 19 asia voi viedä huomattavastikin enemmän tilaa. Yleisenä ohjeena onkin jättää n. 30 prosenttia [13] väljää erikielisten käännösten varalle.

Yksi huomioonotettava asia on käytettyjen fonttien näytöltä vaatima tila. Esimer­

kiksi ASCII-merkistöä käytettäessä merkit saadaan helposti mahtumaan jopa vii­

den pikselin korkuiseen tilaan luettavuuden vielä kärsimättä. Samaan tilaan on kui­

tenkin hyvin vaikeaa mahduttaa jo useissa Eurooppalaisissa kielissä käytettäviä eri­

koismerkkejä, puhumattakaan kiinalaisista kirjoitusmerkeistä jotka vaativat vähin­

tään noin 10-12 pikselin tilan korkeussuunnassa.

Eri kielissä on myös eroja esimerkiksi lukuarvojen ja kellonaikojen esittämisessä.

Lukuarvojen desimaalipilkku voi kielestä riippuen olla ainakin piste tai pilkku. Kel­

lonaikojen ja varsinkin päivämäärän esittämisessä puolestaan on vieläkin enemmän erilaisia merkintätapoja eri kielten välillä. Kellonajat voivat olla 12 tai 24 tunnin muodossa, päivämäärissä puolestaan vaihtuvat usein vähintäänkin lukujen järjestys sekä välimerkit. Nämä voivat olla pieniltä vaikuttavia yksityiskohtia, mutta todelli­

suudessa voivat kuitenkin aiheuttaa ainakin sekaannusta laitetta käytettäessä.

3.2.1 Unicode

Käyttöliittymän tekstien käännökset eri kielille saadaan kääntäjiltä kätevimmin Unicode-merkistöstandardia noudattavassa muodossa. Unicode [15] on kansainväli­

nen merkkijärjestelmästandardi, joka varaa uniikin numeroarvon jokaiselle merkil­

le. Järjestelmä esittää merkit 16-bittisinä, joten sillä voidaan esittää 65535 erilaista eri kielissä käytettyä merkkiä. Järjestelmä helpottaa huomattavasti erikielisten do­

kumentaatioiden kanssa työskentelyä, kun maailmalla käytettyjen satojen erilaisten merkistöjen koodaustapojen sijaan voidaan käyttää yhtä standardia.

(28)

Luku 4

UPS-laitteen

käyttöliittymäohjelmiston suunnittelu

4.1 Käyttöliittymäohjelmiston vaatimukset

Kohteena olevan UPS-laitteen oli tavoitteena korvata uudempana mallina jo markki­

noilla oleva vanhempi UPS-laite. Käyttöliittymän suunnittelussa haluttiin ottaa huo­

mioon mahdollisesti edellisiä malleja käyttäneet käyttäjät, joten etupaneelin käyttö­

liittymän haluttiin peruspiirteissään ja toiminnassaan noudattavan edellisen antamaa mallia.

Käyttöliittymä koostuu menurakenteesta, joka sisältää tarvittavan määrän menuruu- tuja. Käyttöliittymän menuruutujen välillä liikkuminen tapahtuu käyttäjän painel­

lessa etupaneelin painikkeita. Käyttöliittymällä oli tarkoitus voida tehdä seuraavan­

laisia asioita:

e Suorittaa toimintoja, kuten käynnistää ja sammuttaa UPS-laite, tai asettaa se ohitusverkolle

• Tarkistaa/seurata UPS-laitteen toimitilaa, onko laite normaalitoiminnassa, ohitusverkolla, akuilla tms.

• Tarkistaa aktiiviset hälytykset ja huomautukset

• Selata menneitä hälytyksiä ja tapahtumia eli tapahtumalokia

• Lukea mittausarvoja, eli jännitteitä, virtoja, taajuuksia tms.

(29)

4.2 Menurakenteen esittäminen 21

• Selata ja asettaa UPS-laitteen parametrejä, eli konfiguroida laitteen toimintaa

• Tarkistaa laitteen ohjelmistoversiot tms.

• Vaihtaa käyttöliittymän kieli, jonka on oltava valittavissa ainakin kahden vaihtoehdon väliltä.

Käyttöliittymän täytyi pystyä myös reagoimaan UPS-laitteen sisäisiin tapahtumiin, kuten toimintatilan muutoksiin sekä uusien hälytysten ja huomautusten aktivoitu­

miseen. Lisäksi sen tuli toteuttaa aikavalvontakatkaisu (timeout), jonka tehtävä on palauttaa menu tietyn ajan kuluttua perustilaan kun nappuloita ei paineta.

Käyttöliittymän toteutuksessa haluttiin mahdollisimman pitkälle seurata myös mal­

lia, jossa käyttöliittymän toteutus on erillään itse käyttöliittymäohjelmasta. Tätä on kuvattu kuvassa 4.1. Rakenne haluttiin mahdollisimman pitkälle sellaiseksi, että itse käyttöliittymän toteutuksen määritteleminen olisi yksinkertaista ja selkeää. Selkeä rakenne helpottaa koodin muokkaamista ja ymmärtämistä myös jälkikäteen, kun käyttöliittymää tarvitsee ylläpitää.

Käyttöliittymän toteutus

Erikieliset ulkonäkökuvaukset

UPS-laite Käyttöliittymäohjelma

Kuva 4.1 : Käyttöliittymän perusosat

4.2 Menurakenteen esittäminen

Yksi tehtävä ratkaisu käyttöliittymän määrittelemisessä on se miten käyttöliittymän menurakenne esitetään ohjelmakoodissa.

(30)

4.2 Menurakenteen esittäminen 22 Yksi tapa lähestyä tätä asiaa on rakennelähtöinen, jossa menurakenne ajatellaan puuna. Jokaisesta solmukohdasta on X kappaletta haaroja, joiden väliltä voidaan tehdä valinta. Jokainen haara taas voi johtaa uuteen valintaan, tai tiettyä asiaa esit­

tävään lehtisolmuun.

Tällaisen rakenteen esittäminen vaatii tiedon jokaisen haarakohdan taakse liittyvistä vaihtoehdoista. C-kielellä toteutettuna tämä tarkoittaisi erillistä taulukkoa jokaista haarakohtaa kohden, joihin on listattuna seuraavat haarat tai lehtisolmut.

Valittu ratkaisu

Toinen, ja myös toteutettavaksi valittu esitysmuoto on enemmän menuruutulähtöi- nen. Ajattelu alkaa ennemmin yksittäisestä menuruudusta, kuin menujen muodos­

tamasta rakenteesta. Siinä Jokainen menuruutu on itsenäinen kokonaisuus, jossa painikkeen painaminen voi aiheuttaa siirtymän toiseen menuruutuun. Tätä lähesty­

mistapaa on esitetty kuvassa 4.2.

menuruutu Y

painike2

— — _ — — — — - — — * painikel

menuruutu X i menuruutu 4/ ;

J

menuruutu W

painike3

menuruutu Z

Kuva 4.2: Menuruudun rakenne

Kuvattu rakenne voidaan esittää taulukkona, jokaista menuruutua vastaa yksi al­

kio taulukossa. Jokaiseen menuruutualkioon liittyy tieto neljästä muusta ruudusta, joihin eri nappuloiden painaminen oletusarvoisesti johtaa. Tällainen ratkaisu on ra­

kenteeltaan yksinkertaisen selkeä. Kun kaikki tieto käyttöliittymän rakenteesta ja menuruutujen järjestyksestä on koottuna samaan taulukkoon, on se helposti ym­

märrettävissä ja siten myös ylläpidettävissä.

Tällaisessa ratkaisussa ei myöskään sitouduta menujen tietyntyyppiseen hierarkki­

seen järjestykseen, vaan tarpeen mukaan painikkeen painaminen voi aiheuttaa siir­

(31)

4.3 Menujen kielen ja ulkonäön esitysmuoto 23 tymän mihin tahansa ruutuun. Edellä mainittu puutyyppinen rakenne voidaan to­

teuttaa, mutta sitä voidaan myös tarpeen mukaan monipuolistaa.

Käyttöliittymän määrittelemistä ja ylläpitämistä helpottaa myös se, jos menuruutu- jen järjestyksellä taulukossa ei ole merkitystä. Yksinkertaisin ratkaisu, joka ei tätä vaatimusta toteuta, on sellainen jossa menuruudun indeksi taulukossa on samalla myös sen ohjelmallinen tunnistekoodi. Tällöin siis tietty menuruutu voidaan löy­

tää taulukosta osoittamalla suoraan taulukon alkiota tietyllä indeksillä. Toteutus on prosessorin näkökulmasta nopea, sillä ruutuja ei tarvitse taulukosta etsiä. Käyttöliit­

tymän ylläpitäjän näkökulmasta tämä aiheuttaa kuitenkin ylimääräistä vaivannäköä kun indeksit on pidettävä sotilaallisessa järjestyksessä.

Toinen vaihtoehto on liittää taulukkoon jokaista menuruutua kohti myös ruudun oma tunnistekoodi. Tällöin aina kun uusi menuruutu halutaan ohjelmassa kaivaa esiin, täytyy se ensin etsiä taulukosta tunnistekoodin perusteella. Tämän aiheutta­

ma viive on kuitenkin nopealla prosessorilla merkityksetön, kun etuna kuitenkin saavutetaan helpommin ylläpidettävä ohjelma.

4.3 Menujen kielen ja ulkonäön esitysmuoto

Taustaa

Yksi aiemmissa UPS-malleissa käytetty tapa on, että erikieliset tekstit esitetään tau­

lukoituna menuittain. Jokaiselle kielelle on yksi taulukkoja taulukossa jokaista me­

nuruutua kohden yksi merkkijono. Menuruuduissa, joissa on muuttuvaa tietoa, on sille jätetty merkkijonossa tyhjää tilaa. Tämän tyhjän tilan paikalle muuttuva tieto päivitetään.

Ongelmana eri kielien välillä on se, että muuttuvalle tiedolle varatun tilan sijainti ja koko on kiinteä jokaisella kielellä. Tästä aiheutuu ongelmia käännösten tekemises­

sä, kun sanoja on sijoiteltava ja lyhenneltävä niille varattuihin tiloihin.

Yksi mahdollisuus toteuttaa tekstin esitys on sanakirjamalli. Siinä yhtä sanaa vastaa numerokoodi, joita peräkkäin asettelemalla saadaan aikaan lauseita. Tämän tyyppi­

nen ratkaisu säästää muistia sillä jokainen sana on muistissa vain kerran. Malli toi­

mii suhteellisen hyvin englanninkielisen tekstin esittämiseen, jossa sanoilla esiinty­

vät usein perusmuodossaan. Mallin istuu kuitenkin huonosti sellaisiin kieliin joissa

(32)

4.3 Menujen kielen ja ulkonäön esitysmuoto 24 sanat taipuvat. Myöskään samoja lausepohjia ei tässäkään voitaisi käyttää eri kielil­

lä koska sanajärjestys on kielten välillä erilainen.

Tässä UPS-laitteessa Käyttöliittymän menujen haluttiin olevan mahdollisimman va­

paasti määriteltävissä, jotta ne soveltuisivat erikielisten versioiden esitykseen mah­

dollisimman hyvin. Erikielisten esitysten välillä on eroja sanojan pituuksissa ja sa- najäijestyksessä, tämän takia staattisen ja muuttuvan tekstin sijaintien haluttiin ole­

van vapaasti määriteltävissä.

Ratkaisu

Ratkaisuksi lähdettiin miettimään tapaa yhdistää menuruudun staattisen tekstin ja muuttuvan datan sijainti ja sisältö yhteen kuvaukseen. Kuvauksen vaatimuksiin si­

sältyy seuraavanlaisia asioita:

• esittää näytöllä staattista tekstiä

• esittää näytöllä muuttuvaa dynaamista tekstiä (mittaustuloksia, parametrien nimiä ja arvoja, jne.)

• määrittää elementtien sijainnit, eli käytännössä siirtää kursoria näytöllä

• muuttaa tekstin ulkonäköä, kuten kokoa tai tyyliä (käänteinen/normaali)

• vaihtaa tekstin kirjoituksessa käytettyä fonttia

Nämä vaatimukset saadaan tarkemmin tarkasteltuna tiivistymään kolmeen ryh­

mään. Näitä ryhmiä ovat teksti, muuttujat sekä kontrollointi.

Staattisena pysyvä teksti on selkeä ryhmä, se on tarkoitus kirjoittaa ruudulle kerran ja pysyä paikallaan. Sen esittäminen on luonnollisinta selväkielisenä merkkijonona.

Muuttujat puolestaan muodostavat ryhmän, joka pitää sisällään päivittyvää tietoa.

Ne piirretään näytölle ruutua luotaessa, mutta niitä on palattava aika-ajoin päivit­

tämään jotta tieto pysyisi ajan tasalla. Nämä voidaan esittää esimerkiksi järjestyk­

sessä numeroituina koodeina, joista koodin perusteella käyttöliittymäohjelma tietää minkä muuttujan sen pitää tulostaa näytölle.

Kontrollointi-informaatio puolestaan tiivistyy ryhmäksi, joka on jonkinlaista eri­

koistoimintaa vaativaa tietoa. Siinä missä teksti ja muuttujat luovat ruudulle sisäl­

töä, kontrolli-informaatio määrittää miten, missä ja minkä näköisenä sisältö näkyy

(33)

4.4 Kontrollikoodien sisällyttäminen merkkijonoihin 25 näytöllä. Myös kontrolli-informaatio voidaan muuttujien tavoin määritellä nume­

rokoodeiksi, joista tietyn koodin perusteella käyttöliittymäohjelma osaa suorittaa tietyn operaation.

Tällaiset kontrolli-ja muuttujakoodit voitaisiin esimerkiksi taulukoida muistiin me­

nujen tekstikuvausten yhteyteen monellakin eri tavalla. Yksi ratkaisu voisi olla tau­

lukoida koodit erikseen merkkijonoista. Tällaisessa ratkaisussa tekstikuvauksen vä­

lissä merkittäisiin koodien paikat tietyin erityismerkein, esimerkiksi “Input volta­

ge % %V %V %V”. Tämän lisäksi olisi taulukko, jossa varsinaiset koodien arvot sijaitsisivat. Ratkaisun ongelmana olisi ainakin se, että taulukko jossa koodit ovat hukkaisi huomattavasti muistia. C-kielessä taulukon jokaisen rivin leveys on vakio, joten muodostuvan taulukon koko olisi määriteltävä eniten erikoiskoodeja sisältä­

vän menuruudun mukaan.

Toinen tapa ratkaista asia on koodata kaikki tieto saman merkkijonon sisään. Täl­

lainen tapa ei kuluta samalla tavalla hukkatilaa muistista, sillä C-kielessä merkkijo­

nojen taulukko talletetaan osoittimina jolloin jokaisen merkkijonon pituus voi olla yksilöllinen. Jos kaikki tieto on sisällytettynä samoihin merkkijonoihin, ei tilaa kulu erillisiin taulukoihin.

4.4 Kontrollikoodien sisällyttäminen merkkij onoihin

Merkkijonot päätettiin koodata siten, että merkistön alusta varataan muutama ar­

vo (0x01-0x03) erikoistarkoitukseen. Näiden erikoismerkkien avulla saadaan luotua erinäisiä koodisarjoja, joihin erikoisinformaatio sisällytetään. Merkkijonoa tulkites­

sa erikoismerkki voidaan tunnistaa, jolloin sitä seuraavan tai seuraavien merkkien perusteella suoritetaan koodin määräämiä toimintoja.

Käytetyt yhdistelmät koodien luomisessa on eriteltynä taulukossa 4.1. Merkit 0x01 sekä 0x02 varattiin kontrollikoodien sekä muuttujakoodien alun tunnistamiseen ja erottamiseen toisistaan. Muuttuja- tai kontrollikoodiksi tulkitaan näitä erotinmerk­

kejä seuraava merkki. Tämä mahdollistaa 255 erilaista koodia kumpaankin tarkoi­

tukseen, jonka todettiin riittävän hyvin. Näiden lisäksi käytetyn erikoismerkin 0x03 merkitys on erotella kontrollikoodien mahdolliset parametrit toisistaan.

Menukuvausmerkkijonoon toteutettiin myös mahdollisuus sisällyttää muuttuvaa si­

sältöä dynaamisten merkkijonomuuttujien muodossa. Tällä tarkoitetaan käytännös-

(34)

4.4 Kontrollikoodien sisällyttäminen merkkijonoihin 26 sä merkkijonoja, joista yksi kerrallaan voidaan esittää tietyn muuttujakoodin pai­

kalla. Tällaista tarvitaan esimerkiksi menuruuduissa joissa asetetaan laitteen para­

metrejä. Eri vaihtoehtoja kuvaavat merkkijonot kuten “välittömästi"/1’viiveellä’T’ei ikinä” voidaan sisällyttää ruudun kuvaukseen. Näiden erottamiseen itse menuruu- dun kuvauksesta valittiin erikoismerkki 0x04.

koodi merkitys

0x01 OxYY Kontrollikoodi YY

0x01 OxYY <par> 0x03 Kontrollikoodi YY + yksi parametri (<par> on ASCII-koodattu lukuarvo) 0x01 OxYY <par> 0x03 <par2> 0x03 Kontrollikoodi YY + kaksi parametria

(<par> ja <par2> ASCII-koodattuja lukuarvoja)

0x02 OxZZ muuttujakoodi ZZ

0x04 <str> merkkijonomuuttuj a

(<str> on merkkijono)

Taulukko 4.1: Merkkijonoon koodattavat erikoiskoodisarjat

Kuvassa 4.3 on havainnollistettuna menukuvausmerkkijonon rakennetta. Kuvasta käy ilmi miten muuttuja- sekä kontrollikoodit sijoittuvat merkkijonon keskelle. Ku­

van merkkijonoon on sisällytetty myös dynaamisia merkkijonomuuttujia, jotka nä­

kyvät kuvauksen loppupäässä.

kontrollikoodi dynaamisia merkkijonomuuttujia

Z \ I I I \

--- 1—I--- n---:--- n---П—П—

e....m TF.KS- trits- . 1 • 1 i 1 i

™r

TIÅ TEKSTIÄ TEKS­TIÄ тхГ

i

;

tn

\o

—-_________ \

VT 1 /

muuttujaksi dynaamisen merkkijonon

erotin 0x04

Kuva 4.3: Menukuvausmerkkijonon rakenne

UPS-laitteen muistissa koodit siis kuvataan taulukon 4.1 kuvaamalla tavalla, mutta tämä esitys ei ole käytännöllinen menukuvauksia kirjoitettaessa koska pelkät nu­

merot eivät ilman erillisen listan avulla tulkitsemista kerro tarkoitustaan. Tähän ongelmaan kuitenkin C-kielen esikääntäjä tarjoaa ratkaisun. Esikääntäjän #define -määrettä käyttäen voidaan koodeille kirjoittaa selväkieliset vastineet, joiden käyt­

täminen on ihmiselle vaivattomampaa.

Taulukossa 4.2 on esitettynä muutamia esimerkkejä määritellyistä kontrolli- ja

(35)

4.4 Kontrollikoodien sisällyttäminen merkkijonoihin 27 muuttujakoodeista. Näiden esimerkkien C-kielinen toteutus on nähtävissä liitteestä A.

koodi selväkielellä toiminto

_CTR_FONT_DOUBLEH Kaksinkertainen merkkien korkeus _CTR_FONT_N ORM AL Normaalikokoiset merkit

_CTR_GOTOY (y) Kursorin siirto haluttuun y-koordinaattiin _CTR_GOTOX(y) Kursorin siirto haluttuun x-koordinaattiin _CTR_GOTOXY(x, y) Kursorin siirto haluttuun (x, y) -koordinaattiin _CTR_GOTOXY_REL(x, y) Kursorin siirto haluttuun (x, y) -koordinaattiin

suhteessa tämänhetkiseen sijaintiin CTR NEWLINE Siirtää kursorin uuden rivin alkuun _VAR_IN_VOLT_X Sisääntulojännite, vaihe X (1-3) _VAR_IN_CURR_X Sisääntulovirta, vaihe X (1-3) _VAR_OUT_VOLT_X Lähtöjännite, vaihe X (1-3) _VAR_OUT_CURR_X Lähtövirta, vaihe X (1-3)

Taulukko 4.2: Esimerkkejä määritellyistä kontrolli- ja muuttujakoodeista selväkie­

lellä

Kuvassa 4.4 vielä esimerkkinä menukuvaus, joka tulostaa yläriville tekstin “Input Voltage” ja seuraavalle riville tuplakorkuisella fontilla kolmen vaiheen sisääntulo- jännitteet. Lopuksi esimerkki tulostaa vielä “V” -kirjaimet ilmaisemaan jännitettä jokaisen muuttujan perään oikealle korkeudelle normaalikokoisella fontilla. Tulos näytöllä on esitettynä kuvassa 4.5.

"Input voltage" _CTR_NEWLINE

_CTR_FONT_DOUBLEH _VAR_IN_VOLT_l "

_VAR_IN_VOLT_2 "

_VAR_IN_VOLT_3

_CTR_FONT_NORMAL _CTR_GOTOXY_REL(-4,7) "V"

_CTR_GOTOX(18) "V"

_CTR_GOTOX(48) "V"

Kuva 4.4: menukuvausesimerkki

(36)

4.5 Kielen mukaan muuttuvat osat 28

Input voltage-

230U 22% 230U

Kuva 4.5: esimerkin menukuvauksen tulos näytöllä

4.5 Kielen mukaan muuttuvat osat

Jotta käyttöliittymäohjelma osaisi esittää käytössä olevan kielen mukaisesti muuttu­

vat asiat oikein, täytyy sen tietää mistä aina kulloinkin käytössä olevaan kieleen liit­

tyvät olennaiset tiedot löytyvät. Tätä tarkoitusta palvelee varmasti parhaiten tauluk- kotyyppinen ratkaisu, jossa kootaan yhteen kunkin kielen mukaan muuttuvat asiat.

Seuraavassa listassa on kuvailtuna toteutukseen sisällytetyt kielen mukaan muuttu­

vat osat.

Kielen nimi alkuperäiskielellä, joka voidaan esittää menuruudussa jossa kieltä va­

litaan.

Menukuvaukset jotka kertovat edellä kuvaillun mukaisesti menuruudun ulkonäön, elementtien sijoittelun sekä sisällön eri kielillä.

Hälytystekstit muuttuvat myös kielen mukaan, nämä sisältävät itse hälytyksiä ku­

vaavien merkkijonojen lisäksi eri hälytystasoja kuvaavat merkkijonot.

Merkistö kertoo mitä LCD-näytön sisältämää merkistöä käytetään kielen esittämi­

seen oletusarvoisesti. Tämä sisältää myös tiedon merkkien peruskoosta pikse- leinä, joka vaikuttaa siihen kuinka paljon näytöltä on varattava eri elementeil­

le tilaa. Merkistöä voidaan tarpeen mukaan kuitenkin vaihtaa kontrollikoodin avulla, jos jokin menun sisältämä asia sitä vaatii.

Muotoilutiedot sisältävät tiedot lukuarvojen esittämisestä. Tähän sisällytettiin tie­

dot välimerkeistä, joita käytetään kun kyseisellä kielellä tulostetaan desimaa­

lilukuja, kellonaikoja tai päivämääriä. Päivämääristä mukaan otettiin myös järjestys, jossa vuosi, päivämäärä sekä kuukausi esitetään.

(37)

4.6 Lisätoiminnallisuus ja tapahtumiin reagointi 29

4.6 Lisätoiminnallisuus ja tapahtumiin reagointi

Edellä luvuissa 4.2 ja 4.3 kuvatulla tavalla saadaan aikaan käyttöliittymän rakenne ja luotua menuruuduille ulkonäköjä sisältö. Menuruudut, jotka sisältävät vain esi­

merkiksi alimenun nimen tai mittausdataa eivät muuta tarvitsekaan esittämiseensä.

Tarvitaan kuitenkin menuruutuja jotka sisältävät myös muunlaista toiminnallisuut­

ta, tarpeen on siis keino tällaisen lisätoiminnallisuuden esittämiseen ja luomiseen.

4.6.1 Toimintofunktiot

Tällainen vaatimus saadaan toteutettua menuruutukohtaisia funktioita käyttäen. Li- sätoiminnallisuutta varten kirjoitetaan funktio, jossa toiminnallisuus toteutetaan. C- kieleltä käytettäessä voidaan tässä hyödyntää funktio-osoittimia. Ne ovat nimen­

sä mukaisesti osoittimia funktioihin, jotka tässä tapauksessa päätettiin taulukoida samaan taulukkoon menun rakenteen (luku 4.2) kuvauksen kanssa. Kun menuihin liittyvä informaatio koottua samaan paikkaan, on siihen helpompi päästä käsiksi käyttöliittymää muokattaessa.

Funktio-osoittimet mahdollistavan myös sen, että jos useassa menuissa tarvittava lisätoiminnallisuus on samanlaista, voidaan samaa Toimintofunktiota käyttää niis­

sä kaikissa monistamalla pelkkä funktio-osoitin eikä koko funktiota. Niiden menu- ruutujen kohdalle, jotka eivät lisätoimintoja tarvitse, voidaan tämä funktio-osoitin jättää tyhjäksi.

4.6.2 Tapahtumat

Jotta Toimintofunktiot olisivat käyttökelpoisia, on käyttöliittymäohjelmasta käsin kutsuttava oikean menuruudun funktiota tarpeeksi usein. Tämä voidaan toteuttaa yksinkertaisimmillaan siten että funktiota kutsutaan vain tasaisin väliajoin. Tämä tarkoittaisi käytännössä sitä että olisi toimintofunktion vastuulla selvittää onko jokin tärkeä tapahtuma tapahtunut lähi aikoina (kuten nappulan painallus) ja että onko siihen jotenkin reagoitava.

Tietyt toiminnot halutaan kuitenkin yleensä suorittaa vasteena tiettyyn tapahtu­

maan. Tämä johtaa toteutusmalliin, jossa käyttöliittymäohjelmasta kutsutaan me- nuruutun tapahtumafunktiota vain tiettyjen määriteltyjen tapahtumien aktivoitues-

(38)

4.7 Käyttöliittymäohjelmaan toteutettuja toimintoja 30 sa. Tapahtumafunktiolle voidaan antaa parametrinä tieto kyseisen tapahtuman laa­

dusta, jolloin tapahtumafunktion tarvitsee vain sen perusteella valita oikea toimin­

to tai toimintosarja. C-kielen keinoin tämä voidaan tehdä "switch-case-rakenteella joka on myös jälkikäteen selkeälukuinen kun vasteet tapahtumiin saadaan omien

otsikkojensa alle. Tapahtuman kulkua on havainnollistettu kuvassa 4.6.

(2)

(1) tapahtuma:

« <PAINIKE_2_ALAS

У.

toimintofunktio() käyttöliittymä-

moottori

A

Vaihda_Kieli()

switch(tapahtuma) {

case PAINIKE_2_ALAS:

Vaihda_Kieli();

Kuva 4.6: Toimintofunktion ja käyttöliittymämoottorin interaktio

4.7 Käyttöliittymäohjelmaan toteutettuja toimintoja

Käyttöliittymän korkeimman tason toteutuksesta haluttiin sellainen että se olisi mahdollisimman selkeä kuvaus käyttöliittymän ulkonäöstä sekä toiminnasta. Täl­

löin myös toimintofunktioista haluttiin mahdollisimman selkeitä kuvauksia, jotka olisi helppo toteuttaa sekä ymmärtää jälkikäteen.

Esimerkiksi UPS-laitteen toimitilan esittämistä varten täytyy käyttöliittymän saa­

da kyseinen tieto jostain. Käytännössä toimitilan päättelemiseksi täytyy vertailla monen osakokonaisuuden toimitilaa, joista riippuen laite on esimerkiksi normaa­

litoiminnassa tai akustosyötöllä. Itse käyttöliittymän selkeämpää toteutusta varten tähän tarkoitukseen ohjelmoitiin erillinen funktio, joka selvittää laitteen toimitilan ja kertoo sen yksiselitteisesti. Vastaavasti toteutettiin muita funktioita toimimaan

rajapintana muuhun laiteohjelmistoon.

Erilaisten asioiden esittämisen helpottamiseksi luotiin joukko epäsuoria osoittimi- na toimivia muuttujia. Nämä ovat muuttujia, jotka viittaavat tiettyihin listamaisiin tietoihin laitteen sisällä, ja mahdollistavat näiden tietojen esittämisen ja selaamisen näytöllä. Osoitinten ominaisuuksiin kuuluu että niiden arvo voidaan asettaa nollaan ja tapauskohtaisen maksimin välille. Osoittimen osoittama tieto puolestaan tuloste­

taan siihen liittyvän muuttujakoodin (luku 4.3) paikalle näytöllä.

(39)

4.7 Käyttöliittymäohjelmaan toteutettuja toimintoja 31 Kuvatunlaista osoitinta käytettiin ratkaisuna esimerkiksi tapahtumaloki:n sekä ak­

tiivisten hälytysten esittämisessä. Osoittimen toimintaa on havainnollistettu kuvassa 4.7. Esimerkissä indeksi osoittaa arvonsa mukaisesti hälytystä aktiivisten hälytysten joukosta. Nappulan painalluksen seurauksena indeksi siirtyy osoittamaan seuraavaa aktiivista hälytystä, jolloin osoittimen osoittama hälytys tulostuu käyttöliittymäoh­

jelman toimesta ruudulle muuttujakoodin paikalle.

aktiiviset mahdolliset hälytykset

Kuva 4.7: esimerkki, indeksien käyttö osoittimina

Kuvatunlaiset osoittimet auttavat yksinkertaistamaan käyttöliittymän toteutusta kun lähes kaikki käsittely on toteutettuna jo käyttöliittymäohjelman puolesta. Toiminto- funktion tarvitsee lähinnä muuttaa tarpeen tullen osoittimen arvoa, ja sen osoittama tieto näytöllä päivittyy automaattisesti.

Käyttöliittymän toteutuksessa havaittiin monin paikoin tarpeelliseksi toiminto, jo­

ka kahta keskimmäistä painiketta käyttäen selataan asioita näytöllä. Koska myös rajapinta käyttöliittymän toteutuksen ja käyttöliittymäohjelman välille toteutettiin perustumaan yksinkertaisin lukuarvoin, näkyy tämä käytännön ohjelmassa jonkin muuttujan arvon kasvattamisena tai vähentämisenä yhdellä arvolla kerrallaan.

Tällainen toiminnallisuus toteutettiin käyttöliittymäohjelmaan c-kielen tarjoaman muuttujaosoitinta apuna käyttäen. Muuttujaosoittimen avulla voidaan toimintofunk- tiosta käsin osoittaa jotain haluttua muuttujaa ja asettaa sille minimi- sekä maksi­

Viittaukset

LIITTYVÄT TIEDOSTOT

Tuulivoimaloiden melun synty, eteneminen ja häiritsevyys [Generation, propaga- tion and annoyance of the noise of wind power plants].. VTT Tiedotteita – Research

Pääasiallisina lähteinä on käytetty Käytetyn polttoaineen ja radioaktiivisen jätteen huollon turvalli- suutta koskevaan yleissopimukseen [IAEA 2009a] liittyviä kansallisia

Osan kaksi teemoina ovat uusien menetelmien vähäisen käytön syyt, automaattinen testaaminen luotettavuuden ilmaisijana, ohjelmiston virhemekanismit sekä ohjelmistomittojen

Koska tuotteen käyttöliittymä on se osa tuotteesta, joka konkreettisesti on vuorovaikutuksessa loppukäyttäjän kanssa ja jonka avulla tuotteen ominaisuudet saadaan

Helppokäyttöisyys on laitteen ominai- suus. Mikään todellinen ominaisuus ei synny tuotteeseen itsestään, vaan se pitää suunnitella ja testata. Käytännön projektityössä

While the concept of security of supply, according to the Finnish understanding of the term, has not real- ly taken root at the EU level and related issues remain primarily a

Describe the the modelling methods, user interface principles and guidelines that you would apply for successful completion of the user interface design project.. Outline an

It started with literature review and an online survey, followed with a design review, and according to the results of these procedures, two versions of an interface design of