AS Automaatio- ja systeemitekniikan projektityöt Loppuraportti

Koko: px
Aloita esitys sivulta:

Download "AS Automaatio- ja systeemitekniikan projektityöt Loppuraportti"

Transkriptio

1 AS Automaatio- ja systeemitekniikan projektityöt Loppuraportti PiccSIM - TrueTime -integrointi AS Automation and systems technology project work Study points: 3 cr Name of the project work: Integration of PiccSIM and TrueTime Starting date: Ending date: Author: Henri Öhman Supervisor: Mikael Björkbom

2 1. Johdanto PiccSIM on Aalto-yliopistolla kehitetty simulointiympäristö, joka on tarkoitettu langattomien säätöjärjestelmien mallintamiseen. PiccSIM-ympäristöön kuuluu Matlab/Simulink-lohkokirjasto ja Ns-2 verkkosimulaattori. Verkkosimulaattori kykenee simuloimaan dataa tietoliikenneverkossa paketin tarkkuudella ottaen huomioon mm. reitityksen, siirtoprotokollan ja langattoman signaalin vaimenemisen. Simulink-kirjasto mahdollistaa säätöjärjestelmän ja tiedonsiirtoverkon yhteisvaikutusten mallintamisen ja simuloinnin. Lundin yliopistolla Ruotsissa on kehitetty vastaavanlainen simulointiympäristö, TrueTime, joka on toteutettu kokonaan Simulinkissä. TrueTimen vahvuus on mikrokontrollerin ja säätöjärjestelmän hyvä simulointi, kun taas PiccSIMin vahvuutena on tutkimuksessa laajassa käytössä olevan verkkosimulaattorin hyödyntäminen tiedonsiirtoverkon tarkassa mallintamisessa. Tässä työssä on yhdistetty simulaatiotyökalut niin, että saadaan käyttöön molempien vahvuudet. Käytännössä tavoitteeseen on päästy toteuttamalla TrueTime-kirjastoon kommunikaatiorajapinta Simulinkin ja ns-2 verkkosimulaattorin välille. TrueTimeen lisätyt ns-2 ominaisuudet toimivat yhdessä PiccSIM-kirjaston kanssa. Projektityön tuloksena on syntynyt seuraavat dokumentit: - Projektityöraportti - PiccSIM-käyttöohjeen liite, jossa neuvotaan ns-2 kommunikaatiota tukevan TrueTime version kääntäminen ja käyttö perustasolla englanniksi - Integration of PiccSIM and TrueTime, artikkeli WoWCA 2012 seminaaria varten [1] (kirjoitusja esittämisvastuu työn ohjaajalla ) Projektityön tuloksena syntyneen version TrueTime-kirjastosta saa PiccSIM-kirjaston kotisivulta lähitulevaisuudessa: Projektityö on tehty 3 op:n mitoituksella. 2

3 2. Toteutus 2.0. Yleistä Tässä luvussa esitetään projektityössä tehdyt muutokset TrueTime-kirjastoon. Tämän luvun ensimmäisessä ja toisessa luvussa kuitenkin annetaan hieman pohjatietoja TrueTime-kirjastosta ja PiccSIM-integraation taustoista, että tehtyjen muutosten ymmärtäminen helpottuu. Tehdyt muutokset on kuvailtu luvussa TrueTime kirjaston rakenne Käyttäjän kannalta TrueTime on Simulink-kirjasto, joka tarjoaa käytettäväksi kuvassa 1 näkyvät toiminnalliset lohkot. Lohkojen sisäiset toiminnallisuudet on määritelty yleensä Matlab/Simulink S- funktioina, jotka on ohjelmoitu C++:lla. Lisäksi kirjasto tarjoaa joitain MEX-funktioita kutsuttavaksi joko Matlabin työtilasta tai m-skriptien kautta. MEX-funktiot on myös toteutettu C++:lla. M- skriptejä käytetään TrueTimessä esimerkiksi Kernel-lohkossa, jossa mikroprosessorin malli (ajettavat tehtävät, aikatasot, tehonkulutus,...) määritellään alustusskriptissä, joka annetaan lohkolle parametrina. C++ -toteutus tarkoittaa sitä, että käännetyt MEX- ja S-funktiot eivät välttämättä ole yhteensopivia kaikkien tietokonearkkitehtuurien, käyttöjärjestelmien ja Matlab-versioiden kesken. Näin ollen TrueTime-kirjasto on syytä kääntää ennen sen käytön aloittamista. Projektityössä syntyneen TrueTime-kirjastoversion kääntäminen on ohjeistettu liitteessä 1. Kuva 1. TrueTime-lohkokirjasto 3

4 2.2. TrueTime-PiccSIM integraation taustaa PiccSIM-kirjasto kommunikoi ns-2 verkkosimulaattorin kanssa UDP-paketeilla lähiverkon yli. Simulaatioympäristö koostuu siis kahdesta erillisestä PC:stä: Simulink-koneesta ja ns-2 koneesta, jotka on kytketty samaan lähiverkkoon. Verkkosimulaatiossa verkon solmupisteet (node, voidaan mieltää fyysiseksi lähettimeksi/vastaanottimeksi) kommunikoivat keskenään. PiccSIM-ympäristö määrittelee kiinteät lähetys- ja vastaanottoportit (22200 ja 22100), joihin summataan verkkosolmun numero, kun halutaan lähettää tai vastaanottaa paketti tältä solmulta. Esimerkki: Simuloidussa verkossa oleva toimilaite (node 1) lähettää viestin toiselle laitteelle (node 2). Simulink-koneelta lähetetään viestin sisältävä UDP-paketti ns-2 koneen porttiin 22202, minkä jälkeen viestin kulku simuloidaan verkkosimulaattorissa. Node 2 vastaanottaa simuloidussa verkossa kulkeneen viestin portista UPD-paketin kuormana lähetetään PiccSIM-paketti, jonka formaatti on esitetty kuvassa 2. Paketin ensimmäiset 10 tavua muodostavat paketin otsikon ja loput tavut koostuvat lähetettävästä mielivaltaisesta datasta. Verkkosolmujen väliseen kommunikaatioon tarkoitettujen pakettien lisäksi Simulink-koneen ja ns-2 koneen välillä kulkee synkronointipaketteja, joiden avulla PiccSIM tahdistaa ns-2 simulaattorin ajaman verkkosimulaation samaan tahtiin Simulink-mallin kanssa. Lisäksi käyttäjän on mahdollista pyytää diagnostiikkapaketteja ns-2 koneelta. PiccSIM-ympäristöä käytetään graafisen käyttöliittymän kautta, joka on esitetty kuvassa 3. 4B 4B 1B 1B n*1b Vast.ott. ID Aikaleima Pakettityyppikohtainen data Kuva 2. PiccSIM-pakettiformaatti Lähettäjän ID Paketin tyyppi 4

5 Kuva 3. PiccSIM-kirjaston käyttöliittymä 5

6 2.3. Muutokset TrueTimeen Projektin alussa tehtäväksi määriteltiin TrueTimen lähetys- ja vastaanottofunktioiden muokkaaminen niin, että TrueTimen omien verkkosimulointien sijaan viestit simuloitaisiinkin ns-2 simulaattorilla. TrueTimen verkko-ominaisuudet osoittautuivat kuitenkin olevan niin tiivisti sidottuja kernel-koodiin, että funktioiden toiminnan muuttaminen olisi johtanut suuriin muutoksiin koko kirjastossa. Pelkkien lähetys- ja vastaanottofunktioiden muuttamisen sijaan päätettiin tehdä rinnakkainen toteutus ns-2 verkolle, mikä mahdollistaa myös kaikkien TrueTime-kirjaston toimintojen käyttämisen ns-2 rajapinnan lisäksi. Ns-2 verkkoa mallinnettiin luokkahierarkialla, joka on esitetty kuvassa 4. Verkkosolmua edustaa luokka NS2Node, joka pystyy lähettämään UDP-paketteja toisille solmuille. Verkkosolmun jäsenfunktiot ja niiden kuvaukset on kerätty taulukkoon 1. Verkkosolmujen keskittämistä varten on luokka NS2Network, jonka jäsenfunktiot ja kuvaukset ovat taulukossa 2. Luokka- ja funktiokuvaukset on kirjoitettu englanniksi. Kuva 4. Luokkakaavio, jossa on oleellisimmat luokkien jäsenfunktiot. Tarkemmat sisäiset toteutukset on kommentoitu lähdekoodiin. 6

7 Taulukko 1. Verkkosolmua mallintava luokka NS2Node (kernel/ns2node.h, kernel/ns2node.cpp) is a class representation of a network node in ns-2 simulated network. Node can s and receive messages from another node by using its member functions. A node holds the last piece of data it has received, which can be accessed by member function getrecdata(). int smsgns2(int receivernode, int packettype, void *data, size_t length, int timestamp); This function ss a message to another node, the ID of which is given as parameter (receivernode). Messages are sent as UDP-packets with PiccSIM-formatted data in the payload. Before sing the UDP-packet, the function packs 10-byte PiccSIM-header (receivernode, timestamp, packettype, sernode) and the arbitrary data into a single byte-array. Return value is zero if s succeeded, negative on error. int getmsgns2(size_t length); This function is used to receive UDP-packets. If there are no new messages, the last received message is returned. Number of bytes to receive is given as a parameter to the function. Returns zero if the function received new data, (positive) number of bytes if the node already held unread data (mainly used with interrupts) or a negative value on error. int getnodenumber(); This function returns the integer that has been assigned as the ID of the node. size_t getdatalength(); This function returns length of the byte array that holds last received data. unsigned char* getrecdata(); This function returns the last message the node has received. Message payload is returned as an array of bytes, the length of which can be obtained by calling function getdatalength() for the same node. void closeports(); This function performs a clean-up of the node by closing all open UDP-descriptors and freeing the memory for received data. int checknewmessages(); This function is mainly used by rtsys-class where it polls for network interrupts. The function returns a positive value (number of bytes for new data) if a new message exists. Return value is zero if there are no new messages. 7

8 Taulukko 2. Ns-2 verkkoa mallintava luokka NS2Network (kernel/ns2network.h, kernel/ns2network.cpp) is a member of rtsys class of TrueTime that represents a real-time kernel. NS2Network groups all relevant network nodes (NS2Node) under one object. void addnode(std::string ip, int id); Registers a network node to the network. IP-address (ns-2 remote machine) and node number are given as function parameters. NS2Node* getnode(int id); This function seeks a node by given node ID and returns a pointer to it. void delnode(int id); This function erases a node with a specified ID from the network, freeing reserved dynamic memory in the process. void close(); A clean-up function for the network that erases all nodes from the network. Taulukoiden 1 ja 2 TrueTime-Kernelin sisäisten toteutuksien lisäksi on kirjoitettu MEX-funktiot, joilla lisättyjä ominaisuuksia voidaan käyttää Matlabin m-skriptien kautta. Lisätyt TrueTime-kernelistä kutsuttavat mex-funktiot: ttaddns2node(node_number) (kernel/matlab/ttaddns2node.cpp) Rekisteröi verkkosolmun ja ns-2 simulaattorin ip-osoitteen. Käytetään TrueTime kernelin initialisointiskriptissä. Simulaattorin ip-osoite tulee Matlab-työtilan muuttujan NS2_IP arvosta (PiccSIM asettaa automaattisesti). ttattachns2handler(node_number, handler_name) (kernel/matlab/ ttattachns2handler.cpp, kernel/attachns2handler.cpp) Liittää keskeytysten käsittelijään verkkokeskeytyksen ns-2:lta. Mahdollistaa tapahtumapohjaisen simuloinnin vastaanotettujen viestien pohjalta. Käytetään TrueTime kernelin initialisointiskriptissä, jossa ensin luodaan keskeytysten käsittelijä TrueTimen omalla käskyllä ttcreatehandler(handler_name). Keskeytyspohjaista viestien vastaanottoa varten on lisätty kernelin keskeytysrutiineihin (kernel/ttkernel.cpp) ns-2 verkkokeskeytyksen tarkastelu. ttsns2(receiver_node, ser_node, data_type, timestamp, bytes, data) (kernel/matlab/ttsns2.cpp) 8

9 Lähettää mielivaltaisen datarakenteen vastaanottajasolmuun. Datan voi tyypittää käyttäjän antamalla kokonaisluvulla, kuten PiccSIM:issä. Käyttäjän pitää tietää datan koko, kuten PiccSIM:in lohkoissakin. ttrecvns2(receiver_node, ser_node, data_type, bytes) (kernel/matlab/ttrecvns2.cpp) Vastaanottaa verkkosolmuun lähetetyn tunnetun kokoisen viestin. Funktion paluuarvoina tulevat lähettäjäsolmu, datatyyppi, aikaleima sekä itse data. Data suodatetaan datan tyypin ja lähettäjäsolmun perusteella: jos viesti saapuikin väärältä vastaanottajalta tai datan tyyppi on väärä, kaikkien kenttien paluuarvoina tulee 0. Verkkosolmulla on vastaanottopuolella yhden viestin verran puskuria. Lisättyjen funktioiden käyttöä helpottamaan on kirjoitettu vielä m-skriptit Matlab-muotoisen mielivaltaisen solutaulukon (cell array) lähettämistä ja vastaanottamista varten. Nämä m-skriptit apufunktioineen on esitetty liitteessä 2. TrueTimen ns-2 ominaisuuksien käyttöä esitellään luvussa 3 simulaatioesimerkin avulla. TrueTimen peruskäyttöä on opastettu TrueTimen omassa käyttöohjeessa. 9

10 3. Simulointiesimerkki Kuva 5. Simulink-malli, jossa säätöalgoritmia lasketaan hajautetusti Regulaattorisolmussa Kuvan 5 Simulink-mallissa on kahden verkkosolmun hajautettu säädin-/aktuaattorimalli, jolla ohjataan DC-servoa, jota on mallinnettu siirtofunktiolla Aktuaattorinode näytteistää s 2 +s lähtösignaalia ja lähettää mittaustiedon langattoman verkon yli regulaattorinodelle. Regulaattorissa viestin vastaanottaminen tapahtuu keskeytyksen kautta: kun uusi viesti havaitaan, lasketaan uusi ohjaussignaalin arvo PD-säätimellä ja lähetetään se takaisin aktuaattorille. PiccSIM:in synkronointilohko on välttämätön, että kommunikointi ns-2:n kanssa onnistuu oikein, Simulinkin määräämässä tahdissa. Molempia solmuja ajetaan omissa reaaliaikakerneleissään. TrueTime-kernel konfiguroidaan alustusskriptin avulla, joka annetaan Kernel-lohkolle parametrina (kuva 6). Esimerkin vuoksi käydään läpi regulaattorisolmun alustuskoodi. 10

11 Kuva 6. Kernel-lohkon parametrit Listauksessa 1 on alustuskoodi regulaattorinodelle. Rivillä 7 rekisteröidään regulaattorisolmun numero, minkä jälkeen, riveillä 9-14, alustetaan pakettiformaatti ja riveillä ohjauskoodin käyttämä data. Rivillä 25 asetetaan kernel käyttämään kiinteän prioriteetin tehtävien ajoitusta (priofp). Näin ollen jokaisella tehtävällä on ennalta määrätty prioriteetti ja samanaikaisten käskyjen tapauksessa korkeamman prioriteetin tehtävä suoritetaan ensin. Riveillä asetetaan säädinparametrit, jotka pitää lisätä myös säätökoodille vietävään tietorakenteeseen data (rivit 35-40). Riveillä luodaan prosessorin ajettavaksi säädintehtävä (ttcreatetask), jonka suoritukselle annetaan aikaraja (h = 10 ms) ja prioriteetti. Rivillä 49 alustetaan prosessorille keskeytyskäsittelijä, joka liitetään ns-2:lta saapuvaan viestiin (ttattachns2handler). Keskeytyskäsittelijä ajaa ns-2 viestin synnyttämän keskeytyksen seurauksena viestin vastaanottokoodin msgrcvctrl2.m, jossa käynnistetään säädintehtävän (ctrlcode2.m) ajo. Listauksessa 2 on esitetty ohjauskoodi, josta käy ilmi sekä lähetys- että vastaanottofunktioiden käyttö. Huomionarvoinen seikka on, että sekä lähetys- että vastaanottofunktion data on solutaulukko (cell array). Ennen datan lähettämistä se täytyy muuntaa Cell array:ksi; vastaavasti data muutetaan takaisin matriisimuotoon vastaanottofunktion jälkeen. Listaus 1. regulator_init2.m function regulator_init2 % Distributed control system: regulator node % % Receives messages from the sensor node, computes control signal 11

12 % and ss it back to the actuator node. OWN_ID = 1; ttaddns2node(own_id); %This node %7 % Define data format format.types = {'double'}; %10 format.lengths = {1}; %11 format.packettype = 1; %12 format.size = 8; %13 data.format = format; %14 % Create task data (local memory) data.ser = 0; %17 data.timestamp = 0.0; %18 data.type = 0; %19 data.receiver = 0; %20 data.in = 0; %21 data.id = OWN_ID; %22 % Initialize TrueTime kernel ttinitkernel('priofp'); % fixed priority %25 ttsetkernelparameter('energyconsumption', 0.010); % 10 mw % Controller parameters h = 0.010; %29 N = ; %30 Td = 0.035/0.6; %31 K = 1.5*0.4; %32 % Create task data (local memory) data.u = 0.0; %35 data.k = K; %36 data.ad = Td/(N*h+Td); %37 data.bd = N*K*Td/(N*h+Td); %38 data.dold = 0.0; %39 data.yold = 0.0; %40 % Create controller task deadline = h; %43 prio = 1; %44 ttcreatetask('pid_task', deadline, 'ctrlcode2', data); %45 ttsetpriority(prio, 'pid_task'); %46 %Initialize network ttcreatehandler('ns2_handler', 1, 'msgrcvctrl2'); %49 ttattachns2handler(1, 'ns2_handler'); %50 Listaus 2. ctrlcode2.m function [exectime, data] = ctrlcode2(seg, data) switch seg, case 1, %receive measurement and calculate control signal tempdata = 0; [tempdata, data.timestamp] = RecvNS2(data.ID,0,data.format); data.in = cell2mat(tempdata); y = data.in; r = ttanalogin(1); % Read reference value 12

13 P = data.k*(r-y); D = data.ad*data.dold + data.bd*(data.yold-y); data.u = P + D; data.dold = D; data.yold = y; %s control signal over wireless network sdata = {data.u}; SNS2(0, data.id, sdata, data.format); exectime = ; case 2, exectime = -1; % finished Kuvassa 7 on järjestelmän simuloitu vaste, jossa näkyy eri lähteistä summautuvien viiveiden vaikutukset. Simulaatioesimerkki on saatavilla projektityössä syntyneen TrueTime-kirjastoversion mukana (examples/piccsim-truetime/). Kuva 7. Järjestelmän referenssisignaali ja simuloitu vaste 13

14 Tunnit AS Automaatio- ja systeemitekniikan projektityöt, kevät Aikataulu Projektin aikataulu laadittiin alun perin niin, että projektia työstettäisiin tasaisella viikkotahdilla. Aikataulua kuitenkin muutettiin radikaalisti alkuperäisen suunnitelman laatimisen jälkeen. Muutoksen syynä oli päätös yrittää saada simulointiympäristöjen integroinnista ja vertailusta tehtyä artikkeli Vaasan yliopiston järjestämään langattoman kommunikoinnin ja sovellusten workshopiin. Työt jaettiin siten, että projektityön ohjaaja, Mikael Björkbom, otti päävastuun artikkelin kirjoittamisesta ja esittämisestä; projektityön tekijä, Henri Öhman, sai vastuulleen simulointiympäristöjen integroinnin ohjelmoimisen kiihdytetyllä aikataululla tasolle, jolla voitaisiin suorittaa artikkelin vaatimat simuloinnit ennen artikkelin ensimmäistä deadlinea ( ). Artikkeli hyväksyttiin seminaarin ohjelmaan ja esitettiin avauspäivänä Taulukossa 3 on esitetty alkuperäinen aikataulusuunnitelma, toteutunutta ajankäyttöä on verrattu suunniteltuun kuvassa 8. Käytännössä myös taulukon 3 mukainen tehtävänjako muuttui hieman, koska esimerkissä käytetty simulaatiomalli haluttiin myös toimivaksi artikkelia varten. Näin ollen simulaatiomallia on kehitetty ohjelmoinnin kanssa rinnan ja se on ollut hyödyllinen kokonaisjärjestelmän testauksessa. 120 Ajankäyttö Kuva 8. Ajankäytön seuranta; suunniteltu ajankäyttö punaisella, toteutunut ajankäyttö virheällä. 14

15 Taulukko 3. Projektin aikataulun suunnitelma Viikko Työvaihe Kurssin tapahtumat 3 Selvitysvaihe + suunnittelu Aiheiden jako, projektin aloituspalaveri 4 5 Dokumentointi Projektisuunnitelman DL ja demotilaisuus 6 7 Implementointi 8 (TrueTime-integrointi) Dokumentointi Väliraportin DL ja demotilaisuus 13 Implementointi 14 Testaus Simulointiesimerkki 17 Dokumentointia Projektin demotilaisuus 20 (Dokumentointi) 21 Dokumentaation DL Selvitysvaihe Implementointivaihe Testaus Dokumentointi 15

16 5. Yhteenveto Projektityön tuloksena syntyi toimiva versio TrueTime-kirjastosta, jossa on myös mahdollisuus käyttää ulkoista verkkosimulaattoria pakettien simulointiin. Projektin toteutumisen suhteen suurimpia riskejä odotettiin tulevan ajankäytön hallinnasta ja siitä, että toteutuksen yksityiskohdat vaativat syvällistä perehtymistä verrattaen laajaan kirjastoon C++ -kooditasolla. TrueTimen ohjelmakoodiin tutustuminen vei paljon aikaa, mikä loi paineita myös aikataulun pitämisen suhteen, varsinkin kun aikataulua oli tiivistetty alkuperäisestä. Kommunikointifunktioiden toteuttaminen rinnakkaisena toteutuksena TrueTimen omien verkkotoimintojen kanssa osoittautui hyväksi valinnaksi, ja tätä ratkaisumallia olisi voitu viedä vielä pidemmälle. Suunnitteluvaiheessa ei nimittäin huomioitu sitä, että paketteja voi tulla yhdelle verkkosolmulle useista lähteistä monella eri pakettityyppikoodilla, ja voi olla tilanteita, joissa vain tiettyjä yhdistelmiä halutaan vastaanottaa. Tämän hetkisessä toteutuksessa vastaanottopuskuria on vain yhden viestin verran, joten pahimmassa tapauksessa simulointijärjestelmä suoraan hylkää paketit, jotka eivät täsmää vastaanottokriteerien kanssa. Nyt on käyttäjän vastuulla huolehtia siitä, että nämä paketit otetaan talteen. Usein säätöjärjestelmissä myös halutaan käyttää aina tuoreinta informaatiota ja on mahdollista, että joissain verkkokonfiguraatioissa ensin lähetetty viesti saapuu perille vasta myöhemmin lähetetyn viestin jälkeen. Käyttäjän vastuulla on myös, esim. aikaleimoja vertailemalla, tarkastaa, että vastaanotettu tieto on tuoreempaa, kuin viimeksi käytetty. Yhtenä jatkokehityskohteena voisi olla esimerkiksi paremman viestien puskuroinnin toteuttaminen vastaanotetuille paketeille. Kehitystyö Matlab-ympäristössä osoittautui myös erittäin aikaavieväksi ja varsinkin C++-koodin debuggaus tuotti runsaasti ylimääräistä työtä. Sovelluskohteen käyttäjärajapinta on niin monen rajapinnan päässä C++-tasolta (C++-koodi -> Matlab -> Simulink -> PiccSIM java Toolchain), että pahimmassa tapauksessa ominaisuuksia testatessa ylin taso, PiccSIMin java-pohjainen käyttöliittymä, kaatui virheeseen ilman minkäänlaista indikaatiota, missä virhe voisi sijaita. Lopputuloksena syntyi paljon debug-koodia C++-tasolla ja saman verran dokumentoimattomia tunteja. Projektityössä oppi paljon ohjelmoinnista uudessa kehitysympäristössä. Varsinkin Matlab-kohtaisia koukkuja tuli opittua välillä turhauttavasti kantapään kautta, kun esim. C++:sta tutut ominaisuudet eivät toimineetkaan aivan niin kuin oli tottunut. Esim. singleton-luokkarakenteen käyttäminen ei toiminut käytännössä, jos luokan instanssi synnytettiin MEX-funktion sisällä, koska Matlab ilmeisesti luo luokkainstanssin MEX-funktion sisäiseen muistiavaruuteen, johtaen useampaan instanssiin oliosta, joita alun perin piti olla vain yksi. Projektityössä tuli myös opittua taas kertaalleen aiheen rajauksen tärkeys. 16

17 6. Viitteet [1] 3 rd Workshop on Wireless Communication and Applications, viittaus

18 7. Liitteet 7.1. Matlab m-skriptit ns-2 datan lähettämistä ja vastaanottamista varten. SNS2.m function SNS2(toID, OWN_ID, data, format) %S a message to ns-2 node %Calculate the size of data in bytes if ~isfield(format, 'size') totallength = 0; for i=1:length(format.types) data_size = cell2mat(format.lengths(i)); if length(data_size) == 1 data_size = [1, data_size]; totallength = totallength + getdatasize(format.types{i})*prod(data_size); format.size = totallength; %Pack data to bytes bytes = convertdata2bytes(data, format); %S bytes ttsns2(toid, OWN_ID, format.packettype, bytes, format.size, ttcurrenttime*1000); RecvNS2.m function [rdata, timestamp] = RecvNS2(OWN_ID, fromid, format) %Receive a message from ns-2 node recdata.receiver = 0; recdata.type = 0; recdata.ser = 0; timestamp = 0; rdata = 0; %Calculate the size of data in bytes if ~isfield(format, 'size') totallength = 0; for i=1:length(format.types) data_size = cell2mat(format.lengths(i)); if length(data_size) == 1 data_size = [1, data_size]; 18

19 totallength = totallength + getdatasize(format.types{i})*prod(data_size); format.size = totallength; %Receive bytes bytes = 0; [recdata.receiver, timestamp, recdata.type, recdata.ser, bytes] = ttrecvns2(own_id, fromid, format.packettype, format.size); rdata = convertbytes2data(bytes, format); getdatasize.m function s = getdatasize(datatype) %Returns the size of the input datatype in bytes. %Data types are 'UINT8', 'INT8', 'UINT16', 'INT16', 'UINT32', 'INT32', %'UINT64', 'INT64', 'SINGLE', or 'DOUBLE' switch datatype case 'uint8' s = 1; case 'int8' s = 1; case 'uint16' s = 2; case 'int16' s = 2; case 'uint32' s = 4; case 'int32' s = 4; case 'uint64' s = 8; case 'int64' s = 8; case 'single' s = 4; case 'double' s = 8; otherwise s = 0; convertdata2bytes.m function bytes = convertdata2bytes(data, format) %Decomposes given arbitrary data (in a cell-array) into bytes %based on data format structure given as input argument %Example of format %format = struct{ % 'types', {'double', 'uint8', 'double'} 19

20 % 'lengths', {2, 10, [2, 2]} % 'packettype', 1 % }; if(length(format.lengths) ~= length(format.types)) disp('error: convertdata2bytes: Data format is incorrect!'); return bytes = []; %For each piece of data for i=1:length(format.types) dataitem = data{i}; %Reshape to one-dimensional array dataarray = reshape(dataitem, 1, numel(dataitem)); %Iterate through data items and pack to bytes for n=1:numel(dataitem) temp = dataarray(n); bytes = [bytes, typecast(temp, 'uint8')]; convertbytes2data.m function data = convertbytes2data(bytes, format) %Constructs a cell-array from bytes based on data format structure given as input argument %Example of format %format = struct{ % 'types', {'double', 'uint8', 'double'} % 'lengths', {2, 10, [2, 2]} % 'packettype', 1 % }; if(length(format.lengths) ~= length(format.types)) disp('error: convertbytes2data: Data format is incorrect!'); return nbyte = 1; data = cell(1,length(format.types)); for i=1:length(format.types) %Dimensions of data data_size = cell2mat(format.lengths(i)); if length(data_size) == 1 data_size = [1, data_size]; dataitem = zeros(1,prod(data_size),format.types{i}); 20

21 %Iterate through data items and read correct amount of bytes for each type for n=1:prod(data_size) subbytes = zeros(1,getdatasize(format.types{i}), 'uint8'); for k=1:length(subbytes) subbytes(k) = bytes(nbyte); nbyte = nbyte+1; dataitem(n) = typecast(subbytes, format.types{i}); %Reshape data back to its original form dataitem = reshape(dataitem, data_size); data{i} = dataitem; 21

AS Automaatio- ja systeemitekniikan projektityöt Väliraportti

AS Automaatio- ja systeemitekniikan projektityöt Väliraportti AS-0.3200 Automaatio- ja systeemitekniikan projektityöt Väliraportti PiccSIM - TrueTime integrointi Henri Öhman 21.3.2012 1. Projektityön tavoite PiccSIM on Aalto-yliopistolla kehitetty simulointiympäristö,

Lisätiedot

AS Automaatio- ja systeemitekniikan projektityöt - Projektisuunnitelma

AS Automaatio- ja systeemitekniikan projektityöt - Projektisuunnitelma AS-0.3200 Automaatio- ja systeemitekniikan projektityöt - Projektisuunnitelma PiccSIM - TrueTime integrointi Henri Öhman 31.1.2012 1. Projektityön tavoite PiccSIM on Aalto-yliopistolla kehitetty simulointiympäristö,

Lisätiedot

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä OULUN YLIOPISTO Tietojenkäsittelytieteiden laitos Johdatus ohjelmointiin 81122P (4 ov.) 30.5.2005 Ohjelmointikieli on Java. Tentissä saa olla materiaali mukana. Tenttitulokset julkaistaan aikaisintaan

Lisätiedot

AS Automaatio ja systeemitekniikan projektityöt A13 10 Radio ohjattavan pienoismallin ohjausjärjestelmän ja käyttöliittymän kehittäminen

AS Automaatio ja systeemitekniikan projektityöt A13 10 Radio ohjattavan pienoismallin ohjausjärjestelmän ja käyttöliittymän kehittäminen Väliraportti AS 0.3200 Automaatio ja systeemitekniikan projektityöt A13 10 Radio ohjattavan pienoismallin ohjausjärjestelmän ja käyttöliittymän kehittäminen Toni Liski, Konsta Hölttä, Lasse Kortetjärvi

Lisätiedot

SIMULINK S-funktiot. SIMULINK S-funktiot

SIMULINK S-funktiot. SIMULINK S-funktiot S-funktio on ohjelmointikielellä (Matlab, C, Fortran) laadittu oma algoritmi tai dynaamisen järjestelmän kuvaus, jota voidaan käyttää Simulink-malleissa kuin mitä tahansa valmista lohkoa. S-funktion rakenne

Lisätiedot

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Taulukon edut Taulukon haitat Taulukon haittojen välttäminen Dynaamisesti linkattu lista Linkatun listan solmun määrittelytavat Lineaarisen listan toteutus dynaamisesti linkattuna

Lisätiedot

C++11 seminaari, kevät Johannes Koskinen

C++11 seminaari, kevät Johannes Koskinen C++11 seminaari, kevät 2012 Johannes Koskinen Sisältö Mikä onkaan ongelma? Standardidraftin luku 29: Atomiset tyypit Muistimalli Rinnakkaisuus On multicore systems, when a thread writes a value to memory,

Lisätiedot

Efficiency change over time

Efficiency change over time Efficiency change over time Heikki Tikanmäki Optimointiopin seminaari 14.11.2007 Contents Introduction (11.1) Window analysis (11.2) Example, application, analysis Malmquist index (11.3) Dealing with panel

Lisätiedot

Laskennallisesti Älykkäät Järjestelmät. Sumean kmeans ja kmeans algoritmien vertailu

Laskennallisesti Älykkäät Järjestelmät. Sumean kmeans ja kmeans algoritmien vertailu Laskennallisesti Älykkäät Järjestelmät Sumean kmeans ja kmeans algoritmien vertailu Annemari Auvinen (annauvi@st.jyu.fi) Anu Niemi (anniemi@st.jyu.fi) 28.5.2002 1 Tehtävän kuvaus Tehtävänämme oli verrata

Lisätiedot

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä OULUN YLIOPISTO Tietojenkäsittelytieteiden laitos Johdatus ohjelmointiin 811122P (5 op.) 12.12.2005 Ohjelmointikieli on Java. Tentissä saa olla materiaali mukana. Tenttitulokset julkaistaan aikaisintaan

Lisätiedot

Peltorobotin akselimoduulin kontrolleri

Peltorobotin akselimoduulin kontrolleri Peltorobotin akselimoduulin kontrolleri Automaatio- ja systeemitekniikan projektityöt B.Sc. Joni Rannisto (Mech.) Janne Hafrén (Mech.) Matti Koskinen (Mech.) Esitelmän rakenne 1. Tehtävänanto ja vaatimukset

Lisätiedot

Internet Protocol version 6. IPv6

Internet Protocol version 6. IPv6 Internet Protocol version 6 IPv6 IPv6 Osoiteavaruus 32-bittisestä 128-bittiseksi Otsikkokentässä vähemmän kenttiä Lisäominaisuuksien määritteleminen mahdollista Pakettien salaus ja autentikointi mahdollista

Lisätiedot

1 Tehtävän kuvaus ja analysointi

1 Tehtävän kuvaus ja analysointi Olio-ohjelmoinnin harjoitustyön dokumentti Jyri Lehtonen (72039) Taneli Tuovinen (67160) 1 Tehtävän kuvaus ja analysointi 1.1 Tehtävänanto Tee luokka, jolla mallinnetaan sarjaan kytkettyjä kondensaattoreita.

Lisätiedot

BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä

BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä Pekka Ryhänen & Erkki Pesonen 2002 BlueJ:n käyttö Nämä ohjeet on tarkoitettu tkt-laitoksen mikroluokan koneilla tapahtuvaa käyttöä varten. Samat asiat pätevät myös muissa luokissa ja kotikäytössä, joskin

Lisätiedot

Tekstiviestipalvelun rajapintakuvaus

Tekstiviestipalvelun rajapintakuvaus Tekstiviestipalvelun rajapintakuvaus Sisällysluettelo 1. Yleistä... 1 2. Lähtevien viestien rajapinta... 1 2.1. Rajapinnan tekniset tiedot ja parametrit... 1 2.2. Rajapinnan paluuarvot... 3 2.3. Rajapinnan

Lisätiedot

Simulaattorin asennus- ja käyttöohje

Simulaattorin asennus- ja käyttöohje Linux ja Windows XP Versio Päiväys Muokkaaja Kuvaus 0.2 16.2.2006 Mikko Halttunen Katselmoinin jälkeen 0.1 13.2.2006 Mikko Halttunen Alustava versio Sisällysluettelo 1 Johdanto... 3 2 Simulaattorin asennus...

Lisätiedot

Ohjelmointi 1 C#, kevät 2013,

Ohjelmointi 1 C#, kevät 2013, Ohjelmointi 1 C#, kevät 2013, 19.4.2013 (English versions of the questions can be requested from the supervisor. Englanninkieliset kysymykset saa pyytämällä tentin valvojalta.) Tentti (yliopisto opiskelijat)

Lisätiedot

Ohjelmointi 1 C#, kevät 2013, 2. tentti

Ohjelmointi 1 C#, kevät 2013, 2. tentti ITKP102 Ohjelmointi 1 C# 15.5.2013 1 / 6 Ohjelmointi 1 C#, kevät 2013, 2. tentti Tentaattori Antti-Jussi Lakanen Tässä tentissä saa olla mukana omia muistiinpanoja yhden arkin verran. Tentin valvojalla

Lisätiedot

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Merkintöjen tulkintoja *++Pstack->top = item *Pstack->top++ = item (*Pstack->top)++ *(Pstack++)->top = item *(++Pstack)->top = item Lisää pinon toteutuksia Dynaaminen taulukko

Lisätiedot

Automaatiojärjestelmän hankinnassa huomioitavat tietoturva-asiat

Automaatiojärjestelmän hankinnassa huomioitavat tietoturva-asiat Automaatiojärjestelmän hankinnassa huomioitavat tietoturva-asiat Teollisuusautomaation tietoturvaseminaari Purchasing Manager, Hydro Lead Buyer, Industrial Control Systems 1 Agenda / esityksen tavoite

Lisätiedot

Ohjelmointiharjoituksia Arduino-ympäristössä

Ohjelmointiharjoituksia Arduino-ympäristössä Ohjelmointiharjoituksia Arduino-ympäristössä Yleistä Arduino-sovelluksen rakenne Syntaksi ja käytännöt Esimerkki ohjelman rakenteesta Muuttujat ja tietotyypit Tietotyypit Esimerkkejä tietotyypeistä Ehtolauseet

Lisätiedot

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista Sisällys 1. Omat operaatiot Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma

Lisätiedot

Apuja ohjelmointiin» Yleisiä virheitä

Apuja ohjelmointiin» Yleisiä virheitä Apuja ohjelmointiin» Yleisiä virheitä Ohjelmaa kirjoittaessasi saattaa Visual Studio ilmoittaa monenlaisista virheistä "punakynällä". Usein tämä johtuu vain siitä, että virheitä näytetään vaikket olisi

Lisätiedot

Returns to Scale II. S ysteemianalyysin. Laboratorio. Esitelmä 8 Timo Salminen. Teknillinen korkeakoulu

Returns to Scale II. S ysteemianalyysin. Laboratorio. Esitelmä 8 Timo Salminen. Teknillinen korkeakoulu Returns to Scale II Contents Most Productive Scale Size Further Considerations Relaxation of the Convexity Condition Useful Reminder Theorem 5.5 A DMU found to be efficient with a CCR model will also be

Lisätiedot

RINNAKKAINEN OHJELMOINTI A,

RINNAKKAINEN OHJELMOINTI A, RINNAKKAINEN OHJELMOINTI 815301A, 18.6.2005 1. Vastaa lyhyesti (2p kustakin): a) Mitkä ovat rinnakkaisen ohjelman oikeellisuuskriteerit? b) Mitä tarkoittaa laiska säikeen luominen? c) Mitä ovat kohtaaminen

Lisätiedot

EMCS-järjestelmän sanomarajapinnan toiminnallinen kuvaus asiakkaille 13.6.2008. Meeri Nieminen

EMCS-järjestelmän sanomarajapinnan toiminnallinen kuvaus asiakkaille 13.6.2008. Meeri Nieminen EMCS-järjestelmän sanomarajapinnan toiminnallinen kuvaus asiakkaille 13.6.2008 Meeri Nieminen Asiakkaan vaihtoehdot Asiakkaan vaihtoehdot EMCS-järjestelmän käyttöön XML-sanomarajapinta oman järjestelmän

Lisätiedot

Java kahdessa tunnissa. Jyry Suvilehto

Java kahdessa tunnissa. Jyry Suvilehto Java kahdessa tunnissa Jyry Suvilehto Ohjelma Ohjelmointiasioita alkeista nippelitietoon n. 45 min Tauko 10 min Oliot, luokat ja muut kummajaiset n. 45 min Kysykää Sisältöä ei oikeasti ole 2x45 min täytteeksi,

Lisätiedot

S11-09 Control System for an. Autonomous Household Robot Platform

S11-09 Control System for an. Autonomous Household Robot Platform S11-09 Control System for an Autonomous Household Robot Platform Projektisuunnitelma AS-0.3200 Automaatio- ja systeemitekniikan projektityöt Quang Doan Lauri T. Mäkelä 1 Kuvaus Projektin tavoitteena on

Lisätiedot

4. Luokan testaus ja käyttö olion kautta 4.1

4. Luokan testaus ja käyttö olion kautta 4.1 4. Luokan testaus ja käyttö olion kautta 4.1 Olion luominen luokasta Java-kielessä olio määritellään joko luokan edustajaksi tai taulukoksi. Olio on joukko keskusmuistissa olevia tietoja. Oliota käsitellään

Lisätiedot

15. Ohjelmoinnin tekniikkaa 15.1

15. Ohjelmoinnin tekniikkaa 15.1 15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Lueteltu tyyppi enum. Override-annotaatio. Geneerinen ohjelmointi. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien

Lisätiedot

Ohjelmointi 2 / 2010 Välikoe / 26.3

Ohjelmointi 2 / 2010 Välikoe / 26.3 Ohjelmointi 2 / 2010 Välikoe / 26.3 Välikoe / 26.3 Vastaa neljään (4) tehtävään ja halutessa bonustehtäviin B1 ja/tai B2, (tuovat lisäpisteitä). Bonustehtävät saa tehdä vaikkei olisi tehnyt siihen tehtävään

Lisätiedot

1. Omat operaatiot 1.1

1. Omat operaatiot 1.1 1. Omat operaatiot 1.1 Sisällys Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma

Lisätiedot

SIMULINK 5.0 Harjoitus. Matti Lähteenmäki 2004 www.tpu.fi/~mlahteen/

SIMULINK 5.0 Harjoitus. Matti Lähteenmäki 2004 www.tpu.fi/~mlahteen/ SIMULINK 5.0 Harjoitus 2004 www.tpu.fi/~mlahteen/ SIMULINK 5.0 Harjoitus 2 Harjoitustehtävä. Tarkastellaan kuvan mukaisen yhden vapausasteen jousi-massa-vaimennin systeemin vaakasuuntaista pakkovärähtelyä,

Lisätiedot

Metodien tekeminen Javalla

Metodien tekeminen Javalla 1 Metodien tekeminen Javalla Mikä metodi on? Metodin syntaksi Metodi ja sen kutsuminen Parametreista Merkkijonot ja metodi Taulukot ja metodi 1 Mikä metodi on? Metodilla toteutetaan luokkaan toiminnallisuutta.

Lisätiedot

812336A C++ -kielen perusteet, 21.8.2010

812336A C++ -kielen perusteet, 21.8.2010 812336A C++ -kielen perusteet, 21.8.2010 1. Vastaa lyhyesti seuraaviin kysymyksiin (1p kaikista): a) Mitä tarkoittaa funktion ylikuormittaminen (overloading)? b) Mitä tarkoittaa jäsenfunktion ylimääritys

Lisätiedot

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen Sisällys 6. Metodit Oliot viestivät metodeja kutsuen. Kuormittaminen. Luokkametodit (ja -attribuutit).. Metodien ja muun luokan sisällön järjestäminen. 6.1 6.2 Oliot viestivät metodeja kutsuen Oliot viestivät

Lisätiedot

OSI ja Protokollapino

OSI ja Protokollapino TCP/IP OSI ja Protokollapino OSI: Open Systems Interconnection OSI Malli TCP/IP hierarkia Protokollat 7 Sovelluskerros 6 Esitystapakerros Sovellus 5 Istuntokerros 4 Kuljetuskerros 3 Verkkokerros Linkkikerros

Lisätiedot

Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } }

Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } } Yksikkötestauksella tarkoitetaan lähdekoodiin kuuluvien yksittäisten osien testaamista. Termi yksikkö viittaa ohjelman pienimpiin mahdollisiin testattaviin toiminnallisuuksiin, kuten olion tarjoamiin metodeihin.

Lisätiedot

Java UI-komponentit (JTable) Juha Järvensivu juha.jarvensivu@tut.fi 2007

Java UI-komponentit (JTable) Juha Järvensivu juha.jarvensivu@tut.fi 2007 Java UI-komponentit (JTable) Juha Järvensivu juha.jarvensivu@tut.fi 2007 JTable Datan esittäminen taulukkomuodossa Datan valitseminen taulukosta Datan muokkaaminen (lisääminen, muokkaaminen, poistaminen)

Lisätiedot

AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin

AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin Raimo Nikkilä Aalto-yliopiston sähkötekniikan korkeakoulu - Automaation tietotekniikan tutkimusryhmä 17. tammikuuta 2013

Lisätiedot

Operatioanalyysi 2011, Harjoitus 2, viikko 38

Operatioanalyysi 2011, Harjoitus 2, viikko 38 Operatioanalyysi 2011, Harjoitus 2, viikko 38 H2t1, Exercise 1.1. H2t2, Exercise 1.2. H2t3, Exercise 2.3. H2t4, Exercise 2.4. H2t5, Exercise 2.5. (Exercise 1.1.) 1 1.1. Model the following problem mathematically:

Lisätiedot

Capacity Utilization

Capacity Utilization Capacity Utilization Tim Schöneberg 28th November Agenda Introduction Fixed and variable input ressources Technical capacity utilization Price based capacity utilization measure Long run and short run

Lisätiedot

Mittaustietojen SAF-aineistokuvaus kaasudatahubiin

Mittaustietojen SAF-aineistokuvaus kaasudatahubiin Mittaustietojen SAF-aineistokuvaus kaasudatahubiin Versio 1.0 2 (7) Muutokset Versio Pvm Muutos 0.1 5.3.2019 SAF-aineistokuvaus eriytetty omaksi dokumentiksi 0.2 Lisätty mittaustiedon esimerkkisanomaan

Lisätiedot

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena Ohjelmointikielet ja -paradigmat 5op Markus Norrena Ko#tehtävä 4 Viimeistele "alkeellinen kuvagalleria". Käytännössä kaksi sivua Yksi jolla voi ladata kuvia palvelimelle (file upload) Toinen jolla ladattuja

Lisätiedot

15. Ohjelmoinnin tekniikkaa 15.1

15. Ohjelmoinnin tekniikkaa 15.1 15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Geneerinen ohjelmointi. Lueteltu tyyppi enum. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien silmukoimiseen:

Lisätiedot

Rajapinta (interface)

Rajapinta (interface) 1 Rajapinta (interface) Mikä rajapinta on? Rajapinta ja siitä toteutettu luokka Monimuotoisuus ja dynaaminen sidonta Rajapinta vs periytyminen 1 Mikä rajapinta on? Rajapintoja käytetään, kun halutaan määritellä

Lisätiedot

Security server v6 installation requirements

Security server v6 installation requirements CSC Security server v6 installation requirements Security server version 6.x. Version 0.2 Pekka Muhonen 2/10/2015 Date Version Description 18.12.2014 0.1 Initial version 10.02.2015 0.2 Major changes Contents

Lisätiedot

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen Metodit Metodien määrittely Metodin parametrit ja paluuarvo Metodien suorittaminen eli kutsuminen Metodien kuormittaminen 1 Mikä on metodi? Metodi on luokan sisällä oleva yhteenkuuluvien toimintojen kokonaisuus

Lisätiedot

KÄYTTÖOHJE PEL 1000 / PEL 1000-M

KÄYTTÖOHJE PEL 1000 / PEL 1000-M V1.0 (19.02.2015) 1 (8) KÄYTTÖÖNOTTO Asennus - Lähetin tulisi asentaa mittauskohdan yläpuolelle kondensoitumisongelmien välttämiseksi. - Kanavan ylipaine mitataan siten, että kanavan mittayhde yhdistetään

Lisätiedot

CUDA. Moniydinohjelmointi 17.4.2012 Mikko Honkonen

CUDA. Moniydinohjelmointi 17.4.2012 Mikko Honkonen CUDA Moniydinohjelmointi 17.4.2012 Mikko Honkonen Yleisesti Compute Unified Device Architecture Ideana GPGPU eli grafiikkaprosessorin käyttö yleiseen laskentaan. Nvidian täysin suljetusti kehittämä. Vuoden

Lisätiedot

Electric power steering

Electric power steering AS-0.3200 Automaatio- ja systeemitekniikan projektityöt Electric power steering Ohjausmoottorin jäähdytys ja ylikuumenemisen esto Projektisuunnitelma 19.9.2014 Työn ohjaaja: Ville Matikainen Tekijät: Samppa

Lisätiedot

8. Näppäimistöltä lukeminen 8.1

8. Näppäimistöltä lukeminen 8.1 8. Näppäimistöltä lukeminen 8.1 Sisällys Arvojen lukeminen näppäimistöltä Java-kielessä. In-luokka. In-luokka, käännös ja tulkinta Scanner-luokka. 8.2 Yleistä Näppäimistöltä annettujen arvojen (syötteiden)

Lisätiedot

A15 - Inertial Measurement Unit

A15 - Inertial Measurement Unit AS-0.3200 Automaatio- ja systeemitekniikan projektityöt (6op) 16.09.2008-19.12.2008 A15 - Inertial Measurement Unit Mikko Virkkilä Aki Juutistenaho Ohjaaja: Tapio

Lisätiedot

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys Tällä kurssilla on tutustuttu ohjelmistojen mallintamiseen oliomenetelmiä ja UML:ää käyttäen Samaan aikaan järjestetyllä kurssilla on käsitelty

Lisätiedot

16. Allocation Models

16. Allocation Models 16. Allocation Models Juha Saloheimo 17.1.27 S steemianalsin Optimointiopin seminaari - Sks 27 Content Introduction Overall Efficienc with common prices and costs Cost Efficienc S steemianalsin Revenue

Lisätiedot

Solidity älysopimus ohjelmointi. Sopimus suuntautunut ohjelmointi

Solidity älysopimus ohjelmointi. Sopimus suuntautunut ohjelmointi Solidity älysopimus ohjelmointi Sopimus suuntautunut ohjelmointi Merkle puu Kertausta eiliseltä Solidity on korkean tason älysopimus ohjelmointikieli Muistuttaa olio-ohjelmointia Javalla Sopimuskoodi on

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print

Lisätiedot

Security server v6 installation requirements

Security server v6 installation requirements CSC Security server v6 installation requirements Security server version 6.4-0-201505291153 Pekka Muhonen 8/12/2015 Date Version Description 18.12.2014 0.1 Initial version 10.02.2015 0.2 Major changes

Lisätiedot

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti Rinnakkaisohjelmointi kurssi Opintopiiri työskentelyn raportti Opintopiiri: Heikki Karimo, Jesse Paakkari ja Keijo Karhu Päiväys: 15.12.2006 Ohjelmointitehtävä C i C i : Säikeet ja kriittisen vaiheen kontrollointi

Lisätiedot

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Graafisen käyttöliittymän ohjelmointi Syksy 2013 TIE-11300 Tietotekniikan vaihtuva-alainen kurssi Graafisen käyttöliittymän ohjelmointi Syksy 2013 Luento 10 Rinnakkaisuus käyttöliittymäohjelmoinnissa Juha-Matti Vanhatupa Rinnakkaisuus ja käyttöliittymäohjelmointi

Lisätiedot

FinFamily PostgreSQL installation ( ) FinFamily PostgreSQL

FinFamily PostgreSQL installation ( ) FinFamily PostgreSQL FinFamily PostgreSQL 1 Sisällys / Contents FinFamily PostgreSQL... 1 1. Asenna PostgreSQL tietokanta / Install PostgreSQL database... 3 1.1. PostgreSQL tietokannasta / About the PostgreSQL database...

Lisätiedot

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2 TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos TKT-3200 Tietokonetekniikka I Harjoitustyö 4: Cache, osa 2.. 2010 Ryhmä Nimi Op.num. 1 Valmistautuminen Cache-työn toisessa osassa

Lisätiedot

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä Matti Luukkainen 10.12.2009 Tässä esitetty esimerkki on mukaelma ja lyhennelmä Robert Martinin kirjasta Agile and Iterative Development löytyvästä

Lisätiedot

AS Automaatio ja systeemitekniikan projektityöt Projektisuunnitelma Syksy 2009 A09 05 OSGi IRC Bot For Coffee Maker

AS Automaatio ja systeemitekniikan projektityöt Projektisuunnitelma Syksy 2009 A09 05 OSGi IRC Bot For Coffee Maker AS 0.3200 Automaatio ja systeemitekniikan projektityöt Projektisuunnitelma Syksy 2009 A09 05 OSGi IRC Bot For Coffee Maker Henri Nieminen Juha Sironen Palautettu: 21.9.2009 Nieminen, Sironen Sisällysluettelo

Lisätiedot

Integrointi. Ohjelmistotekniikka kevät 2003

Integrointi. Ohjelmistotekniikka kevät 2003 Integrointi Ohjelmistotekniikka kevät 2003 ERP (Toiminnanohjausjärjestelmä) Myynti Henkilöstö, palkanlaskenta Kirjanpito Myynti Myyjät Extranet Tietovarasto Laskutus, reskontrat Asiakas ERP Asiakasrekisteri

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 22. huhtikuuta 2016 Vastaa kaikkiin tehtäviin. Tee jokainen tehtävä erilliselle konseptiarkille! Kirjoittamasi luokat, funktiot ja aliohjelmat

Lisätiedot

6.3. AVR_rauta. EEPROM-muisti 09.12.2007 pva

6.3. AVR_rauta. EEPROM-muisti 09.12.2007 pva 6.3. AVR_rauta. EEPROM-muisti 09.12.2007 pva Experience is what causes people to make new mistakes instead of old ones... - Unknown Sisältö Yleistä EEPROM-rekisterit Protoilu-ohje EEPROMmista ja Fuse-biteistä

Lisätiedot

LYTH-CONS CONSISTENCY TRANSMITTER

LYTH-CONS CONSISTENCY TRANSMITTER LYTH-CONS CONSISTENCY TRANSMITTER LYTH-INSTRUMENT OY has generate new consistency transmitter with blade-system to meet high technical requirements in Pulp&Paper industries. Insurmountable advantages are

Lisätiedot

Choose Finland-Helsinki Valitse Finland-Helsinki

Choose Finland-Helsinki Valitse Finland-Helsinki Write down the Temporary Application ID. If you do not manage to complete the form you can continue where you stopped with this ID no. Muista Temporary Application ID. Jos et onnistu täyttää lomake loppuun

Lisätiedot

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2016-2017 4. Joukot, relaatiot ja funktiot Osa 3: Funktiot 4.3 Funktiot Olkoot A ja B joukkoja. Funktio joukosta A joukkoon B on sääntö, joka liittää yksikäsitteisesti määrätyn

Lisätiedot

Alternative DEA Models

Alternative DEA Models Mat-2.4142 Alternative DEA Models 19.9.2007 Table of Contents Banker-Charnes-Cooper Model Additive Model Example Data Home assignment BCC Model (Banker-Charnes-Cooper) production frontiers spanned by convex

Lisätiedot

Sisältö. 2. Taulukot. Yleistä. Yleistä

Sisältö. 2. Taulukot. Yleistä. Yleistä Sisältö 2. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.1 2.2 Yleistä

Lisätiedot

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma. 2. Taulukot 2.1 Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.2 Yleistä

Lisätiedot

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2 4. Attribuutit 4.1 Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2 Yleistä Luokan lohkossa, mutta metodien ulkopuolella esiteltyjä

Lisätiedot

The CCR Model and Production Correspondence

The CCR Model and Production Correspondence The CCR Model and Production Correspondence Tim Schöneberg The 19th of September Agenda Introduction Definitions Production Possiblity Set CCR Model and the Dual Problem Input excesses and output shortfalls

Lisätiedot

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen Chapel TIE-20306 Ryhmä 91 Joonas Eloranta Lari Valtonen Johdanto Chapel on Amerikkalaisen Cray Inc. yrityksen kehittämä avoimen lähdekoodin ohjelmointikieli. Chapel on rinnakkainen ohjelmointikieli, joka

Lisätiedot

9. Periytyminen Javassa 9.1

9. Periytyminen Javassa 9.1 9. Periytyminen Javassa 9.1 Sisällys Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Ilmentymämetodien korvaaminen. Luokkametodien peittäminen. Super-attribuutti. Override-annotaatio.

Lisätiedot

4. Luento: Prosessit ja säikeets. Tommi Mikkonen, tommi.mikkonen@tut.fi

4. Luento: Prosessit ja säikeets. Tommi Mikkonen, tommi.mikkonen@tut.fi 4. Luento: Prosessit ja säikeets Tommi Mikkonen, tommi.mikkonen@tut.fi Agenda Prosessi Säikeet Keskeytykset Keskeytyskäsittely Käyttöjärjestelmäkutsut Prosessielementti Prosessin hallinta Suunnittelunäkökohtia

Lisätiedot

Rekisteröiminen - FAQ

Rekisteröiminen - FAQ Rekisteröiminen - FAQ Miten Akun/laturin rekisteröiminen tehdään Akun/laturin rekisteröiminen tapahtuu samalla tavalla kuin nykyinen takuurekisteröityminen koneille. Nykyistä tietokantaa on muokattu niin,

Lisätiedot

Verkkoliikennettä Java[ssa lla] Jouni Smed

Verkkoliikennettä Java[ssa lla] Jouni Smed Verkkoliikennettä Java[ssa lla] Jouni Smed 9.2.2001 1 Perusteita 1 (2) tarvittavat luokat paketissa MDYDQHW IP-osoitteita käsitellään,qhw$gguhvv-olioina luonti (huom. ei konstruktoria):,qhw$gguhvvdggu,qhw$gguhvvjhw%\1dphdgguhvv

Lisätiedot

Salasanan vaihto uuteen / How to change password

Salasanan vaihto uuteen / How to change password Salasanan vaihto uuteen / How to change password Sisällys Salasanakäytäntö / Password policy... 2 Salasanan vaihto verkkosivulla / Change password on website... 3 Salasanan vaihto matkapuhelimella / Change

Lisätiedot

Ylläpito. Ylläpidon lajeja

Ylläpito. Ylläpidon lajeja Ylläpito Kaikki ohjelmistoon sen julkistamisen jälkeen kohdistuvat muutostoimenpiteet jopa 70-80% ohjelmiston elinkaarenaikaisista kehityskustannuksista Ylläpidon lajeja korjaava ylläpito (corrective)

Lisätiedot

KONEISTUSKOKOONPANON TEKEMINEN NX10-YMPÄRISTÖSSÄ

KONEISTUSKOKOONPANON TEKEMINEN NX10-YMPÄRISTÖSSÄ KONEISTUSKOKOONPANON TEKEMINEN NX10-YMPÄRISTÖSSÄ https://community.plm.automation.siemens.com/t5/tech-tips- Knowledge-Base-NX/How-to-simulate-any-G-code-file-in-NX- CAM/ta-p/3340 Koneistusympäristön määrittely

Lisätiedot

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Muuttujat eri muisteissa Ohjelman muistialueen layout Paikallisen ja globaalin muuttujan ominaisuudet Dynaamisen muistinkäytön edut Paikallisten muuttujien dynaamisuus ADT

Lisätiedot

Automaatio- ja systeemitekniikan projektityöt 2013

Automaatio- ja systeemitekniikan projektityöt 2013 Automaatio- ja systeemitekniikan projektityöt 2013 AS- 0.3200 Kahvinuuttoprosessin automaatiojärjestelmä Projektin suunnitelmadokumentti Antti Kangasrääsiö 68950W Joonas Kröger 78651M 1. Johdanto Tämän

Lisätiedot

Ylläpito. Ylläpito. Ylläpidon lajeja Ohjelmistotuotanto, syksy 1998 Ylläpito

Ylläpito. Ylläpito. Ylläpidon lajeja Ohjelmistotuotanto, syksy 1998 Ylläpito Kaikki ohjelmistoon sen julkistamisen jälkeen kohdistuvat muutostoimenpiteet jopa 70-80% ohjelmiston elinkaarenaikaisista kehityskustannuksista Ylläpidon lajeja korjaava ylläpito (corrective) testausvaiheessa

Lisätiedot

14. Luento: Kohti hajautettuja sulautettuja järjestelmiä. Tommi Mikkonen,

14. Luento: Kohti hajautettuja sulautettuja järjestelmiä. Tommi Mikkonen, 14. Luento: Kohti hajautettuja sulautettuja järjestelmiä Tommi Mikkonen, tommi.mikkonen@tut.fi Agenda Johdanto Hajautettujen järjestelmien väyliä LON CAN Pienen laitteen sisäinen hajautus OpenCL Network

Lisätiedot

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. X Poikkeusten käsittelystä

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. X Poikkeusten käsittelystä 812347A Olio-ohjelmointi, 2015 syksy 2. vsk X Poikkeusten käsittelystä Sisältö 1. Yleistä poikkeusten käsittelystä 2. Poikkeuskäsittelyn perusteita C++:ssa 3. Standardissa määritellyt poikkeukset 4. Poikkeusvarmuus

Lisätiedot

Encapsulation. Imperative programming abstraction via subprograms Modular programming data abstraction. TTY Ohjelmistotekniikka

Encapsulation. Imperative programming abstraction via subprograms Modular programming data abstraction. TTY Ohjelmistotekniikka Encapsulation Imperative programming abstraction via subprograms Modular programming data abstraction Encapsulation grouping of subprograms and the data they manipulate Information hiding abstract data

Lisätiedot

PRINCIPLES OF PROGRAMMING LANGUAGES - DEBUGGER

PRINCIPLES OF PROGRAMMING LANGUAGES - DEBUGGER PRINCIPLES OF PROGRAMMING LANGUAGES - DEBUGGER Group 16 Ville Laatu Henri Myllyoja - i SISÄLLYSLUETTELO 1. DEBUGGERI YLEISESTI... II 1.1 Debuggerin käyttämien... ii 1.2 Debuggerin käynnistäminen... ii

Lisätiedot

TTY TKT-1110 Mikroprosessorit TKT. HEW-ohjeet ver 1.0

TTY TKT-1110 Mikroprosessorit TKT. HEW-ohjeet ver 1.0 Johdanto Nämä ohjeet opastavat sinut tekemään kurssiin TKT-1110 Mikroprosessorit liittyvät harjoitustyöt. Ohjeet sisältävät kolme osiota. Ensimmäisenä esitellään projektin luonti, mikä tehdään ainoastaan

Lisätiedot

Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus:

Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus: Dokumentaatio, osa 1 Tehtävämäärittely Kirjoitetaan lyhyt kuvaus toteutettavasta ohjelmasta. Kuvaus tarkentuu myöhemmin, aluksi dokumentoidaan vain ideat, joiden pohjalta työtä lähdetään tekemään. Kuvaus

Lisätiedot

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Pino Pinon määritelmä Pinon sovelluksia Järjestyksen kääntäminen Palindromiprobleema Postfix-lausekkeen laskenta Infix-lausekkeen muunto postfix-lausekkeeksi Sisäkkäiset funktiokutsut

Lisätiedot

Älysopimusten kehittäminen. Sopimus suuntautunut ohjelmointi

Älysopimusten kehittäminen. Sopimus suuntautunut ohjelmointi Älysopimusten kehittäminen Sopimus suuntautunut ohjelmointi There are currently 5,000 blockchain developers. By 2020, we project a global need for over 500,000 - ConsenSys Älysopimus alustat q Ethereum

Lisätiedot

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2 4. Attribuutit 4.1 Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2 Yleistä Luokan lohkossa, mutta metodien ulkopuolella esiteltyjä muuttujia ja vakioita. Esittely

Lisätiedot

Sisältö. 22. Taulukot. Yleistä. Yleistä

Sisältö. 22. Taulukot. Yleistä. Yleistä Sisältö 22. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 22.1 22.2 Yleistä

Lisätiedot

Käyttöjärjestelmät: prosessit

Käyttöjärjestelmät: prosessit Käyttöjärjestelmät: prosessit Teemu Saarelainen Tietotekniikka teemu.saarelainen@kyamk.fi Lähteet Stallings, W. Operating Systems Haikala, Järvinen, Käyttöjärjestelmät Eri Web-lähteet Käyttöjärjestelmä

Lisätiedot

12. Näppäimistöltä lukeminen 12.1

12. Näppäimistöltä lukeminen 12.1 12. Näppäimistöltä lukeminen 12.1 Sisällys Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä. In-luokka. Luetun arvon tarkistaminen. Tietovirrat ja ohjausmerkit.

Lisätiedot

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4 Sisällys 12. Näppäimistöltä lukeminen Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä.. Luetun arvon tarkistaminen. Tietovirrat ja ohjausmerkit. Scanner-luokka.

Lisätiedot

Sisällysluettelo Table of contents

Sisällysluettelo Table of contents Sisällysluettelo Table of contents OTC:n Moodlen käyttöohje suomeksi... 1 Kirjautuminen Moodleen... 2 Ensimmäinen kirjautuminen Moodleen... 2 Salasanan vaihto... 2 Oma käyttäjäprofiili... 3 Työskentely

Lisätiedot