AS Automaatio- ja systeemitekniikan projektityöt Loppuraportti
|
|
- Niilo Haavisto
- 6 vuotta sitten
- Katselukertoja:
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-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ätiedotAS 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ätiedot1.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ätiedotAS 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ätiedotSIMULINK 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ätiedotTietorakenteet 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ätiedotC++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ätiedotEfficiency 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ätiedotLaskennallisesti Ä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ätiedot1.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ätiedotPeltorobotin 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ätiedotInternet 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ätiedot1 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ätiedotBlueJ 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ätiedotTekstiviestipalvelun 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ätiedotSimulaattorin 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ätiedotOhjelmointi 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ätiedotOhjelmointi 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ätiedotTietorakenteet 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ätiedotAutomaatiojä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ätiedotOhjelmointiharjoituksia 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ätiedotSisä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ätiedotApuja 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ätiedotReturns 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ätiedotRINNAKKAINEN 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ätiedotEMCS-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ätiedotJava 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ätiedotS11-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ätiedot4. 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ätiedot15. 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ätiedotOhjelmointi 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ätiedot1. 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ätiedotSIMULINK 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ätiedotMetodien 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ätiedot812336A 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ätiedotSisä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ätiedotOSI 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ätiedotYksikkö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ätiedotJava 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ätiedotAS-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ätiedotOperatioanalyysi 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ätiedotCapacity 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ätiedotMittaustietojen 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ätiedotOhjelmointikielet 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ätiedot15. 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ätiedotRajapinta (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ätiedotSecurity 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ätiedotMetodit. 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ätiedotKÄ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ätiedotCUDA. 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ätiedotElectric 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ätiedot8. 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ätiedotA15 - 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ätiedotOhjelmistojen 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ätiedot16. 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ätiedotSolidity ä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ätiedotOhjelmoinnin 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ätiedotSecurity 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ätiedotRinnakkaisohjelmointi 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ätiedotGraafisen 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ätiedotFinFamily 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ätiedotTAMPEREEN 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ätiedotOliosuunnitteluesimerkki: 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ätiedotAS 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ätiedotIntegrointi. 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ätiedotITKP102 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ätiedot6.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ätiedotLYTH-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ätiedotChoose 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ätiedot811120P 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ätiedotAlternative 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ätiedotSisä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ätiedotYleistä. 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ätiedotSisä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ätiedotThe 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ätiedotChapel. 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ätiedot9. 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ätiedot4. 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ätiedotRekisterö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ätiedotVerkkoliikennettä 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ätiedotSalasanan 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ätiedotYllä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ätiedotKONEISTUSKOKOONPANON 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ätiedotTietorakenteet 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ätiedotAutomaatio- 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ätiedotYllä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ätiedot14. 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ätiedot812347A 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ätiedotEncapsulation. 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ätiedotPRINCIPLES 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ätiedotTTY 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ätiedotTä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ätiedotTietorakenteet 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 There are currently 5,000 blockchain developers. By 2020, we project a global need for over 500,000 - ConsenSys Älysopimus alustat q Ethereum
LisätiedotSisä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ätiedotSisä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ätiedotKä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ätiedot12. 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ätiedotSisä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ätiedotSisä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