View/Open
Transcription
View/Open
Masterproef: KNX validatie systeem Studiegebied Industriële wetenschappen en technologie Opleiding Master in de industriële wetenschappen: elektrotechniek Afstudeerrichting Automatisering Academiejaar 2010-2011 Tim Gobert Academische bachelor- en masteropleidingen, Graaf Karel de Goedelaan 5, 8500 Kortrijk Voorwoord In dit voorwoord zal ik van de gelegenheid gebruik maken om alle mensen te bedanken die geholpen hebben met mijn masterproef alsook de mensen die ervoor gezorgd hebben dat ik mijn vierjarige opleiding tot Master in de Industriële wetenschappen elektrotechniek, optie automatisering aan het PIH tot een goed einde heb kunnen brengen. Eerst en vooral wil ik mijn ouders bedanken die mij de keuze en de kans gegeven hebben om deze opleiding te volgen. Zonder hun emotionele en financiële steun zou dit onmogelijk zijn geweest. Ook wil ik mijn vriendin bedanken voor de steun en aanmoedigingen die zij door de jaren heen heeft uitgesproken. Specifiek voor mijn masterproef zou ik alle medewerkers van ON Semiconductor willen bedanken en in het bijzonder: Stef Servaes mijn externe promotor, Alex Savov en Michiel Verschueren. Bij hen kon ik ieder moment uitleg vragen over zowel technische als theoretische aspecten van het project. Ook wil ik Heinz Vervaeke mijn interne promotor bedanken voor de steun, tips en feedback over alle werken die ingediend zijn met betrekking tot deze masterproef. Verder zou ik alle docenten aan de Howest, afdeling industriële wetenschappen, willen bedanken voor de hoge kwaliteit van de opleiding en het aanreiken van inzichten in zoveel mogelijk aspecten van de industriële wetenschappen. Dit heeft zowel mijn gezichtsveld als dat van mijn medestudenten verbreed wat ervoor zorgt dat we betere industriële ingenieurs zijn geworden. Ten laatste volgt waarschijnlijk de belangrijkste groep mensen die ik wil bedanken en dat zijn mijn medestudenten. Zonder hen zouden de voorbije vier jaar waarschijnlijk niet zo vlug en vlot verlopen zijn. Het kameraadschap tussen ons zorgde ervoor dat we elkaar op ieder moment en over ieder onderwerp wilden helpen. Van alle mensen zijn zij het die me het meeste nieuwe inzichten in de materie hebben aangereikt en er zo voor gezorgd hebben dat ik vrijwel alles kon begrijpen. Daarom nogmaals mijn grootste dank aan mijn medestudenten en dan specifiek diegene uit de afstudeerrichting automatisering. KNX validatie systeem II Inhoudsopgave 1 AFKORTINGEN ............................................................................................................................ 1 2 KNX VALIDATIE SYSTEEM ...................................................................................................... 2 2.1. Inleiding .................................................................................................................................................... 2 2.2. Voorstelling bedrijf .................................................................................................................................... 3 2.3. Doelstellingen ........................................................................................................................................... 5 2.4. KNX Protocol studie ................................................................................................................................... 6 2.4.1. Inleiding ..................................................................................................................................................... 6 2.4.2. OSI Model .................................................................................................................................................. 6 2.4.3. Opstelling .................................................................................................................................................. 8 2.4.4. Fysische laag .............................................................................................................................................. 9 2.4.5. Datalink laag ............................................................................................................................................ 12 2.5. KNXA testspecificaties ............................................................................................................................. 18 2.5.1. Inleiding ................................................................................................................................................... 18 2.5.2. Testspecificaties ...................................................................................................................................... 18 2.6. TTCN-3 ..................................................................................................................................................... 19 2.6.1. Waarom TTCN-3? .................................................................................................................................... 19 2.6.2. An Introduction to TTCN-3 ...................................................................................................................... 20 2.7. TTCN-3 compiler ...................................................................................................................................... 28 2.7.1. OPEN TTCN .............................................................................................................................................. 28 2.7.2. TTCN-3 voor chip testen .......................................................................................................................... 30 2.8. Test Opstelling......................................................................................................................................... 31 2.8.1. KNXA chip ................................................................................................................................................ 32 2.8.2. Host Controller ........................................................................................................................................ 34 2.8.3. Testen ...................................................................................................................................................... 40 2.9. Resultaten ............................................................................................................................................... 46 2.9.1. TTCN-3 software...................................................................................................................................... 46 2.9.2. Test scripts .............................................................................................................................................. 46 2.9.3. Verdere ontwikkelingen in de toekomst ................................................................................................. 48 3 ALGEMEEN BESLUIT .............................................................................................................. 50 4 REFERENTIES ........................................................................................................................... 51 KNX validatie systeem III Abstract KNX Validation System In this document a short description of my thesis will be formulated. The company where this Master thesis took place will be briefly presented, as well as the framework this assignment started in. Next there will be a short formulation of the goals that were set and which results were achieved. To finish a conclusion will be formulated that summarizes the benefits for the company. The company where this Master thesis took place is ON Semiconductor Belgium; it produces silicon chips that improve the energy efficiency of all sorts of applications. They are proud of their green character and work hard to reduce the impact of the energy problems. This seamlessly leads us to the framework where this Master thesis is set in. Throughout the years different media and the government have made the people susceptible to use energy more efficiently because it is scarce and we shouldn’t waste it like we do now. KNX, which is a buildings automation system, helps us to use our energy more efficiently. This leads to significant energy savings by means of e.g. automatically turning lights of when there is nobody in the room. Research has proven that KNX is capable of generating a great deal of energy savings, up to fifty percent in some applications and it is predicted to become the largest building automation system in Europe. With these two things in mind ON Semiconductor started the development of the KNXA chip that implements the KNX protocol. The goal of this Master thesis is to test if this KNXA chip works correctly and this by using the testing technology TTCN-3. TTCN-3 stands for “Testing and Test Control Notation version 3” and is specifically designed for testing telecommunication systems. The main advantage of this technology is the time profit that it produces due to the fact that the system is scalable and modular. I started tackling these goals by first getting comfortable with all the theory behind it like, the KNX protocol, the KNXA chip and the TTCN-3 technology. Once I had enough knowledge about these things the TTCN-3 technology had to be implemented correctly on chip testing, TTCN-3 is not designed for this kind of testing which made this task more challenging. After the implementation of the TTCN-3 technology the real implementation of the test scripts that would eventually test the KNXA chip could start. Twenty-six test cases where produced that step by step controlled every testable feature of the link layer of the KNX protocol. The result of these test cases is that there four errors have been discovered in the KNXA chip, these errors where passed on to engineers in ON Semiconductor who will correct this in their KNXA chip. We conclude that the TTCN-3 technology can be used for silicon testing and that this will help ON Semiconductor to make the test phase in the development of a product more reliable and shorter. These are two advantages that will lead to financial profit in the future and that will make ON Semiconductor more competitive in their market segment. KNX validatie systeem IV Lijst van figuren Figuur 2-1: Bedrijfslogo ON Semiconductor ............................................................................................................ 2 Figuur 2-2: Doelmarkten ON Semiconductor .......................................................................................................... 3 Figuur 2-3: Belangrijkste waarden .......................................................................................................................... 3 Figuur 2-4: Vestiging Oudenaarde .......................................................................................................................... 4 Figuur 2-5: Het KNX logo ......................................................................................................................................... 6 Figuur 2-6: OSI Model.............................................................................................................................................. 7 Figuur 2-7: Twisted Pair .......................................................................................................................................... 7 Figuur 2-8: opstelling KNX netwerk ......................................................................................................................... 8 Figuur 2-9: KNX voeding .......................................................................................................................................... 8 Figuur 2-10: Schema fysische laag .......................................................................................................................... 9 Figuur 2-11: KNX bustopologie ................................................................................................................................ 9 Figuur 2-12: modulatie van een logische “1” [3] ................................................................................................... 10 Figuur 2-13: modulatie van een logische “0” [3] ................................................................................................... 11 Figuur 2-14: omzetting naar seriële bitstroom [3] ................................................................................................ 11 Figuur 2-15: CSMA principe bij KNX protocol [3] ................................................................................................... 12 Figuur 2-16: Serieel karakter vs. Octet [3] ............................................................................................................. 13 Figuur 2-17: Control Field [3] ................................................................................................................................ 13 Figuur 2-18: L_Data_Standard frametype [3] ....................................................................................................... 14 Figuur 2-19: L_Data_Standard frametype(detail) [3] ........................................................................................... 14 Figuur 2-20: Individueel adres [3] .......................................................................................................................... 14 Figuur 2-21: checksum [3] ..................................................................................................................................... 15 Figuur 2-22: L_Data_Extended frametype [3] ....................................................................................................... 15 Figuur 2-23: L_Data_Extended framtype (detail) [3] ............................................................................................ 15 Figuur 2-24: Extended Control Field [3] ................................................................................................................. 16 Figuur 2-25: L_Poll_Data request frame [3] .......................................................................................................... 16 Figuur 2-26: L_Poll_Data response frame [3] ........................................................................................................ 17 Figuur 2-27: Acknowledgement frame [3] ............................................................................................................ 17 Figuur 2-28: logo TTCN-3 ...................................................................................................................................... 19 Figuur 2-29: Logo ETSI ........................................................................................................................................... 19 Figuur 2-30: Boek "An Introduction to TTCN-3” [3] ............................................................................................... 20 Figuur 2-31: Alternative Statement ....................................................................................................................... 20 Figuur 2-32: Conceptueel model van een TTCN-3 test systeem ............................................................................ 21 Figuur 2-33: Voorbeeld KNX testcase .................................................................................................................... 22 Figuur 2-34: Interactie tussen de test systeem entiteiten ..................................................................................... 23 Figuur 2-35: Type definities ................................................................................................................................... 24 Figuur 2-36: Template definities ........................................................................................................................... 24 Figuur 2-37: Test Case ........................................................................................................................................... 25 Figuur 2-38: Control definities ............................................................................................................................... 25 Figuur 2-39: schema testopstelling ....................................................................................................................... 26 Figuur 2-40: Opbouw parallelle testomgeving ...................................................................................................... 26 Figuur 2-41: Softwarematige opbouw parallelle testomgeving ............................................................................ 27 Figuur 2-42: Logo OpenTTCN ................................................................................................................................ 28 Figuur 2-43: Lay-out OpenTTCN ............................................................................................................................ 29 Figuur 2-44: fysische testopstelling ....................................................................................................................... 31 Figuur 2-45: Diagram van het KNXA silicium ........................................................................................................ 32 KNX validatie systeem V Figuur 2-46: Implementatie KNX protocol ............................................................................................................. 33 Figuur 2-47: Architectuur KNXA silicium ............................................................................................................... 33 Figuur 2-48: Host controller bord .......................................................................................................................... 34 Figuur 2-49: Doel van het bericht .......................................................................................................................... 35 Figuur 2-50: overzicht berichten host controller ................................................................................................... 35 Figuur 2-51: U_Reset.req bericht .......................................................................................................................... 35 Figuur 2-52: U_State.req bericht ........................................................................................................................... 35 Figuur 2-53: U_Busmon.req commando ............................................................................................................... 36 Figuur 2-54: U_IntRegWr.req bericht .................................................................................................................... 36 Figuur 2-55: U_IntRegRd.req bericht..................................................................................................................... 36 Figuur 2-56: U_L_DataStart.req commando ......................................................................................................... 37 Figuur 2-57: U_PollingState.req commando ......................................................................................................... 38 Figuur 2-58: Doel van het bericht .......................................................................................................................... 38 Figuur 2-59: overzicht berichten KNXA .................................................................................................................. 38 Figuur 2-60: L_Data_Standard.ind service of L_Data_Extended.ind commando .................................................. 39 Figuur 2-61: Foute testopstelling .......................................................................................................................... 40 Figuur 2-62: Correcte testopstelling ...................................................................................................................... 41 Figuur 2-63: Modules ............................................................................................................................................ 41 Figuur 2-64: Test Cases ......................................................................................................................................... 42 Figuur 2-65: Test case KNXA_SendTelegram......................................................................................................... 42 Figuur 2-66: Aanmaken Test Case ......................................................................................................................... 42 Figuur 2-67: Initialiseren en afbreken communicatie ............................................................................................ 43 Figuur 2-68: Function f_phyIni .............................................................................................................................. 43 Figuur 2-69: template phyIni ................................................................................................................................. 43 Figuur 2-70: Ontvangen phyIni .............................................................................................................................. 44 Figuur 2-71: templates request en answer frame ................................................................................................. 44 Figuur 2-72: Frame versturen ................................................................................................................................ 45 Figuur 2-73: Afgewerkte testcases ........................................................................................................................ 46 Figuur 2-74: Testopstelling polling frame testen .................................................................................................. 48 KNX validatie systeem VI 1 Afkortingen CD CH CSMA/CA CTRL DA DNS DUT ETSI KNXA KNX MAC MAU MTC OSI PA PHY PTC SA SA SUT tBit TCI TE TM TMC TP TSI TSU TTCN-3 TTCN-3 ATS TRI UART : Coding and Decoding : Component Handling : Carrier Sense Multiple Access with Collision Avoidance : Control karakterframe : Destination Address : Domain Name System : Device Under Test : Europees Telecommunicatie Standaardisatie Instituut : De silicium chip ontwikkeld door ON Semiconductor die het KNX protocol implementeert : Standaard protocol voor gebouwenautomatisering : Medium Access Control : Medium Attachment Unit : Main Test Component : Staat voor Open Systems Interconnection en beschrijft de verdeling van netwerkfuncties in zeven lagen. Opgesteld door het ISO. : Platform Adapter : Physical layer : Parallel Test Component : Source Address : SUT Adapter : System Under Test : De lengte in tijd van één bit, bij KNX is dit 104μs. : TTCN-3 Control Interface : TTCN-3 Executable : Test Management : Test Management & Control : Twisted Pair, twee getorste koperdraden die als medium gebruikt kunnen worden : Test System Interface : Test System User : Testing and Test Control Notation 3 : TTCN-3 Abstract Test Suite : TTCN-3 Runtime Interface : Universal Asynchronous Receiver and Transmitter 1 2 KNX Validatie Systeem 2.1. Inleiding Vandaag de dag beïnvloedt het topic energie efficiëntie en het zuinig omspringen met elke energievorm, het dagelijkse leven. Allerhande media berichten er over, de overheid sensibiliseert de bevolking en bedrijven nemen maatregelen zodat de stijging van de energieprijzen minder impact heeft op de jaarresultaten. Er kan dus gesproken worden over een algemene bewustwording van de energieproblematiek. In deze masterproef zal er getracht worden om een KNX validatie systeem te ontwikkelen. KNX is een bussysteem voor de gebouwenautomatisering dat als hoofddoel het efficiënter gebruiken van de toegeleverde energie in gebouwen heeft. Uit onderzoek blijkt dat het toepassen van KNX als controle systeem bij verlichtingsystemen en verwarmingstoepassingen een significante energiebesparing kan opleveren. Namelijk, door het detecteren van menselijke aanwezigheid in een lokaal kan er via het KNX netwerk gecommuniceerd worden om eventuele verlichting of conditioneringsystemen te activeren. Concreet onderzoek van de hogeschool van Bremen geeft aan dat er tot vijftig procent energiewinst gemaakt kan worden in vergelijking met conventionele verwarmingstoepassingen. Ook wordt KNX toegepast in de nieuwe terminal five van Heathrow wat voor zevenduizend ton CO2 per jaar minder uitstoot zorgt. Deze cijfers geven aan dat KNX potentieel heeft op het gebied van energie efficiëntie. Verder wordt voorspeld dat het KNX protocol de grootste speler op de domotica markt zal worden. ON Semiconductor (Figuur 2-1), het bedrijf dat deze masterproef uitschreef, wilde vertrekkend vanuit hun bedrijfsfilosofie deze boot niet missen en begon aan de ontwikkeling van de KNXA chip. Deze chip implementeert de KNX protocol eigenschappen en zal in iedere controller, sensor of actor van een KNX netwerk moeten zitten. Dit eindwerk bestaat er in om de KNXA chip te testen op de juiste werking conform het gestandaardiseerd KNX protocol en dit aan de hand van de codetaal TTCN-3. Deze masterproef heeft veel inwerkingtijd en literatuurstudie gevergd. De hoeveelheid standaarden en andere documenten die doorworsteld moesten worden waren groot, doch mocht het overzicht op het uiteindelijke doel niet verloren gaan. Daarom moest er behoorlijk wat gefilterd worden in het grote aantal documenten om uiteindelijk die documenten over te houden die betrekking hadden tot de doelstellingen van deze thesis. Figuur 2-1: Bedrijfslogo ON Semiconductor 2 2.2. Voorstelling bedrijf ON Semiconductor (Figuur 2-1) is zoals het zelf zegt: “a premier supplier of high performance silicon solutions for energy efficient electronics” [1]. Het is dus een chip fabrikant die zich vooral toespitst op het ontwikkelen van silicium chips die applicaties in al hun doelmarkten (Figuur 2-2) energie efficiënter moeten maken. Zowel in haar producten als beleid leeft de groene gedachte, om dit nog wat extra kracht bij te zetten stelt ON Semiconductor zichzelf het doel om ieder jaar 5% minder energie te verbruiken, 5% minder water te verbruiken en om hun globale CO2 voetafdruk met 5% te verminderen. Alle werknemers van ON Semiconductor trachten mee te werken aan deze bedrijfsfilosofie, steeds met de bedrijfswaarden in het achterhoofd. Deze zijn respect hebben voor elkaar, te allen tijde de integriteit behouden en initiatief durven nemen. Figuur 2-3 geeft dit weer. Figuur 2-2: Doelmarkten ON Semiconductor Figuur 2-3: Belangrijkste waarden ON Semiconductor heeft zijn hoofdzetel in Phoenix Arizona in de Verenigde Staten van Amerika en is over drie continenten sterk verspreid, dit zijn Noord-Amerika, Europa en Azië. Het stelt ongeveer 21.000 mensen tewerk en heeft een omzet van om en bij de 2 miljard dollar. In België zijn er twee vestigingen, in Oudenaarde (Figuur 2-4) en in Vilvoorde. Op beide sites worden silicium chips ontwikkeld en klantgerichte oplossingen gezocht. Enkel Oudenaarde heeft ook een eigen productiesite, een Fab genaamd, waar zelf ontwikkelde silicium geproduceerd wordt. ON Semiconductor is een grote speler op de markt van halfgeleiders maar heeft niet zelf deze vestigingen in België opgestart. De geschiedenis gaat terug naar het jaar 1983 met de oprichting van het bedrijf Mietec dat silicium ontwikkelde en produceerde voor de telecommunicatie- en automobielsector. In 1990 werd Mietec overgenomen door Alcatel dat op zijn beurt in 2002 overgenomen werd door AMI Semiconductor. In 2007 nam ON Semiconductor AMI Semiconductor over zodat ook de vestigingen in België onder de naam van ON Semiconductor zijn verdergegaan. 3 Figuur 2-4: Vestiging Oudenaarde Door innovatie en continue onderzoeksprogramma’s slaagt ON Semiconductor er in om in iedere sector waar ze aanwezig is (zie Figuur 2-2) een zo breed mogelijk gamma aan te bieden dat iedere klant individueel kan helpen. Deze sectoren zijn de automobielsector, de medische wereld, consumentenproducten, de computerwereld, de verlichtingssector, bedraad en draadloze communicatie en onderzoek naar smart grid toepassingen. Het KNX project kan bij verschillende van deze sectoren ondergebracht worden zoals de verlichtingssector of bij consumentenproducten. Kortom ON Semiconductor is een sterk innoverend bedrijf dat continu op zoek is naar het energie efficiënter maken van alle mogelijke producten met zijn silicium chips. Om zo slimmer om te springen met onze toch schaarse en dure energievormen en dit zonder in te boeten op het comfort van de consumenten. 4 2.3. Doelstellingen Het hoofddoel van deze masterproef is het ontwikkelen van een KNX validatie systeem gebruik makend van de TTCN-3 technologie. Dit omvat de zoektocht naar, of het eigenhandig ontwikkelen van een geschikte test omgeving. Alsook het softwarematig implementeren van de functionaliteit van het KNX validatie systeem wat op zijn beurt het KNX protocol moet volgen. Onlosmakelijk aan deze doelstellingen verbonden is het onder de knie krijgen van het KNX protocol om de testspecificaties te begrijpen. Er zal vertrouwd geraakt moeten worden met het KNXA silicium van ON Semiconductor om het hardwarematig deel van de masterproef aan te kaarten. Ook zal een grondige studie van de TTCN-3 programmeertaal en technologie vereist zijn. Eens de geschikte test omgeving gevonden is kan de functionele test software geschreven worden in de TTCN-3 programmeertaal. 5 2.4. KNX Protocol studie 2.4.1. Inleiding KNX (Figuur 2-5) is een communicatieprotocol dat is opgebouwd volgens het OSI-model. Het protocol beschrijft hoe de communicatie tussen sensoren, controllers en actuatoren in het netwerk verloopt. Het KNX Device Network ontstond uit de samensmelting van drie toonaangevende systemen voor gebouwenautomatisering, deze zijn EIB, EHS en BatiBus. Figuur 2-5: Het KNX logo KNX heeft als grote doel om de energie efficiëntie in gebouwen, van gewone huizen tot grote kantoorgebouwen, sterk te verbeteren. Doordat iedere deelnemer van het netwerk apart kan worden aangestuurd, zal vermeden worden dat ruimtes zonder onmiddellijke menselijke activiteit niet onnodig verlicht, verwarmd, afgekoeld, … worden. Het KNX-systeem zorgt er dus voor dat er zuiniger met energie kan omgesprongen worden zonder in te boeten op het gebied van comfort en gebruiksgemak. De drie meest voorkomende media waarop het KNX-protocol wordt toegepast zijn Twisted Pair, Power Line en Radio Frequency. Bij Power Line wordt de datastroom gesuperponeerd op de voedingsstroom en bij Radio Frequency wordt de datastroom draadloos verspreid over het hele netwerk. In het kader van de deze masterproef wordt alleen het medium Twisted Pair grondig bestudeerd. 2.4.2. OSI Model OSI staat voor Open System Interconnection en is ontwikkeld door het ISO, de internationale organisatie voor standaardisering. Het model beschrijft de communicatie tussen twee gebruikers op een netwerk en bevat zeven lagen (Figuur 2-6). Hieronder wordt iedere laag kort toegelicht [2]. In verdere paragrafen worden de fysische en datalink laag uitvoerig besproken omdat deze masterproef enkel betrekking heeft op deze twee lagen. 6 Figuur 2-6: OSI Model 1. De Fysische laag voorziet in de mechanische, elektrische of optische entiteiten die nodig zijn om de fysische verbinding tot stand te brengen. In het van deze masterproef is deze fysische laag het twisted pair (Figuur 2-7). Figuur 2-7: Twisted Pair 2. De Datalinklaag geeft aan hoe frames over het netwerk verstuurd moeten worden. Naast het toegangsmechanisme voorziet de datalink laag ook foutdetectie- en correctiemechanismen om een juiste afhandeling van transmissiefouten te hebben. 3. In de Netwerklaag wordt het vinden van de route door het netwerk en het voorkomen van opstoppingen geregeld. 4. De Transportlaag zorgt voor een efficiënt gebruik van het netwerk. Door bijvoorbeeld grote dataframes opgesplitst in verschillende pakketten te versturen. 5. De Sessielaag voorziet in de controlestructuur van de sessie tussen twee deelnemers in het netwerk, alsook het opzetten en verbreken van een sessie. 6. De Presentatielaag bepaalt hoe data wordt weergegeven. 7. De Applicatielaag levert diensten aan de toepassingen die draaien op de systemen van het netwerk. 7 2.4.3. Opstelling Figuur 2-8 toont een standaard opstelling van KNX netwerk [4]. Voeding en data worden op het Twisted Pair geplaatst. De stroom op het netwerk wordt geleverd door een voeding en een smoorspoel. Figuur 2-9 toont een KNX voeding zoals die op de markt te verkrijgen is, de smoorspoel zit mee in de behuizing. Figuur 2-8: opstelling KNX netwerk Figuur 2-9: KNX voeding Over de KNX bus is er seriële asynchrone transmissie en de communicatie is half duplex. Met seriële asynchrone transmissie wordt bedoeld dat de bitsynchronisatie gebaseerd is op de inwendige klok van de ontvangende deelnemer op het netwerk. Zowel zender als ontvanger heeft een inwendige klok. Half duplex communicatie stelt dat de informatie in twee richtingen kan stromen. Beide deelnemers kunnen dus zenden en ontvangen maar er mag slechts één deelnemer tegelijkertijd zenden. Heel wat protocollen gebruiken het principe van half duplex waarbij ontvangen data bevestigd wordt naar de zender toe. Dit is ook het geval bij het KNX protocol. 8 2.4.4. Fysische laag De fysische laag [3] bestaat uit vier blokken die verduidelijkt worden in Figuur 2-10. 1. 2. 3. 4. Het medium, hier Twisted Pair. De connector die het toestel koppelt met het medium. Het MAU (Medium Attachment Unit). Ze zet de analoge informatie verkregen van het medium om in digitale informatie die verder verwerkt kan worden en omgekeerd zet ze de digitale informatie verkregen van de hoger gelegen lagen om in analoge signalen die op het medium geplaatst kunnen worden. Ook ontkoppelt de MAU de datastroom van voedingsstroom. De Logical unit. Ze zet de seriële bits die het ontvangt van de MAU om in bytes en ook omgekeerd zet ze bytes van hoger gelegen lagen om in een seriële bitsequentie. Figuur 2-10: Schema fysische laag De topologie van het netwerk kan een lijnstructuur, sterstructuur, boomstructuur of alles door elkaar zijn zoals verduidelijkt in Figuur 2-11. Figuur 2-11: KNX bustopologie 9 Verdere specificaties worden hieronder kort opgesomd. Baud Rate = 9600 bits/s PSU (Power Supply Unit) = 30V Verbruik per netwerkdeelnemer = 3 tot 12 mA Maximum aantal netwerkdeelnemers per segment = 256 Maximale kabellengte in één segment = 1000m Maximale afstand tussen twee netwerkdeelnemers = 700m 2.4.4.1. Modulatie Modulatie staat voor de manier waarop databits, logische enen en nullen, fysisch op het medium geplaatst worden. Modulatie verpakt als het ware de data in een ander signaal. Er bestaan veel gestandaardiseerde modulatietechnieken zoals non-return to zero of manchester code. Toch is de modulatie die wordt toegepast bij KNX specifiek voor het KNX protocol. Logische “1”: Bij een logische 1 verkeert het netwerk in de “idle state”, er gebeurt dus niets. Figuur 2-12 verduidelijkt dit. Een logische 1 is ondergeschikt aan een logische 0, dit betekent dat als er tegelijkertijd een logische 1 en een logische 0 op het bussysteem geplaatst wordt, de logische 0 de bovenhand haalt. Uiteindelijk zal er dus een 0 verstuurd worden. Figuur 2-12: modulatie van een logische “1” [3] Logische “0”: Bij een logische nul wordt de busspanning naar beneden getrokken voor 35μs. Daarna schiet de spanning terug omhoog tot boven de gemiddelde busspanning om zo het te weinig aan vermogen die de deelnemers kregen tijdens de spanningsdip te compenseren. Dit gedeelte duurt 69μs. Hieruit volgt ook dat de bittijd 104μs lang is wat conform de baud rate van 9600bits/s is want . Figuur 2-13 verduidelijkt dit principe. Zoals hierboven vermeld is de logische 0 dominant t.o.v. een logische 1. 10 Figuur 2-13: modulatie van een logische “0” [3] Op Figuur 2-14 wordt getoond hoe het analoge bussignaal omgezet wordt naar een seriële bitstroom. Figuur 2-14: omzetting naar seriële bitstroom [3] 11 2.4.5. Datalink laag De datalinklaag is de tweede laag van het OSI model, het is de laag tussen de fysische en de netwerklaag. Het voorziet in de Medium Acces Control (MAC) en de opbouw van de dataframes. 2.4.5.1. MAC Het KNX protocol werkt met het CSMA/CA (Carrier Sense Multiple Access/ Collision Avoidance) principe. Dit wil zeggen dat iedere deelnemer in het netwerk het initiatief kan nemen om te zenden (Multiple Access) en dat de deelnemer die wil zenden eerst het medium beluisterd alvorens een bericht op het bussysteem te plaatsen (Carrier Sense). Naargelang de prioriteit of het soort bericht, zie punt 2.4.5.2. , wordt in het KNX protocol het CSMA principe anders ingevuld. Vooraleer een deelnemer mag zenden moet het medium minstens 50 bittijden (50 * 104μs = 5.2ms) beluisterd worden, als er na 50 bittijden geen enkel bericht op de lijn is gepasseerd mag er begonnen worden met zenden. Figuur 2-15 verduidelijkt het CSMA principe voor de verschillende soorten berichten die het KNX protocol rijk is. Figuur 2-15: CSMA principe bij KNX protocol [3] Het kan voorvallen dat twee of meer gebruikers tegelijkertijd beginnen te zenden na een wachttijd van 50 bittijden. Hier treedt dan het Collision Avoidance principe in werking. Als een deelnemer een bericht op het bussysteem plaats wordt er tezelfdertijd ook geluisterd op het medium. Door het feit dat een logische nul dominant is t.o.v. een logische 1, zal een deelnemer die een logische 1 op het medium stuurt maar een logische 0 waarneemt, weten dat er een collision gebeurd is. Dit zal er toe leiden dat de deelnemer onmiddellijk stopt met zenden en enkel nog het medium beluistert. De deelnemer die de logische 0 op het medium stuurde gaat door met zenden omdat deze geen collision heeft gedetecteerd. Dit principe zorgt ervoor dat er steeds één van de berichten zeker verzonden wordt wat voor een betere benuttigingsgraad van het medium zorgt t.o.v. CSMA/CD principe waar CD voor collision detect staat. Bij het CSMA/CD principe stoppen namelijk alle deelnemers met zenden als er een collision gedetecteerd wordt. Na een veroveringsfase begint één van de deelnemers dan weer met zenden. Als beide deelnemers nu een logische 0 op het medium plaatsen, dan gebeurt er niets. Dit gaat door tot één van de deelnemers een logische 1 stuurt als de andere een logische 0 stuurt. Met andere woorden, de deelnemer die het frame met de meeste leidende nullen verstuurd zal de hoogste prioriteit hebben. Bijvoorbeeld: frame1 met octet 0000 0110 zal de prioriteit hebben op frame2 met octet 0000 1000. 12 2.4.5.2. Dataframes Het KNX protocol over twisted pair omschrijft drie soorten dataframes: L_Data frametype L_Poll_Data frametype Acknowledgement frametype In de volgende onderdelen worden deze dataframes verder uitgelegd. De figuren van de dataframes zullen afgebeeld zijn in octet structuur maar er moet rekening mee gehouden worden dat ieder karakterframe een start, stop en pariteit bit heeft. Figuur 2-16 verduidelijkt dit. Figuur 2-16: Serieel karakter vs. Octet [3] Het eerste karakterframe van alle drie de dataframes is het Control field (CTRL). In dit karakterframe wordt vastgelegd om welk dataframe het gaat, wat de prioriteit is en als het een dataframe is dat meermaals herhaald moet worden. In Figuur 2-17 wordt dit voorgesteld. Figuur 2-17: Control Field [3] L_Data frametype Zoals te zien is in Figuur 2-17 bestaan er twee soorten L_Data frametypes, het L_Data_Standard frametype en het L_Data_Extended frametype. 13 L_Data_Standard frametype: Zoals de naam al doet vermoeden is dit het standaard frame voor het verzenden van relatief korte berichten. De lengte van het karakterframe ligt vast op maximaal 22 bytes of minder. Wil men een langer bericht versturen dan moet er overgestapt worden op een L_Data_Extended frametype. Figuur 2-18 & Figuur 2-19 tonen respectievelijk de algemene vorm van een L_Data_Standard frametype en de gedetailleerde voorstelling. Figuur 2-18: L_Data_Standard frametype [3] Figuur 2-19: L_Data_Standard frametype(detail) [3] Het CTRL karakterframe werd eerder al besproken. SA en DA staan voor Source Address en Destination Address en geven dus respectievelijk aan wat het adres van de zender is en naar welk adres het bericht verzonden moet worden. Beiden bestaan ze uit 16 bits maar ze zijn opgebouwd uit een 8 bit lang subnetwork address en een 8 bit lang device address. Figuur 2-20 verduidelijkt dit. Figuur 2-20: Individueel adres [3] In octet 5 wordt het adres type en de lengte meegegeven. Het adres type geeft weer of het destination address een individueel of een groepsadres is. De lengte is een integer die het aantal karakters (0 t.e.m. 14) vanaf octet 7 voorstelt. Het laatste octet van het dataframe is dan de checksum. De checksum werkt met oneven pariteit. Alle octetten worden als het ware op elkaar gestapeld om een tabel te bekomen met 8 kolommen en het aantal rijen in overeenstemming met het aantal octetten, hier maximaal 22. Dan wordt per kolom gekeken wat het aantal enen is. Is het aantal even, dan wordt in het checksum octet een 1 geplaatst op de overeenkomstige plaats van de kolom om zo tot een oneven aantal enen te komen. Figuur 2-21 zal dit verduidelijken. 14 Figuur 2-21: checksum [3] L_Data_Extended frametype: Voor het versturen van berichten die de 15 octetten overschrijden of om uitgebreide adresseringsmogelijkheden te hebben wordt er gebruik gemaakt van het L_Data_Extended frametype. Figuur 2-22 & Figuur 2-23 tonen respectievelijk de algemene vorm van een L_Data_ Extended frametype en de gedetailleerde voorstelling. Figuur 2-22: L_Data_Extended frametype [3] Figuur 2-23: L_Data_Extended framtype (detail) [3] Het grootste verschil met het vorige dataframe is de toevoeging van het CTRLE karakter. Wat staat voor “extended control field”. Figuur 2-24 stelt het CTRLE karakter voor. 15 Figuur 2-24: Extended Control Field [3] Het adrestype geeft ook hier aan of er met een individueel of een groepadres gewerkt wordt. De hop count is een getal die weergeeft hoeveel keer een bericht op het netwerk geregenereerd mag worden door KNX repeaters. Het extended frame format geeft weer of er speciale adres formaten of tabellen zullen gebruikt worden. De lengte van het L_Data_Extended frametype wordt meegegeven in het LG karakter. Waar de waarde van het length karakter bij het L_Data_Standard frametype van 0 t.e.m. 14 liep, kan de waarde van 0 t.e.m. 254 lopen. L_Poll_Data frametype Figuur 2-25 is een L_Poll_Data request frame. Dit frame wordt verzonden door een Poll Data Master naar al zijn Poll Data Slaves. Dit bericht wordt gebruikt om data op te vragen van alle deelnemers op het netwerk van eenzelfde poll groep op een eenvoudige wijze. Iedere deelnemer antwoord met een L_Poll_Data Response frame. Figuur 2-26 verduidelijkt hoe dit gebeurt. Figuur 2-25: L_Poll_Data request frame [3] 16 Figuur 2-26: L_Poll_Data response frame [3] Na het ontvangen van de laatste bit van het L_Poll_Data request frame wordt er 5 bittijden gewacht voor de eerste poll slave begint te zenden. Iedere slave kent zijn poll groep en zijn plaats in de volgorde van antwoorden. Een fill karakter wordt verstuurd door de poll master als dit nodig is. Een poll groep kan tot 15 poll slaves bevatten, het aantal poll slaves zal overeen komen met het aantal verwachte poll data die in octet 5 staat weergegeven op Figuur 2-25. Acknowledgement frametype Figuur 2-27 toont de verschillende vormen waarin het acknowledgement frametype voorkomt. Het acknowledgement frame wordt gestuurd als er een bericht dat op het netwerk werd geplaatst een bevestiging nodig heeft. Als een acknowledgement frame verwacht wordt zal het netwerk 15 bittijden inactief zijn gevolgd door het acknowledgement frame. Figuur 2-27: Acknowledgement frame [3] Een ACK geeft weer dat het bericht goed ontvangen is, een NACK dat het bericht niet goed ontvangen is en een BUSY dat het netwerk bezet is en dat er gewacht moet worden. 17 2.5. KNXA testspecificaties 2.5.1. Inleiding Vooraleer ON Semiconductor de KNXA chip op de markt mag brengen als erkend KNX product moet er eerst aan een aantal vereisten voldaan worden. Deze vereisten zijn opgesteld door de KNX associatie die er op toeziet dat alle producten die op de markt komen met het KNX label daadwerkelijk ook voldoen aan de door hen gestelde eisen. Er moet voldaan worden aan [5]: 1. Kwaliteitssysteem volgens ISO 9001. 2. Europese standaard EN 50090-2-2 (dergelijke aspecten behandelen zoals EMC, elektrische veiligheid, milieuvoorwaarden, van busproducten) en een aangewezen productnorm. De naleving kan aan KNX Association door de voorlegging van een CE- verklaring worden getoond. 3. Volume 3 en Volume 6 van de KNX specificaties, de eerste zijn de KNX protocoleigenschappen, de laatstgenoemde zijn de toegestane profielen van KNX gebaseerd op toolbox zoals voordien vermeld. 4. KNX interactievereisten betreffende gestandaardiseerde gegevenstypes en (naar keuze) goedgekeurde functionele blokken. In het blikveld van deze masterproef wordt er enkel rekening gehouden met het eerste deel van punt drie. Namelijk Volume 3 van de KNX specificaties die de KNX protocoleigenschappen afhandelen. 2.5.2. Testspecificaties In bijlage 1 zit het bestand met de testspecificaties, dit bestand is opgebouwd door een medewerker bij ON Semiconductor en is gebaseerd op het KNX protocol zoals het in paragraaf 2.4. voorgesteld. Het bestand is opgedeeld in twee delen, enerzijds testspecificaties voor het fysisch deel van de link layer en anderzijds voor het data gedeelde van de link layer. Concreet beschrijft het eerste deel dus testen die de correctheid van: pariteitsbits, stopbits, frame prioriteiten en tijdsgerelateerde afspraken volgens Figuur 2-15 nagaan. In het tweede deel worden testen op: controle veld, source adres, destination adres, lengte, check octet en confirmation veld besproken. De opbouw en functionaliteit van de geschreven test scripts zal conform dit document moeten zijn. 18 2.6. TTCN-3 TTCN-3, Testing and Test Control Notation versie 3 (Figuur 2-28) is een door het ETSI gestandaardiseerde taal voor het schrijven van testen in het wijde bereik van computer en telecommunicatie systemen. Het stelt de gebruiker van de taal in staat om testgedrag van eender welke applicatie ondubbelzinnig voor te stellen en zo op een correcte manier de applicatie te testen. Iedere nieuwe versie van de taal voegt extra functionaliteiten toe en maakt de taal gebruiksvriendelijker. De taal heeft zijn oorsprong in telecommunicatiesector en werd door werknemers van Nokia ontwikkeld. Door de grote tijdswinst die gemaakt werd in de testfase van het productieproces werd deze taal ontwikkeld zodoende deze geschikt te maken voor allerhande testplatformen. Figuur 2-28: logo TTCN-3 2.6.1. Waarom TTCN-3? De keuze om TTCN-3 te gebruiken in deze masterproef is te staven door meerdere argumenten, hieronder worden de belangrijkste opgesomd [6]. TTCN-3 is een taal die eenvoudig aan te leren is mits enige kennis van standaard programmeertalen zoals: C, C++, C#, vb.net of Java. TTCN-3 is specifiek ontworpen voor het testen wat veel voordelen met zich meebrengt. Het is een door het ETSI (Figuur 2-29) internationaal gestandaardiseerde taal die onderhouden wordt door experts uit de industrie en academici. Figuur 2-29: Logo ETSI Het is een uiterst flexibele test technologie omdat de taal zelf los staat van de implementatietechnologie en het operating system van het systeem dat getest moet worden. Het kan voor veel verschillende types van testen gebruikt worden. In deze masterproef staan protocol testen centraal. TTCN-3 gaat al een tijd mee. De taal bestaat al 10 jaar en is al die tijd al stabiel, veel functionaliteiten werden overgeërfd van de TTCN-2 taal die ook al veelvuldig werd toegepast. Ook het feit dat TTCN-3 succesvol werd toegepast in de certificatie voor nieuwe technologieën zoals: IPv6, WiMax en 3GPP bewijzen de sterkte van de taal. 19 2.6.2. An Introduction to TTCN-3 Voor het bestuderen van de codetaal TTCN-3 werd het boek “An Introduction to TTCN-3” [7] (Figuur 2-30) aangekocht door ON Semiconductor. Het boek is geschreven door de grondleggers van de TTCN-3 taal en is specifiek gericht op beginnende gebruikers. De auteurs leggen de TTCN-3 syntax en de structuur van een test systeem uit aan de hand van het DNS protocol om de link met de realiteit te bewaren. Zo wordt het boek verstaanbaar en kan er snel inzicht in de materie verworven worden. Figuur 2-30: Boek "An Introduction to TTCN-3” [3] 2.6.2.1. Basisprincipe TTCN-3 Het basisprincipe van TTCN-3, of van eender welk ander testsysteem, is de mogelijkheid om wat je ontvangt van de SUT (System Under Test) te vergelijken met wat je verwacht te ontvangen. Hiermee wordt er bedoeld dat, wanneer er een bepaald commando gestuurd wordt naar de SUT, dan weet de gebruiker welk antwoord er zou moeten teruggestuurd worden door de SUT. Door het teruggestuurd bericht van de SUT te vergelijken met dat wat je verwacht kan er een conclusie gemaakt worden door het test systeem. De manier waarop de TTCN-3 taal dit oplost is door het gebruik van het “Alternative Statement”, afgekort Alt statement. Figuur 2-31 geeft weer hoe dit softwarematig opgebouwd is aan de hand van het zenden en ontvangen van een KNX frame. Figuur 2-31: Alternative Statement 20 Bij het zenden van een KNX_Question_Frame via een poort naar de SUT, wordt er verwacht dat het antwoord van die SUT een KNX_Answer_Frame zal zijn. Is dit het geval dan krijgt de testcase Send_Receive_KNX_Frame het verdict “pass”, wat betekend dat de test geslaagd is. Ontvangt het test systeem iets anders op die poort dan het KNX_Answer_Frame dan zal de testcase het verdict “fail” meekrijgen. Met deze syntax kan op een korte en duidelijke wijze een bepaalde functie van een systeem getest worden. 2.6.2.2. Opbouw van een test systeem Eerst zal de opbouw van een volledig test systeem met daarin de codecs, adapters en TTCN-3 executable uitvoerig besproken worden. Ten tweede wordt er dieper ingegaan op de opbouw van een TTCN-3 abstract test suite (TTCN-3 ATS) zelf. 2.6.2.2.1. Test systeem In de vorige paragraaf wordt de term “TTCN-3 Abstract Test Suite” voor het eerst aangehaald. De reden waarom TTCN-3 test scripts abstract genoemd worden is omdat de coderegels in de scripts geen systeem specifieke informatie bevatten. Er staat bijvoorbeeld niet in hoe de berichten gecodeerd moeten worden om de communicatie met het te testen systeem (SUT, System Under Test) tot stand te brengen. In test scripts staat er niets vermeld van hoe de bits en bytes tussen het test systeem en het SUT verlopen alsook het medium waarop dit moet gebeuren. Deze abstractie van de taal is handig omdat er in eerste instantie een volledig onafhankelijk programma geschreven kan worden los van alle systeemeigenschappen, hardware onafhankelijk dus. Het concreet maken van deze TTCN-3 scripts gebeurt door de TTCN-3 taal uitvoerbaar te maken voor de PC. Hiervoor moet de TTCN-3 taal geïnterpreteerd of vertaald worden naar een verstaanbare taal voor de PC, voorbeelden hiervan zijn c, c++, c#, Java, ... . Figuur 2-32 toont het conceptueel model van een TTCN-3 test systeem. In wat volgt zal iedere entiteit van het model besproken worden. Figuur 2-32: Conceptueel model van een TTCN-3 test systeem 21 Een TTCN-3 test systeem bestaat uit verschillende entiteiten die op elkaar inwerken tijdens de uitvoering van een test suite. Figuur 2-32 geeft de architectuur van een test systeem weer, hierop zijn drie dominante lagen te zien. Een centrale laag, de TTCN-3 executable (TE), staat in voor de uitvoering van de TTCN-3 scripts. Om te kunnen werken doet de TE beroep op een aantal diensten van de andere twee dominante lagen. De Test Management en Control (TMC) entiteit en de SUT en Platform Adapter. De TMC bestaat uit drie onderdelen die instaan voor het decoderen en coderen van data, de interfacing met de test system user en aspecten die te maken hebben met gedistribueerde uitvoeringen. Respectievelijk zijn dit: de External Codecs (CD), het Test Mangement (TM) en de Component handling (CH). Deze entiteiten communiceren met de TE via de TTCN-3 Runtime Interface. Het TM en de CH zullen verder niet meer aan bod komen omdat zij meestal voorzien worden door de ontwikkelaars van TTCN-3 tools en ze dus niet zelf geschreven moeten worden. De SUT en Platform Adapter zorgen voor de interface met respectievelijk de SUT en het test system operating systeem. De communicatie hier verloopt via de TTCN-3 Control Interface (TCI). Nu zal aan de hand van een klein voorbeeld de communicatie tussen de verschillende entiteiten duidelijk gemaakt worden om zo nog een beter inzicht in de communicatie van het test systeem te verwerven. Figuur 2-33: Voorbeeld KNX testcase Figuur 2-33 toont de code van een eenvoudig voorbeeld met dezelfde functionaliteit als het voorbeeld uit Figuur 2-31, paragraaf 2.6.2.1. . Figuur 2-34 overloopt de communicatie over en weer tussen de verschillende entiteiten van het test systeem. Iedere actie uit Figuur 2-34 wordt stap voor stap overlopen. Let vooral op als de communicatie via TCI of TRI verloopt, de grijze doorzichtige blokken geven weer als een entiteit in actie is. 22 Figuur 2-34: Interactie tussen de test systeem entiteiten Bij het initialiseren van het test systeem zet de TE de TRI acties Reset_SA en Reset_PA in gang. Eenmaal deze succesvol bevestigd zijn zal de TE het control gedeelte van de test suite doorlopen, wat de uitvoering van de testcase met zich meebrengt. Het eerste die gebeurt bij het uitvoeren van de testcase is het map commando dat zorgt voor de communicatie interface met het System Under Test. De softwarematige poorten worden hierbij aan fysische poorten gelinkt en de SA is vanaf dit punt actief tot het een unmap commando ontvangt. Het eerstvolgende dat moet gebeuren is het zenden van een KNX_Question_Frame, vooraleer dit kan gebeuren moet het KNX_Question_Frame dat een TTCN-3 waarde is gecodeerd worden naar een vorm die door de SUT Adapter begrepen wordt. Dit gebeurt door het KNX_Question_Frame via de TCI naar de codec te sturen die op zijn beurt antwoord met de gecodeerde versie van het bericht. Dit bericht wordt dan door de SUT Adapter naar de SUT gestuurd. In afwachting van een antwoord van de SUT wordt een timer gestart. Timers worden geregeld door de Platform Adapter dus wordt een commando vanuit de TE naar de PA gestuurd die een timer start en een bevestiging terugstuurt naar de TE. Na verloop van tijd ontvangt de SA een antwoord van de SUT, dit bericht wordt in een wachtrij gestopt om dan vervolgens via de TCI met de codec gedecodeerd te worden. Het gedecodeerde antwoord van de codec kan nu in het Alt Statement vergeleken worden met het verwachte antwoord om zo een verdict te stellen. De TE geeft het commando aan de PA om de timer te stoppen en de SA krijgt het commando om de poorten te unmappen. De rol van de timer t_replyTimer in dit voorbeeld is om de SA niet eeuwig te laten wachten op een antwoord van de SUT. Als een bericht verstuurd wordt maar de SUT antwoordt om een of andere reden niet, dan zal bij het aflopen van de timer aan een voorwaarde in het Alt statement voldaan zijn en zal het unmap commando verstuurd worden. 23 2.6.2.2.2. TTCN-3 test scripts De TTCN-3 taal neemt op het gebied van syntax dingen over van andere programmeertalen, een basiskennis van de principes van het programmeren is dus gewenst. Zoals andere talen maakt TTCN-3 ook gebruik van imports om definities en declaraties te importeren in andere stukken code of functions om frequent gebruikte handelingen in onder te brengen. De punten waarop de TTCN-3 taal verschilt van andere talen zijn de alt statements, type definities, template definities, test cases en control definities. Alt statements worden al besproken in paragraaf 2.6.2.1. en zullen hier dus niet herhaald worden. Type definities De type definities declareren de nodige structuurelementen van een test script. Zij worden doorheen het programma gebruikt om het test script de nodige functionaliteiten te geven. Figuur 2-35 toont een codevoorbeeld van hoe de type definities opgesteld worden. Figuur 2-35: Type definities Template definities De template definities stellen de programmeur in staat om van alle mogelijke testscenario’s de te versturen (input) en de te ontvangen berichten (output) eenduidig vast te leggen. Figuur 2-36 toont twee template definities van KNX frames. In de TTCN-3 taal wordt een input, “Test Data Definition” genoemd. Een output “Test Data Matching Rules”. Figuur 2-36: Template definities 24 Test case In een test case worden alle voorwaarden om te voldoen aan een bepaalde test opgesomd. Wordt aan alle voorwaarden voldaan dan krijgt de test case een globale “pass”, is dit niet zo dan is het verdict “fail”. Figuur 2-37 geeft een test case met voorwaarden weer. Figuur 2-37: Test Case Control definities Hierin wordt het commando gegeven om de test cases die in de control definitie staan uit te voeren. Figuur 2-38 geeft dit weer. Figuur 2-38: Control definities Een TTCN-3 test script is een verzameling van al deze elementen die tot een functioneel geheel leiden. Behalve de control definitie, die altijd als laatste moet staan, heeft geen enkel element een vaste plaats in de code. Bij ON Semiconductor is er wel een afgesproken volgorde in de elementen om de leesbaarheid van de TTCN-3 code naar medewerkers toe te verhogen. Deze afspraken zijn gebundeld in een document “ON Semiconductor TTCN-3 Coding Conventions” en elke werknemer die projecten in TTCN-3 maakt moet zich hieraan houden. 25 2.6.2.3. Parallelle testen Bij het testen van protocollen wordt vaak beroep gedaan op parallelle testen. Parallelle testen houden in dat er een netwerk opgebouwd wordt met 2 of meerdere deelnemers. Door communicatie op te bouwen op dit netwerk kunnen protocoleigenschappen getest worden. Figuur 2-39 toont het schema van de testopstelling die in deze masterproef gebruikt wordt. Figuur 2-39: schema testopstelling Er is te zien dat er een KNX netwerk opgebouwd is uit twee KNXA chips en hun host controller. Door de techniek van parallelle testen te gebruiken kan er met de PC een commando gegeven worden om berichten op het netwerk te plaatsen. Ook wordt alle data die op de KNX bus passeert automatisch doorgestuurd naar de PC. Het is niet de bedoeling om hier de testopstelling te bespreken, dit gebeurt in paragraaf 2.8. . De werking van parallelle testen wordt voorgesteld in Figuur 2-40. Figuur 2-40: Opbouw parallelle testomgeving 26 Op Figuur 2-40 zijn drie grote delen te onderscheiden: de Main Test Component (MTC), de Parallel Test Components (PTC’s) en de Test System Interface (TSI). Deze drie delen dienen softwarematig aangemaakt te worden in de TTCN-3 code en staan los van de werking van het TTCN-3 test systeem met zijn Codecs, SUT en Platform Adapter, enz. . Dit parallel testmodel is een structuur voor het programma die het parallelle testen toelaat. De MTC dirigeert de werking van het test script. Het zendt de juiste commando’s naar de PTC’s, de commando’s die de Device Under Test (DUT) PTC ontvangt zijn anders dan die van de Physical Layer PHY PTC, via de poorten pt_DUT en pt_PHY. Het commando van de MTC wordt door de PTC op poort pt_control ontvangen, naargelang het commando zal er via de poort pt_serial een bepaald KNX frame verstuurd of ontvangen worden. De TSI ontvangt het KNX frame op de poorten pt_tsiDUT of pt_tsiPHY om ze dan door het TTCN-3 test systeem te laten sturen naar de SUT via fysische poorten. Al de poorten van zowel MTC, PTC of TSI moeten softwarematig aan elkaar gekoppeld worden. Figuur 2-41 toont het stuk code dat dit voor zijn rekening neemt. Poorten van twee test componenten, MTC en PTC, worden aan elkaar gelinkt met het sleutelwoord “connect”. Dit stelt beide test componenten in staat om berichten uit te wisselen met elkaar. Poorten van enerzijds een test component en anderzijds een test systeem interface (TSI) worden verbonden met het sleutelwoord “map”. Dit sleutelwoord heeft als gevolg dat ieder bericht dat van een test component komt meteen doorgezonden wordt naar de SUT Adapter via de TSI. Omgekeerd wordt ieder bericht dat de SUT terugstuurt ook meteen doorgezonden naar het overeenkomstige test component. Het grote verschil tussen het “connect” en “map” sleutelwoord is dus het feit dat “connect” wordt gebruikt om componenten aan elkaar te linken en “map” wordt gebruikt op componenten aan de TSI te linken. Figuur 2-41: Softwarematige opbouw parallelle testomgeving 27 2.7. TTCN-3 compiler Een TTCN-3 compiler is een programma, dat een structuur aanbiedt om een TTCN-3 test systeem in op te bouwen en dat zelf al delen van het test systeem heeft geïmplementeerd. De delen die door de ontwikkelaar van de compiler zijn voorzien zijn de user interface en syntaxcontrole van de TTCN-3 taal. Maar ook een omgeving om codecs en adapters in te schrijven. Deze laatste twee zijn in programmeertalen zoals C#, C++, XML, Java, … geschreven. Als alle onderdelen van het test systeem aanwezig zijn kan er gecompileerd worden om zo de test scripts uit te voeren. 2.7.1. OPEN TTCN De optie om een gratis TTCN-3 compiler van het internet aan te passen tot een werkend geheel is onderzocht, met als conclusie dat de maturiteit van gratis TTCN-3 compilers nog te laag ligt. Hierdoor is het vrijwel onmogelijk om deze tools verder te ontwikkelen omdat deze met zekerheid nooit tot een succesvol werkend testsysteem zullen leiden. Dit alles leidde tot de aankoop van de TTCN-3 tool OpenTTCN (Figuur 2-42). Figuur 2-42: Logo OpenTTCN De redenen waarom er voor OpenTTCN gekozen is, is het feit dat OpenTTCN gebaseerd is op het Eclipse platform, aangezien enkele medewerkers bij ON Semiconductor reeds vertrouwd zijn met dit platform was dit een voordeel. De goede support door het bedrijf die OpenTTCN ontwikkeld is een pluspunt. De CEO van het bedrijf is persoonlijk naar de vestiging van ON Semiconductor in Oudenaarde gekomen om training te geven. Ook de snelle opvolging bij problemen, de prijs, het feit dat het op zowel Linux als Windows draait en de invoeging van ideeën van de klant in het product zijn opmerkelijk. Verder zijn er ook de voordelen die samenhangen met de voordelen van TTCN-3 op zich. Deze zijn: het modulair kunnen opbouwen van projecten, de schaalbaarheid waarmee bedoeld wordt dat kleine projecten snel en eenvoudig uitgebreid kunnen worden, het deterministisch karakter wat het opstellen van een tijdlijn vergemakkelijkt en de geschiktheid van de software voor regressie- en stresstesten. Regressietesten zijn het soort testen die onderzoeken of het aanpassen van stukken code of het toevoegen van nieuwe functionaliteiten de oude functionaliteiten niet in de weg staan. Bij stresstesten wordt er gekeken naar wat een bepaald product allemaal te verduren kan krijgen op het gebied van software, door het bijvoorbeeld enorme hoeveelheden data te laten verwerken. 2.7.1.1. Lay-out Figuur 2-43 toont de lay-out van het programma OpenTTCN. De mappenstructuur van de testscripts staat links met daarnaast centraal de ruimte om TTCN-3 code te schrijven. In de grijze balk onderaan komen de resultaten van de uitgevoerde testscripts. In dit opzicht lijkt programmeren in TTCN-3 zeer sterk op het programmeren in andere programmeertalen. Zie Figuur 2-43: Lay-out 28 Figuur 2-43: Lay-out OpenTTCN 2.7.1.2. OpenTTCN bij ON Semiconductor De rol van OpenTTCN en daarmee ook TTCN-3 bij ON Semiconductor is niet beperkt tot enkel het KNXA project. Naast het gebruik van OpenTTCN in het KNXA project wordt het ook gebruikt in een ander project, PLCM genaamd. Ook hier staat de sofware in voor protocol en andere testen van het product. Het belangrijkste in dit verhaal is dat de ontwikkeling van het test systeem voor beide projecten niet onafhankelijk gebeurd is. Van in het begin is er geprogrammeerd met de gedachte om zoveel mogelijk code te kunnen hergebruiken. Een framework werd ontwikkeld waarop alle toekomstige projecten, die getest zullen worden met de TTCN-3 taal, van start kunnen gaan. Zo wordt er veel tijd in de toekomst gespaard en zal het opstarten van nieuwe testprojecten vlotter gaan. Dit is toch wat anders in vergelijking met hoe het vroeger gebeurde. Een testingenieur schreef een testprogramma in een programmeertaal naar eigen keuze en zonder vaste structuur. Hierdoor is het controleren van het programma op de juiste werking ervan zeer tijdrovend en dit omdat, programmeertaal, structuur, wederkerende elementen allemaal niet afgesproken zijn. In de toekomst zal dit dus niet meer het geval zijn aangezien er getracht zal worden om zoveel mogelijk projecten te testen met de TTCN-3 technologie. Dit zal ervoor zorgen dat testprogramma’s transparanter worden en dat fouten sneller en efficiënter opgelost kunnen worden. 29 2.7.2. TTCN-3 voor chip testen In de vorige paragrafen is alles betreffende de TTCN-3 taal en technologie uitvoerig besproken. Hoe deze theorie in de praktijk wordt toegepast wordt in wat volgt kort besproken. Na het opsommen van de voordelen van TTCN-3 in paragraaf 2.6.1. en het voorleggen van de technologie lijkt het vanzelfsprekend om de TTCN-3 technologie te gebruiken voor de testen die bij ON Semiconductor gebeuren. Echter, dit zijn testen op silicium chips en TTCN-3 is niet specifiek ontwikkeld voor dit soort testen. Dit zorgt voor een grotere uitdaging betreffende het correct toepassen van de TTCN-3 technologie. De codecs en adapters die alles geschikt maken voor het testen van silicium chips zijn aangemaakt door de medewerkers bij ON Semiconductor. Het grote probleem bij deze ontwikkelingen was het feit dat, voor testen waar reacties binnen een bepaalde tijd gecontroleerd moeten worden, de nauwkeurigheid van tijdsgebonden testen bij OpenTTCN wat te wensen over laat. In het geval van het KNX protocol moet een acknowledgement frame, 15 tBit (= 15 * 104μs = 1,56ms) ± 50μs na een correct KNX frame verstuurt worden, Figuur 2-15 verduidelijkt dit. De marge van 50 microseconden is zodanig klein dat de resolutie van de klok waarmee OpenTTCN werkt dit niet kan opmeten. Voor tijdsgerelateerde testen geeft dit dus een duidelijk probleem. De oplossing hier ligt bij de aanpassing van de testopstelling zelf die in paragraaf 2.8. besproken wordt. De aanpassing is dat de host controller, die de communicatie tussen PC en KNXA verzorgt en die wel een snelle inwendige klok bezit, iedere byte die op de KNX bus voorkomt van een timestamp voorziet. Deze timestamps kunnen wel eenvoudig geïnterpreteerd worden door de TTCN-3 software waardoor alle tijdsgerelateerde testen correct uigevoerd kunnen worden. Verder zijn er geen onoverkomelijke problemen gevonden, dit zorgt ervoor dat de TTCN-3 technologie perfect toegepast kan worden voor het testen van silicium chips. 30 2.8. Test Opstelling In wat volgt zal de testopstelling alsook de manier van testen uitgelegd worden. Het bouwt verder op wat reeds kort wordt aangehaald in paragraaf 2.6.2.3. . Waar Figuur 2-39 de schematische voorstelling van de testopstelling weergeeft, toont Figuur 2-44 de fysische testopstelling waarop alle ontwikkelde test scripts uitgetest worden. OpenTTCN draait op de PC die op zijn beurt via twee COM poorten verbonden is met de host controller van zowel de Device under Test (DUT) als de PHY. Beide testborden zijn met elkaar verbonden met de KNX bus die gevoed wordt met 30V gelijkstroom. Figuur 2-44: fysische testopstelling Het verschil in benaming van de twee testborden, namelijk DUT en PHY heeft te maken met het verschil in functie die de borden hebben. Eerst zal er in paragrafen 2.8.1. en 2.8.2. meer uitleg gegeven worden over respectievelijk de KNXA chip en de Host Controller. In paragraaf 2.8.3. zal de uitleg van het eigenlijke testen volgen. 31 2.8.1. KNXA chip 2.8.1.1. Inleiding Het KNXA silicium is het product dat ON Semiconductor uiteindelijk zal aanbieden aan de fabrikanten van actuatoren, sensoren en controllers die KNX producten op de markt willen brengen. In de volgende paragrafen zal de opbouw van het KNXA silicium besproken worden zonder dieper in te gaan op de elektronica, daar dit niet relevant is voor deze masterproef. Zoals Figuur 2-45 aantoont zou het volledig uitleggen van het KNXA silicium te uitgebreid en te complex zijn. VFILT C2 from VDD1 C3 CEQ1 CEQ2 C4 VDDD VFILT VSSD C9 VBUS1 Bus coupler SCK UART Impedance Control KNX DLL SPI Receiver D2 Master / Slave C1 CCP KNX bus SDI / RXD Interface Controller CAV RX from/to host controller SDO / TXD CSB TREQ MODE1 Tx / Rx Buffer R1 D1 TXO Test Ctrl Mode Ctrl MODE2 Transmitter TX from VFILT VBUS2 KNX bus VIN VSW1 from VDD1 VDDA L1 R2 VDD1 KNXA DC/DC 1 VDD1M C7 VDD1 C5 VSSA VSS1 S1 WAKE V20V V20V 20 V LDO Wake -up Bandgap POR VSW2 L2 R3 VDD2 C6 VDD2MC XTAL1 Q1 XTAL2 R4 OSC OSC TSD DC/DC 2 UVD C8 VDD2MV VDD2 R5 XSEL VSS2 XCLK SAVEB RESETB TESTOUT Figuur 2-45: Diagram van het KNXA silicium 2.8.1.2. Implementatie KNXA silicium Zoals in de inleiding vermeldt, zal er niet veel uitgewijd worden in deze paragraaf. De implementatie van het KNX protocol en de architectuur van het KNXA silicium zullen kort besproken worden. 2.8.1.2.1. Implementatie KNX protocol Op Figuur 2-46 is weergegeven hoe het KNX protocol, dat opgebouwd is volgens het OSI zeven lagen model, wordt vertaald naar het KNXA silicium. Enkel laag één en het grootste deel van laag twee worden geïmplementeerd. Dit zijn dus de fysische laag en de datalink laag die in paragraaf 2.4. uitgewerkt zijn. 32 7 Application Layer 6 Presentation Layer 5 Session Layer 4 Transport Layer 3 Network Layer Host Controller Logical Link Control 2 Data Link Layer Media Access Control 1 KNXA Physical Layer Figuur 2-46: Implementatie KNX protocol Figuur 2-46 geeft de taakverdeling tussen KNXA silicium en de host controller weer. Het KNXA silicium is verantwoordelijk voor de checksum, de pariteit, de herhaling van een verloren bericht, de timing en de toekenning. De host controller staat in voor de lengte van het bericht en de adressering. De functionaliteiten van het KNXA silicium worden voorzien door de ontwikkelaars bij ON Semiconductor. 2.8.1.2.2. Architectuur KNXA silicium 4.7nF 100uF VFILT 100nF from VDD1 VDDD CEQ2 KNX 1uF CAV Bus Coupler, Impedance Control VBUS1 VSSD VFILT RCOSC XTALOSC PORB KNX Data Link Layer VFILT SPI Master / Slave TX Receiver CCP SCK UART RX 470nF DIG RXB TXB Interface controller CEQ1 RX SDI / RXD SDO / TXD CSB TREQ 27R TXO KNX bus MODE1 Transmitter OTP controller TX RAM Watch Dog Test Ctrl VDDD Mode Ctrl MODE2 VDDD BIST VBUS2 WD RCOSC VFILT ANA VBUS1 Power switch control, Over-current VIN DC1 from VFILT VSW1 1R0 VDD1=3.3V V20V EN VAUX VREF COMP 10uF 1uF Flyback switch control OTP cells V20V VSS1 VAUX Over-voltage VREF VDD1M COMP WAKE Wake-Up Bandgap Over-current BIAS Trimming COMP VDD1 VBG_OK from VDD1 VDDA VDDA VSSA RC oscillator 100nF POR VDDD XTAL oscillator XTAL2 RCOSC Power switch control, Over-current DC2 RCOSC VSW2 EN EN Temp monitor VFILT VBUS1 V20V WD EN Voltage monitor XTAL1 16 MHz PORB 1R0 VDD2=3.3-20V VREF COMP 10uF Flyback switch control VSS2 EN XTALOSC TEMPB Over-voltage ANA signals TESTIN from DIG XSEL VREF VDD2MV COMP VDD2MC Over-current COMP VDD2 XCLK SAVEB RESETB TESTOUT Figuur 2-47: Architectuur KNXA silicium 33 Zoals Figuur 2-47 duidelijk maakt bestaat het KNXA silicium uit vier grote delen. Het KNX deel zorgt voor de zuivere implementatie van het KNX protocol. De digitaal en analoog blok zorgen respectievelijk dat er communicatie kan gebeuren op digitaal en analoog vlak. Het analoge signaal dat van het bussysteem komt wordt verwerkt en doorgegeven aan het digitale deel die dan de communicatie naar de hoger gelegen lagen kan verzorgen. Omgekeerd zal een digitaal bericht komend van de hoger gelegen lagen doorgegeven worden aan het analoge blok om het dan op de KNX bus te plaatsen. DC1 en DC2 zorgen voor de voeding van de actuator, sensor of controller waarin de chip geïnstalleerd wordt. 2.8.2. Host Controller De host controller (Figuur 2-48) is een bord met onder andere een microcontroller waarin een deel van de datalink laag en alle hoger gelegen lagen tot en met laag zeven geïmplementeerd zijn. De Host Controller is ontwikkeld door medewerkers van ON Semiconductor, specifiek om de KNXA chip te kunnen testen. Er zijn dus voorzieningen getroffen om communicatie te hebben met een PC via USB of DB9 connector om zo de communicatie op de KNX bus te kunnen volgen. Figuur 2-48: Host controller bord 2.8.2.1. Communicatie tussen Host Controller en KNXA chip In de volgende paragrafen wordt de communicatie tussen KNXA silicium en host controller weergegeven. 2.8.2.1.1. Diensten van de host controller Uit het oogpunt van de berichtlengte bestaan er twee soorten berichten: Een bericht van één byte waar de enige data die verzonden wordt de control byte is. Een bericht met meerdere bytes. Uit het oogpunt van het doel van het bericht zijn er ook twee soorten berichten: Een intern bericht (tussen KNXA en host controller, zie Figuur 2-49) via SPI of UART dat geen communicatie op het KNX bussysteem veroorzaakt. Een KNX data bericht dat wel voor communicatie zorgt op het bussysteem. 34 Figuur 2-49: Doel van het bericht Figuur 2-50 geeft een overzicht van de berichten die de host controller zendt naar het KNXA silicium. Control field Service name 7 6 5 4 3 2 1 0 Internal commands - device specific 0 0 0 0 0 0 0 1 U_Reset.req 0 0 0 0 0 0 1 0 U_State.req 0 0 0 0 0 1 0 1 U_Busmon.req 0 0 0 1 0 n b a U_Ackn.req 0 0 1 0 a a a a U_IntRegWr.req 0 0 1 1 a a a a U_IntRegRd.req KNX transmit data commands 1 0 0 0 0 0 0 0 U_L_DataStart.req 1 0 i i i i i i U_L_DataCont.req 0 1 l l l l l l U_L_DataEnd.req 1 1 1 0 s s s s U_PollingState.req Remark Extra following data Bytes nba=Nack,Busy,Addressed aaaa=address, 0..15 aaaa=address, 0..15 none none none none Value to be written into internal register Value read from internal register 1 1 1 1 2 2 i=index, 1..62 l=last_index+1, 7..63 s=slot_number, 0..14 Control octet (CTRL) Data octet (CTRLE, SA, DA, AT, NPCI, LG, TPDU) Check octet (FCS) PollAddrHigh + PollAddrLow + PollState 2 2 2 4 Figuur 2-50: overzicht berichten host controller Alle interne commando’s zullen in wat volgt kort besproken worden. U_Reset.req bericht Type: Intern bericht van één byte. Functie: Reset naar initiële status van het toestel (KNXA silicium). Het toestel keert terug naar zijn originele status en maakt zich klaar voor het ontvangen van berichten komende van de KNX bus of host controller. De KNXA antwoordt met een U_Reset.ind bericht. Figuur 2-51 stelt dit grafisch voor. Reset Host ctrl KNXA KNX bus U_Reset.req U_Reset.ind Figuur 2-51: U_Reset.req bericht U_State.req bericht Type: Intern bericht van één byte. Functie: De host controller vraagt de inwendige communicatiestatus van het toestel af. De KNXA antwoordt met een U_State.ind bericht. Figuur 2-52 stelt dit grafisch voor. State Host ctrl KNXA KNX bus U_State.req U_State.ind Figuur 2-52: U_State.req bericht 35 U_Busmon.req bericht Type: Intern bericht van één byte. Functie: Dit commando activeert de bus monitoring mode. Hierbij wordt alle data die ontvangen wordt op de KNX bus zonder er iets mee te doen meteen doorgestuurd naar de host controller. Dit commando kan enkel gestopt worden door een U_Reset.req te sturen. Figuur 2-53 stelt dit grafisch voor. Bus monitor Host ctrl KNXA KNX bus U_Busmon.req Any message Any message Any message Any message U_Reset.req U_Reset.ind Figuur 2-53: U_Busmon.req commando U_Ackn.req bericht Type: Intern bericht van één byte. Functie: Het is een indicatie dat het toestel geadresseerd is. Naargelang de status van het acknowledgement frame (Figuur 2-27) zal het bericht een ACK, NACK of BUSY status hebben. Na het ontvangen van de data verkregen van de KNX bus zal dit bericht op de KNX bus geplaatst worden. Dit wel conform met de timing regels van het KNX protocol. Figuur 2-60 stelt dit grafisch voor. U_IntRegWr.req bericht Type: Intern bericht met meerdere bytes. Functie: Aanvraag tot het schrijven van de daarop volgende data byte in een inwendig register van de KNXA. Figuur 2-54 stelt dit grafisch voor. Internal register write Host ctrl KNXA KNX bus U_IntRegWr.req Data byte Figuur 2-54: U_IntRegWr.req bericht U_IntRegRd.req bericht Type: Intern bericht met meerdere bytes. Functie: Aanvraag tot het lezen van het inwendig register van de KNXA. De data byte moet meteen erna naar de host controller verstuurd worden. Figuur 2-55 stelt dit grafisch voor. Internal register read Host ctrl KNXA KNX bus U_IntRegRd.req Data byte Figuur 2-55: U_IntRegRd.req bericht 36 Het volgende wat besproken wordt zijn de commando’s die het verzenden van data als gevolg hebben. U_L_DataStart.req bericht Type: Twee byte groot commando voor het verzenden van een KNX bericht. Functie: De tweede byte van dit bericht is de control byte van een nieuw KNX dataframe. Na het ontvangen van dit bericht moet de KNXA zich voorbereiden op het ontvangen van nog meer data bytes van de host controller. De KNXA wacht met het bericht te verzenden op de KNX bus tot alle data bytes ontvangen zijn. Figuur 2-56 stelt dit grafisch voor. U_L_DataCont.req bericht Type: Twee byte groot commando voor het verzenden van een KNX bericht. Functie: Iedere tweede byte is nu een karakter in het KNX dataframe. Figuur 2-56 stelt dit grafisch voor. U_L_DataEnd.req bericht Type: Twee byte groot commando voor het verzenden van een KNX bericht. Functie: De tweede byte van dit bericht is de checksum van het te verzenden KNX dataframe. Als de ontvangen checksum overeenkomt met de zelf berekende dan start het verzenden van het dafarame op de KNX bus. Klopt de checksum niet dan krijgt de host controller een foutmelding van de KNXA. Figuur 2-56 stelt dit grafisch voor. Send frame Host ctrl KNXA KNX bus U_L_DataStart.req Data byte U_L_DataCont.req Data byte U_L_DataCont.req Data byte . . U_L_DataEnd.req Data byte Control byte L_Data.ind Data byte Data byte Data byte . . . Data byte . . . Checksum Checksum Immediate acknowledge L_Data.con Figuur 2-56: U_L_DataStart.req commando U_PollingState.req bericht Type: Vier byte groot commando voor het verzenden van een KNX bericht. Functie: De host controller zendt dit bericht na het ontvangen van een aanvraag van de KNXA die op zijn beurt de aanvraag heeft opgestart na het ontvangen van een control byte van een polling frame (Figuur 2-25). Het bericht bestaat uit vier bytes die nodig zijn om correct te kunnen antwoorden op het polling frame. Figuur 2-57 stelt dit grafisch voor. 37 Polling frame - slave Host ctrl KNXA KNX bus Control byte L_Poll_Data.ind Source address U_PollingState.req Source address PollAddrHigh Poll address PollAddrLow Poll address PollState Slot count Checksum Slot 0 Slot 1 Figuur 2-57: U_PollingState.req commando 2.8.2.1.2. Diensten naar de host controller Iedere data byte die ontvangen wordt van de KNX bus wordt transparant doorgestuurd naar de host controller (Figuur 2-58). Een uitzondering hierop is de aknowledgement byte, deze wordt enkel doorgestuurd naar de host controller in bus monitoring mode. Andere nuttige informatie kan ook naar de host controller verstuurd worden maar enkel op aanvraag door gebruik te maken van inwendige controle berichten. Figuur 2-58: Doel van het bericht Figuur 2-59 geeft een overzicht van de berichten die de host controller ontvangt van het KNXA silicium. Control field Service name Remark Extra following data 7 6 5 4 3 2 1 0 DLL (Layer 2) services - the device is transparent 1 0 r 1 p1 p0 0 0 L_Data_Standard.ind r=1 not repeated, 0 repeated L_Data frame 0 0 r 1 p1 p0 0 0 L_Data_Extended.ind p1,p0=priority 1 1 1 1 0 0 0 0 L_Poll_Data.ind Acknowledge services - the device is transparent in bus monitor mode x x 0 0 x x 0 0 L_Ackn.ind Acknowledge frame x 0 0 0 1 0 1 1 L_Data.con x=1 positive, 0 negative confirmation Control services - device specific 0 0 0 0 0 0 1 1 U_Reset.ind sc re te pe tw 1 1 1 U_State.ind sc=slave collision, re=receive error, te=transmit error, pe=protocol error, tw=temperature warning Figuur 2-59: overzicht berichten KNXA Ontvangen data van de KNX bus: L_Data_Standard.ind service of L_Data_Extended.ind service Type: Een byte groot bericht bij ontvangen van data op KNX bus. 38 Bytes n n n 1 1 1 1 Functie: Bij het ontvangen van de control byte van een KNX karakterframe wordt de data transparant door gestuurd naar de host controller. Het verwerken van de data is de taak van de host controller. Figuur 2-60 stelt dit grafisch voor. Receive frame Host ctrl KNXA KNX bus Control byte L_Data.ind Data byte Data byte Data byte . . U_Ackn.req Data byte . . Checksum Data byte . . . . . Checksum Immediate acknowledge Figuur 2-60: L_Data_Standard.ind service of L_Data_Extended.ind commando Controle berichten: U_Reset.ind bericht Type: Intern bericht van één byte. Functie: Het antwoord op een U_Reset.req bericht van de host controller. Figuur 2-51 stelt dit grafisch voor. U_State.ind bericht Type: Intern bericht van één byte. Functie: Het antwoord op een U_Stata.req bericht van de host controller. Figuur 2-52 stelt dit grafisch voor. 39 2.8.3. Testen De testopstelling bestaat uit een KNX netwerk bestaande uit twee deelnemers, de Device Under Test (DUT) en de PHY. Het verschil in de naam van beide deelnemers ligt aan het feit dat de naam hun functie omschrijft in het testnetwerk. De DUT is het bord waarop alle protocoleigenschappen getest moeten worden. De PHY staat voor het feit dat dit bord ieder bericht van de PC afkomstig op de KNX bus zet en omgekeerd dat ieder bericht op de KNX bus rechtstreeks naar de computer wordt doorgestuurd. De datalink laag van het PHY bord wordt als het ware overbrugd. Dit is nodig om de protocollen van de datalink laag op een correcte manier te kunnen testen. Als dit niet het geval zou zijn, en beide borden zijn DUT borden, dan zou een fout in de datalink laag niet ontdekt worden. Aangezien beide DUT borden dezelfde implementatie zouden hebben van de datalink laag zal de fout geneutraliseerd worden. De communicatie over de bus zal vlot en zonder fouten verlopen maar dit betekend niet dat het KNX protocol correct is toegepast. Moest er getest worden op deze manier dan zou het kunnen gebeuren dat de communicatie met een KNX chip van een andere fabrikant niet werkt door het niet ontdekken van de foute implementatie van het protocol. Als heel het netwerk opgebouwd is met KNXA chips van ON semiconductor zou de communicatie wel vlot verlopen, maar het is juist de bedoeling van een open protocol zoals KNX dat alle KNX producten van verschillende producenten probleemloos met elkaar kunnen communiceren. Figuur 2-61 en Figuur 2-62 maken dit nog eens duidelijk met een vereenvoudigd voorbeeld. In Figuur 2-61 is te zien dat van beide busdeelnemers zowel de datalink als de fysische laag geïmplementeerd is. Het getal 10 wordt verstuurd en doorloopt alle lagen van het KNX protocol volgens het OSI model. Stel nu dat de datalink laag fout geïmplementeerd werd en dat het verstuurde getal verdubbeld wordt. Het bericht wordt verstuurd op de bus en bereikt de datalink laag van de andere deelnemer. Aangezien deze op dezelfde wijze geïmplementeerd is als de andere deelnemer zal dezelfde fout omgekeerd gemaakt worden. Dit wordt voorgesteld door het halveren van het verstuurde getal. De fout wordt dus ongedaan gemaakt en kan niet opgespoord worden door het testprogramma. Figuur 2-61: Foute testopstelling Figuur 2-62 toont dat, wanneer de datalink laag verwijdert wordt bij de ontvangende deelnemer, de fout aan het licht gebracht wordt. Ook hier wordt het getal 10 verstuurd, dezelfde fout gebeurt opnieuw in de datalink laag maar nu wordt deze niet meer ongedaan gemaakt door de ontvangende deelnemer. Het testprogramma ontvangt het getal 20 terwijl het een bericht met het getal 10 verwacht. De fout wordt dus succesvol opgespoord. 40 Figuur 2-62: Correcte testopstelling Bij het eigenlijke testen krijgt de Host Controller een commando van de PC met eventueel bijgevoegde data, naargelang het commando zal de eventuele data op de KNX bus gezet worden of zullen er instellingen wijzigen van de Host Controller. Bijlage 2 toont een overzicht van deze commando’s, die zowel naar de Host Controller van de DUT als PHY gestuurd worden, met hun bijhorende functie. Dit document is opgesteld door een medewerker bij ON Semiconductor, daar zij ook de Host Controller ontwikkeld hebben. 2.8.3.1. Uitgewerkt voorbeeld In deze paragraaf wordt een testcase volledig uitgewerkt, dit zou een totaalbeeld moeten geven van hoe de TTCN-3 code, het test systeem, de parallelle testen en de implementatie van de protocoleigenschappen in elkaar zitten. Een testsuite is opgebouwd uit verschillende modules (Figuur 2-63) met elk hun specifieke functionaliteiten. Aan de hand van deze functionaliteiten worden er test cases (Figuur 2-64) opgebouwd. De test case die hier uitgelegd zal worden is: “KNXA_SendTelegram”. Figuur 2-63: Modules 41 Figuur 2-64: Test Cases Figuur 2-65 toont de code van de test case “KNXA_SendTelegram”, het doel van deze test is om de DUT te stimuleren om een bericht op de KNX bus te plaatsen. De PHY moet dan controleren of er geen enkele pariteitbit of stopbit fouten zijn opgetreden. Figuur 2-65: Test case KNXA_SendTelegram Iedere test case begint met het importeren van drie andere modules. De eerste twee namelijk: “KNXA_Synch” en “KNXA_TSI” staan in voor de opbouw van de structuur die nodig is voor het parallelle testen, zie Figuur 2-40. Zij maken alle componenten (MTC, PTC’s en TSI) aan met hun bijhorende poorten voor communicatie. De module “KNXA_SendFunctions” bevat de functies die opgeroepen worden in de test case en die instaan voor het verzenden van de correcte commando’s naar de PTC’s. Als de test case instaat voor het zenden van de commando’s naar de PTC’s betekend dit dat de test case deel uitmaakt van de Main Test Component (MTC). Figuur 2-66 verduidelijkt dit door de “runs on” clausule. Ook is er te zien dat er meegegeven wordt wat de Test System Interface is, want meerde TSI’s zijn mogelijk. Figuur 2-66: Aanmaken Test Case 42 In dit project bevat iedere test case de functies “fInitializeBoards” en “fTerminateBoards”. De code van “fInitializeBoards” is te zien in Figuur 2-41 en staat in voor het initialiseren van de testborden. Hiermee wordt bedoeld dat alle connecties tussen de componenten aangemaakt worden om zo de communicatie ertussen tot stand te brengen. Bij “fTerminateBoards” worden deze verbindingen terug afgebroken. Figuur 2-67: Initialiseren en afbreken communicatie In de test case “KNXA_SendTelegram” zijn drie acties waar te nemen: “f_phyIni”, “f_sendKnxFrame” en “f_receiveBaudat”. De taak van deze drie functies is respectievelijk: het initialiseren van de PHY, het zenden van een correct KNX bericht met de DUT en controleren van de door de PHY ontvangen data. Alle drie deze functies zenden een commando naar de PTC’s, bij ontvangst voert de corresponderende PTC de juiste opdracht uit. Hieronder zal stap voor stap uitgelegd worden wat er gebeurt bij het uitvoeren van “f_phyIni”. Alle stappen die worden doorlopen zijn analoog voor iedere andere functie die opgeroepen wordt vanuit welke test case dan ook. Figuur 2-68 toont de functie f_phyIni, de taak van deze functie is het zenden van een “phyIni” bericht naar de parallelle test component PHY. Ook is te zien dat de MTC een antwoord verwacht van de PTC. Gebeurt dit niet dan wordt de test case automatisch afgesloten. Het bericht “phyIni” moet op zijn beurt ook aangemaakt worden. Op Figuur 2-69 is te zien hoe het “phyIni” bericht gedefinieerd wordt. Figuur 2-68: Function f_phyIni Figuur 2-69: template phyIni 43 Eens het bericht verzonden is zit de taak van de MTC er op. Figuur 2-70 toont de code die in de PTC instaat voor het ontvangen van het “phyIni” bericht en wat er moet gebeuren als het bericht ontvangen wordt. Bij ontvangen van het bericht wordt meteen het OK commando naar de MTC gestuurd om te bevestigen dat het bericht is aangekomen. Figuur 2-70: Ontvangen phyIni Ook wordt de functie “fExchangeFrame” uitgevoerd. Deze functie staat in voor het versturen van KNX frames naar de Test System Interface (TSI) die ze op zijn beurt meteen doorstuurt naar het PHY bord. De functie is zo opgebouwd dat zowel het te versturen bericht als het verwachte antwoord moet meegegeven worden. Figuur 2-71 toont het “phy_init_req” frame die het bericht is die verstuurd moet worden en het “phy_init_answer” frame die het bericht is die ontvangen moet worden. Er is duidelijk te zien dat de frames opgebouwd zijn uit een commando die door de host controller geïnterpreteerd wordt en eventueel data die op de KNX bus verstuurd wordt, zoals in paragraaf 2.8.3. vermeld wordt. Figuur 2-71: templates request en answer frame Op Figuur 2-72 is de code van de functie “fExchangeFrame” te zien. De “runs on” clausule toont hier aan dat deze functie daadwerkelijk op de PTC loopt en niet op de MTC. Het request frame wordt verstuurd naar de TSI en met een alt statement wordt gekeken of het correcte antwoord ontvangen wordt. Is dit het geval dan wordt het verdict op “pass” gezet en kan er met zekerheid gezegd worden dat het commando correct uitgevoerd is. Aangezien het PHY bord met het juiste bericht heeft geantwoord. Als het correcte antwoord niet ontvangen wordt of er wordt geen bericht ontvangen dan zal het verdict op “fail” gezet worden om aan te geven dat er iets is fout gelopen. 44 Figuur 2-72: Frame versturen De opeenvolging van de verstuurde berichten, van MTC naar PTC en van PTC naar TSI maken dat beide PTC’s hun eigen commando’s kunnen verwerken op een correcte manier. Dit maakt alles ook overzichtelijk om te volgen. Iedere testactie vertrekt vanuit de MTC die zo het hele testgebeuren beheert. Het uiteindelijke verdict van de test case is het samengesteld resultaat van alle acties die uitgevoerd moeten worden in die test case. Slechts als alle acties een “pass” opleveren dan kan de test case het verdict “pass” krijgen. Zo is de test betrouwbaar en worden onvoorziene omstandigheden vermeden. 45 2.9. Resultaten De aantoonbare resultaten van de masterproef zijn geboekt op twee vlakken. Ten eerste de zoektocht en de poging om een gratis TTCN-3 tool aan te passen tot software die de TTCN-3 technologie correct toepast. Ten tweede het produceren van werkende test scripts die de implementatie van het KNX protocol op het KNXA silicium testen. 2.9.1. TTCN-3 software Zoals in paragraaf 2.7.1. reeds vermeldt, leidde de initiële zoektocht naar, en aanpassing van een geschikte gratis TTCN-3 tool, tot de conclusie dat deze gratis tools nog niet over voldoende maturiteit beschikken om succesvol toegepast te kunnen worden voor de doelstellingen van deze Masterproef. Met dit gegeven zijn de medewerkers bij ON Semiconductor gestart met de zoektocht naar een geschikte TTCN-3 tool op de software markt. Hieruit volgde de succesvolle toepassing van de TTCN-3 technologie op het testen van chips. Het meer praktische werk zoals het implementeren van de codecs en adapters is uitgevoerd door medewerkers van ON Semiconductor. De reden hiervoor is de hoge complexiteit van het programmeren in C#. Dit past ook niet volledig in de scope van deze masterproef. De succesvolle toepassing van de TTCN-3 technologie hangt echter niet alleen af van het programmeren maar ook van het studiewerk die er in gestopt werd. Deze studie zorgt voor extra “know how” wat de kans op slagen sterk verhoogt. 2.9.2. Test scripts Het echte fysische resultaat dat bijdraagt tot het behalen van het hoofddoel, namelijk een KNX validatie systeem, is het afronden een 26-tal testscripts. Deze testscripts implementeren één voor één de testen conform het “System Verification document”, zie bijlage 1. Figuur 2-73 toont de mappenstructuur met de afgewerkte testcases. Ze behandelen stuk voor stuk testen van de link layer. Figuur 2-73: Afgewerkte testcases 46 2.9.2.1. Conclusies uit de testscripts Bij het uitvoeren van deze testscripts op het KNXA silicium produceert OpenTTCN een eindverdict “pass” of “fail”. Deze testscripts gaan dus effectief na dat deze protocoleigenschappen correct geïmplementeerd zijn in het KNXA silicium. Uit deze testen is gebleken dat er bij vier van de zesentwintig testen iets fout loopt. De fout kan zich voordoen op twee verschillende vlakken. Ofwel zijn de protocoleigenschappen foutief geïmplementeerd in het KNXA silicium ofwel is de test foutief beschreven in het “System Verification document”. De vier testen waar er iets fout loopt zijn: KNXA_Wait53tBit, KNXA_Wait50tBit, KNXA_Wait150tBit en KNXA_IncorrectInfoLength. In wat volgt zal van iedere foutieve test kort besproken worden wat er getest wordt, welke fout er gevonden is en waar de fout verbeterd moet worden. KNXA_Wait53tBit Hier moet er gecontroleerd worden dat een frame met lage prioriteit pas ten vroegste 53 tbit (= 53*104μs ≈ 5,5 ms) na het laatste frame verstuurd wordt. Het eerste onderdeel van Figuur 2-15 toont dit. Deze test krijgt steeds een “fail” aangezien er slechts 50 tbit (= 50*104μs ≈ 5,2 ms) gewacht wordt om een bericht te zenden. Uit deze test blijkt dus dat dit gedeelte van het KNX protocol fout geïmplementeerd is in het KNXA silicium. KNXA_Wait50tBit Hier moet er gecontroleerd worden dat een frame met normale of hoge prioriteit pas ten vroegste 50 tbit (= 50*104μs ≈ 5,2 ms) na het laatste frame verstuurd wordt. Het tweede onderdeel van Figuur 2-15 toont dit. Deze test krijgt een “pass” maar bij het verder controleren van de timestamps van de ontvangen bytes is te zien dat alle berichten hier minimum 53 tbit uit elkaar liggen. Er kan dus geconcludeerd worden dat deze eigenschap van het protocol omgekeerd geïmplementeerd werd met de vorige besproken eigenschap. Ook dit zal aangepast moeten worden in het KNXA silicium. KNXA_Wait150tBit Hier moet er gecontroleerd worden dat wanneer de DUT een frame zend naar de PHY en die antwoord met een BUSY frame dat dan pas ten vroegste 150 tbit (= 150*104μs ≈ 15,6 ms) na het ontvangen van die BUSY het frame herhaald mag worden. De fout hier ligt in het mis opstellen van deze test in het “System Verification document”. In de beschrijving van deze test staat dat er een gewoon niet herhaald frame verstuurd moet worden. Dit is foutief en moet aangepast worden. Er moet namelijk een “repeated frame” verstuurd worden om deze test te laten slagen. Deze aanpassing zal dan ook gemaakt worden. KNXA_IncorrectInfoLength Hier wordt gecontroleerd wat er gebeurt als er een frame verstuurt wordt met 3 bytes data terwijl het info veld voor de lengte aangeeft dat er slecht 1 byte data is. Volgens het “System Verification document” zou dit bericht totaal niet geacknowledged mogen worden door de DUT. In de test antwoord de DUT steeds met een NACK. Dit betekent dus dat de DUT reageert op dit frame wat niet zou mogen volgens het KNX protocol. Het betreft hier dus ook een foute implementatie van het KNX protocol in het KNX silicium. Ook dit wordt aangepast. 47 De hoofdreden voor de aanwezigheid van deze fouten is het feit dat zowel de implementatie van de KNXA chip, het opstellen van het “System Verification Document” en de implementatie van de reeds bestaande testen in een VB/Excel applicatie, door één en dezelfde persoon werden uitgevoerd. Het mis interpreteren van een protocoleigenschap zorgt voor een fout in alle drie de onderdelen wat het opsporen van deze fout nog moeilijker maakt. Alle overige vierentwintig testcases krijgen het verdict “pass” wat betekent dat alles correct conform het KNX protocol verloopt. 2.9.3. Verdere ontwikkelingen in de toekomst Enkele testen uit het “System Verification document” die in bijlage 1 terug te vinden is, zijn nog niet geïmplementeerd. Hiervoor zijn twee redenen. Sommige testen konden niet uitgevoerd worden omdat de functionaliteit die getest moet worden nog niet geïmplementeerd is op het KNXA silicium. De andere reden is dat de testopstelling die op dit moment voor handen is niet volstaat om de testen rond polling frames af te werken. Eerst en vooral zullen de nog niet geïmplementeerde protocoleigenschappen in het KNXA silicium gestopt moeten worden om dan nadien deze testen te kunnen uitvoeren. Het gaat over de testen: Start Of Frame: Receive, IACK Timing: Receive, Repetition Flag: Send en BDUT is a Router. De omschrijving van de eerste twee testen is al geïmplementeerd in de testcases KNXA_StartOfFrame_Receive en KNXA_IackTiming_Receive. Zodra deze functies in het KNXA silicium geïmplementeerd zijn kunnen deze testcases gebruikt worden om deze protocoleigenschappen te testen. Voor de ontwikkeling van de polling frame testen zal een andere testopstelling vereist zijn. Figuur 2-74 toont de opstelling die nodig zal zijn. Voor deze testen zijn er meer netwerkdeelnemers nodig. Een deel hiervan zal een polling Group moeten vormen zodat de DUT polling master of slave kan zijn. Figuur 2-74: Testopstelling polling frame testen 48 Pas nadat alle bovengenoemde testcases correct geïmplementeerd zijn kan er gesproken worden van een volledig KNX validatie systeem. Dit systeem kan dan gebruikt worden om de juiste werking van het KNXA silicium te testen zodat het product gecertificeerd kan worden. Deze certificatie laat toe om het product onder de noemer KNX te verkopen. Een extra zaak die in de toekomst kan gebeuren is het ontwikkelen van actuatoren en sensoren met het KNXA silicium. Door het aanmaken van een demo opstelling waarop een KNX netwerk gesimuleerd wordt waarin de zelf ontwikkelde sensoren en actoren zich bevinden kan ON Semiconductor iets tastbaarder aan de klanten voorstellen. Dit lijkt zeer geschikt voor toekomstige masterproef onderwerpen. 49 3 Algemeen besluit Eerst dient gezegd dat deze masterproef van een zuiver vooropgesteld te halen doel stelselmatig gaandeweg veranderd is naar meer en meer een onderzoeksopdracht. Onderzoek naar hoe de TTCN-3 technologie kan toegepast worden om de testfase in de ontwikkeling van silicium chips te vergemakkelijken, standaardiseren en verkorten bij ON Semiconductor. De verandering van het zwaartepunt van deze masterproef heeft tot gevolg dat niet veel van de vooropgestelde doelen die in september 2010 opgemaakt werden zijn behaald. Wel werd de TTCN-3 technologie met succes toegepast op het testen van silicium chips. Ook is er een zeer degelijke basis gelegd met het aanmaken van de zesentwintig testscripts. Deze basis zal ervoor zorgen dat het KNX validatie systeem binnen afzienbare tijd afgewerkt kan worden. In deze thesis is vooral een literatuurstudie gemaakt van het KNX protocol en de TTCN-3 technologie. De grootste les die getrokken moet worden om in de toekomst de testfase zo correct en vlot mogelijk te laten verlopen is de volgende. Om het risico op fouten te beperken is het noodzakelijk dat het implementeren van de silicium chip, het opstellen van het “System Verification document” en de implementatie van de test software niet door één en dezelfde persoon gedaan worden. Een foute interpretatie van het protocol kan leiden tot een fout in alle drie de onderdelen zonder dat deze ooit ontdekt wordt. Deze fout wordt ook pas redelijk laat in de ontwikkelingsfase ontdekt wat catastrofaal is voor de planning van de ontwikkeling van het product. Door deze drie onderdelen van de testfase door drie verschillende personen te laten uitvoeren is er steeds controle op elkaar. Een team van personen zal ook minder vlug een foute interpretatie van een protocol maken dan één persoon alleen. Opsplitsen van de taken en het controleren van elkaars werk is hier dus de oplossing om erger te voorkomen. Tot slot kan de meerwaarde die mede dankzij deze masterproef gecreëerd is geformuleerd worden als het verkorten van de testfase van nieuwe projecten. Het feit dat een nieuwe technologie, namelijk TTCN-3, zijn intrede gemaakt heeft bij ON Semiconductor, zal ervoor zorgen dat in de toekomst de testfase van vele projecten sterk verkort zal worden. Dit is vooral door het modulaire en schaalbare karakter van TTCN-3 wat ervoor zorgt dat het creëren van nieuwe testen sterk vereenvoudigd wordt. Dit brengt tijdswinst en op de lange termijn financiële voordelen met zich mee. 50 4 Referenties [1] ON Semiconductor bedrijfspresentatie. (Corporate Overview Presentation[1].ppt) [2] Ing. Capoen H. ,Cursus Factory and Process Automation (FPA) [3] The KNX Standard v2.0 03 Volume 3 System Specifications 03_02_02 Communication Medium TP 1 v1.1 AS 03_01_01 Architecture v3.0 03_03_01 Physical Layer General v1.1 AS 03_03_02 Data Link Layer General v1.2 AS 08 Volume 8 System Conformance Testing 8_0_overv_1_1_AS 8_2_2_tp1_1_2_AS [4] KNXA_Product_Specification, document dat bij ON Semicondutor is aangemaakt [5] KNX Association (2009), Certificatie voor producten http://www.knx.org/be-nl/knx-certificatie/van-producten/ (datum van opzoeking: 16/04/11) [6] ETSI’s official TTCN-3 web page (2009), Why use TTCN-3? http://www.ttcn-3.org/Benefits.htm (datum van opzoeking: 19/04/11) [7] Willcock C., Deiss T., Tobies S., Keil S., Engler F., Schulz S., An Introduction to TTCN-3, Great Britain: Wiley 2005 51 Bijlagen I. KNX Testspecificaties Zie bijgevoegd document: System Verification Document II. Overzicht commando’s naar Host Controllers Zie bijgevoegd document: KNXA_Verification_Message_Format 52