DocumentatieServoBerkelPriorProfibus

54
ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 1 van 54 Opdrachtgever: ServoBerkelPrior B.V. Jan Evertsenlaan 4 2224 SV Katwijk ZH Tel: +31(0)71-4030101 Fax:+31(0)71-4032317 e-mail: [email protected] Uitvoering: Haagse Hogeschool MESO Ontwerp: Barry de Graaff Contactpersoon: A.N. Schenkeveld [email protected] Profibus-DP Slave onderzoek In opdracht van ServoBerkelPrior Haagse Hogeschool | Opleiding Elektrotechniek | Micro Elektronica en systeem Ontwerp (MESO) Revisie 0.0 (Revisie 0.0- Under contruction)

Transcript of DocumentatieServoBerkelPriorProfibus

Page 1: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 1 van 54

Opdrachtgever: ServoBerkelPrior B.V. Jan Evertsenlaan 4 2224 SV Katwijk ZH Tel: +31(0)71-4030101 Fax:+31(0)71-4032317 e-mail: [email protected]

Uitvoering: Haagse Hogeschool MESO Ontwerp: Barry de Graaff Contactpersoon: A.N. Schenkeveld [email protected]

Profibus-DP Slave onderzoekIn opdracht van ServoBerkelPrior

Haagse Hogeschool | Opleiding Elektrotechniek | Micro Elektronica en systeem Ontwerp (MESO)

Revisie 0.0(Revisie 0.0- Under contruction)

Page 2: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 2 van 54

Inhoudsopgave Inhoudsopgave 2 Voorwoord 3 1 Aanleiding van de opdracht 4 2 Opdrachtomschrijving 5 3 Ontwikkeling van de hardware 6 3.1 Hardware ARM kant 8 3.1.1 Chip select lijnen 8 3.1.2 Geheugeninterface ARM SPC3 9 3.1.3 X86-Mode SPC3 10 3.1.4 Elektrisch ontwerp geheugenbusinterface 13 3.1.5 Timing analyse geheugenbusinterface 15 3.1.6 Testen van de geheugenbusinterface 20 3.2 Hardware Profibus kant 25 4 Profibus en de SPC3 27 4.1 Profibus Slave State machine 28 4.2 Sequentie Diagram Profibus Slave 32 4.3 Berichtenstructuur en inhoud 32 5 Slave software in de ARM uploaden 33 6 ProfiCaptain 36 7 ProfiTrace en ProfiScript 44 7.1 ProfiScript 45 7.2 ProfiTrace 49 7.3 Opmerking over de gebruikte softwarepakketten 51 8 Driver implementatie en GSD tips 52 Slotwoord 53 Bijlagen 54 Copyright and disclaimer 54

Page 3: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 3 van 54

Voorwoord Voor u ligt het onderzoeksdocument van het door MESO uitgevoerde Profibus-DP Slave onderzoek. Het doel van dit document is de opdrachtgever ServoBerkelPrior BV (voorheen ServoBalans International) inzicht te geven waarom bepaalde keuzen zijn gemaakt en hoe het geleverde labmodel werkt. Dit alles met in het achterhoofd het feit dat ServoBerkelPrior zelf verder gaat met de ontwikkeling van dit labmodel tot het uiteindelijke product dat ServoBerkelPrior op de markt wil brengen. In de eerste twee hoofdstukken wordt nog kort terug gekeken op wat de aanleiding is voor deze opdracht en wat de uiteindelijke opdrachtomschrijving is geworden. Daarna wordt globaal uitgelegd hoe de hardware is ontwikkeld en in welke delen deze is op te splitsen. Deze delen worden in de daarop volgende hoofdstukken dieper uitgelegd. Na het uitvoeren van een aantal basis systeem tests zal het ATEB9200 ontwikkelboard worden aangesloten op de Profibus. En zal u worden uitgelegd hoe u de Slave kunt testen op de Profibus. In de laatste hoofdstukken worden nog tips gegeven voor de verdere implementatie van de Profibus Slave in uw systeem Namens MESO wens ik u veel succes toe bij het verder ontwikkelen richting het eindproduct. Voor vragen of informatie over vervolgprojecten kunt u zich wenden tot Dhr. A.N. Schenkeveld ([email protected]). Barry de Graaff

Page 4: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 4 van 54

1 Aanleiding van de opdracht ServoBerkelPrior is fabrikant van weegapparatuur en heeft een aantal producten in de markt die ze zouden willen moderniseren. De reden van deze modernisatie is:

a. Verkrijgbaarheid componenten b. Commerciële afweging. (klanten vragen naar Profibus)

De modernisatie is van toepassing op de weegindicator en de weegkaart. ServoBerkelPrior wil de componenten op beide producten vervangen door meer gangbare componenten. Tevens wil ServoBerkelPrior de

- Weegindicator voorzien van een Profibus-DP Master/Slave en de - Weegkaart voorzien van een Profibus-DP Slave.

Binnen het huidige IDI project met het gestelde budget en de tijdsduur is het niet mogelijk om een Profibus-DP Master/Slave te leveren.

Page 5: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 5 van 54

2 Opdrachtomschrijving De bedoeling is dat ServoBerkelPrior een volledige nieuwe weegindicator en weegkaart gaat maken. Vanuit deze gedachtegang zal MESO een ontwikkelkit met ontwikkelomgeving leveren die geschikt is voor zowel het ontwikkelen van de weegindicator maar ook voor de weegkaart. MESO zal deze kit voorzien van een Profibus-DP Slave opzet print op basis van de SPC3 ASIC van Siemens. Concreet project resultaat MESO levert

a. ATEB9200 Ontwikkelbord met daarop een Linux besturingssysteem b. EMBEST IDE/ICE voor het ontwikkelen van software op het board

MESO ontwikkelt

c. SPC-3 Profibus-DP Slave opzetprint voor ATEB9200 ontwikkelbord. ServoBerkelPrior kan met dit projectresultaat een nieuwe weegkaart maken. De ATEB9200 en de IDE kunnen opnieuw worden gebruikt voor de ontwikkeling van de weegindicator echter de ontwikkeling van een Profibus-DP Master/Slave zal moeten plaats vinden in een vervolgproject. De kosten van genoemde project resultaten zijn voor ServoBerkelPrior. Waaraan voldoet het projectresultaat? Het ATEB9200 ontwikkelbord samen met de SPC-3 Profibus-DP Slave opzetprint kan communiceren met een Profibus-DP Master (Getracht wordt een test Master te gebruiken van Procentec indien dit niet mogelijk is, dient een Master voor het testen te worden geleverd door ServoBerkelPrior) De werking van het project wordt aangetoond met een loop back of eenvoudige data uitwisseling tussen Master en Slave.

Page 6: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 6 van 54

3 Ontwikkeling van de hardware De ontwikkeling van de hardware bestaat uit 2 delen. Het eerste deel is de geheugenbusinterface tussen de AT91RM9200 ARM chip en de SPC3 Profibus ASIC. Het tweede deel is de interface van de SPC3 met de Profibus zelf. Voor beide delen van de hardware ontwikkeling zijn elektrische afwegingen (zoals spanning, en stroom) en timing (propagation times in ns) belangrijk. De keuze voor een bepaalde chip komt voort uit het feit of deze chip voldoet aan de elektrische en timing eisen die ons labmodel vraagt. Voor de ontwikkeling van de Profibus kant is uitgegaan van application notes in datasheets van Agilent en Siemens. Verder zijn er aanpassingen gedaan om de Profibus physical interface te laten voldoen aan EN50170. In de volgende paragraaf wordt de hardware ontwikkeling van de geheugenbusinterface uitgelegd.

ARM core

AT91RM9200 op Embest ATEB9200

SPC3 profibus ASIC

Opzetprint

Profibus

Physical interface

Deel 1 Deel 2

Page 7: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 7 van 54

Page 8: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 8 van 54

3.1 Hardware ARM kant Om te beginnen is het belangrijk om te realiseren dat de ARM chip volledig configureerbaar is. Dit betekend dat de geheugenbus kan interfacen met 8, 16 of 32 bits databus devices. Echter dat voor iedere busbreedte is er een andere configuratie nodig qua gebruikte portpinnen.

3.1.1 Chip select lijnen Ook het soort geheugen dat het aangesloten device is bepaald welke chip select line moet worden gebruikt. Ook moeten we rekening houden met het feit dat op het ATEB9200 ontwikkelbord van Embest al een aantal van de 8 beschikbare chip select lijnen in gebruik zijn. Deze kunnen dus niet meer worden gebruikt om de SPC3 op aan te sluiten. Een overzicht van de gebruikte chip select lijnen is het eerste dat we doen om de SPC3 te interfacen.

Chip select lijnen op ATEB9200 Chip select Applicatie NCS0 FLASH NCS1 SDRAM NCS2 SPC3 Interface NCS3 SMART MEDIA NCS4 COMPACT FLASH NCS5 COMPACT FLASH (Als I/O lijn) NCS6 COMPACT FLASH (Als I/O lijn) NCS7 SPI

Hieruit blijkt dat alleen NCS2 niet is gebruikt. De N in de afkorting NCS2 betekend dat de chip select lijn actief laag is. Siemens gebruikt hiervoor de letter X. Waardoor de lijn NCS2 overeenkomt met XCS aan de SPC3 kant. In de schema’s die MESO aflevert zal zoveel mogelijk met signaal namen worden gewerkt die overeenkomen met die van de datasheets. De chip select lijnen van de ARM core zijn geoptimaliseerd voor een bepaalde functie. Dit is te zien op pagina 136 van de AT91RM9200 datasheet. Hieruit volgt dat NCS0 altijd aan de FLASH is gekoppeld en NCS1 altijd aan de SDRAM. Uiteindelijk hebben alle chip select lijnen een vooraf gestelde functie behalve NCS2. Dit is de belangrijkste reden om de SPC3 te configureren op NCS2.

Page 9: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 9 van 54

3.1.2 Geheugeninterface ARM SPC3 In deze en de volgende paragraaf zien we de principe aansluiting van de geheugenbus. In paragraaf 3.1.3 gaan we verder in op de elektrische glue logic die nodig is voor het tot stand brengen van de uiteindelijke businterface. Op pagina 139 van de AT91RM9200 datasheet zijn application examples te vinden voor het aansluiten van diverse devices op de geheugenbus. De SPC3 is een 8-bit static device. Hieruit volgt dat we deze interface moeten gebruiken:

Geheugeninterface ARM SPC3 Bron: Atmel AT91RM9200 datasheet pagina 157 (Bijlage 008)

Page 10: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 10 van 54

3.1.3 X86-Mode SPC3 In het datasheet van de SPC3 vinden we diverse modes voor de bus interface. Afgaande de bevindingen in de ARM datasheet betekend het dat we de X86-Mode van de SPC3 moeten gebruiken. Deze staat uitgelegd op pagina 39 van de Siemens SPC3 datasheet. Passen we deze mode toe in de ARM configuratie dan krijgen we deze situatie:

X86-Mode Bron: Siemens SPC3 datasheet pagina 39 (Bijlage 001 met aanpassingen) Doordat de bustiming van de ARM volledig is te configureren. Is het niet nodig een NWAIT/XREADY signaal toe te passen. Dit is zelfs af te raden omdat het gebruik van NWAIT de ARM processor volledig tot stilstand zal brengen. Iets wat niet is gewenst. Het instellen van de X86-Mode gebeurd door het aanbrengen van een 0 (GND) op de XINT/MOT pin van de SPC3 (Niet verwarren met X/INT pin) De gescheiden adres- en databus moet worden ingesteld door het aanbrengen van een 0 (GND) op de MODE pin van de SPC3. De adresbus van de SPC3 is uni-directioneel. Dit wil zeggen dat de data altijd van de ARM naar de SPC3 gaat. De buffers U9 en U10 zijn daarom vast ingesteld om te werken in de datarichting A B. Dit wordt gedaan door de DIR pin op 3,3V te leggen en de G pin op 0V

Page 11: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 11 van 54

De databusbuffer is bi-directioneel omdat de SPC3 zowel data kan zenden als ontvangen. Daarom is de DIR pin van buffer U8 aangesloten op NRD en de /G pin op NCS2. Indien er geen data uitwisseling plaatsvindt van of naar de SPC3 is NCS2 hoog. Hierdoor zal /G hoog zijn waardoor de databus is geïsoleerd van de SPC3. Als er wel data uitwisseling is zal de SPC3 zijn verbonden met de databus. Indien de SPC3 data ontvangt zal NRD laag zijn. Dus ook DIR laag. Hierdoor zal de datarichting A naar B zijn. Zie de tabel. Verdere uitleg waarom we deze buffer gebruiken staat in de volgende paragraaf.

Bron: ST 74LVX3245 datasheet pagina 2 (Bijlage 009)

Page 12: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 12 van 54

De uiteindelijke pin aansluiting is dan als volgt:

SPC3 pin aansluiting Pin Richting Verklaring DB0...7 I/O Bi-directioneel Databus AB0...11 I Uni-directioneel Adresbus XWR I Write signaal XRD I Read signaal XINT O Interrupt XDAT O LED RST I Reset XCS I Chip select CLK I Clock oscillator

Profibus physical interface RXD I Profibus RXD TXD O Profibus TXD RTS O Profibus RTS

Op een vast niveau Pin Niveau Verklaring MODE GND Databus en adresbus gescheiden I/M GND Intel mode DIV GND Divider voor CLKOUT (niet gebruikt)

Niet gebruikt op de SPC3

ALE GND Niet nodig bij een gescheiden adres en databus.

XT0 VCC5 Testpin XT1 VCC5 Testpin

XRDY --- zwevend Ready signaal niet nodig doordat de ARM bus configureerbaar is

CLKO --- zwevend Optionele klokuitgang XCTS GND CTS niet in gebruik

Pinnen van de SPC3 die niet zijn gebruikt of die een instelling hebben op een vast spanningsniveau zijn via een pull-up of pull-down weerstand aangesloten zoals is te vinden in pagina 46 van de SPC3 datasheet. Reset generatie De reset van de SPC3 is aangesloten op hetzelfde reset circuit als de ARM core. Via buffer U10 en NAND gate U6. Als extra optie is er de mogelijkheid om de SPC3 te resetten met de I/O pin SW_RST vanuit de software die draait in de ARM.

Page 13: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 13 van 54

3.1.4 Elektrisch ontwerp geheugenbusinterface We hebben nu het principe ontwerp gezien van de geheugenbusinterface. Er zijn echter nog enkele elektrische en timing afwegingen nodig om de interface werkend te krijgen. LET OP! Tijdens het ontwerp van dit labmodel was er geen SPC3 variant met een voedingsspanning van 3,3V. Echter is er zeer recent de VPC3+C van de fabrikant Profichip op de markt gekomen. De VPC3+C is verkrijgbaar via Procentec en is pin en functiecompatibel met de SPC3 en heeft een voedingsspanning van 3,3V. Het is dus aan te raden deze chip te overwegen voor het ontwerp van volgende prototypes. Natuurlijk kunt u ook de SPC3 gebruiken met level shifters zoals in dit labmodel is gedaan. Doordat we in dit labmodel de SPC3 hebben gebruikt die een voedingsspanning heeft van 5V. Waren er ook level shifters nodig om de SPC3 te kunnen interfacen met de 3,3V I/O spanning van de ARM chip. Hieronder staat een overzicht waarin u kunt zien dat de gebruikte level shifter (74LVX3245) geschikt is voor onze toepassing.

Elektrische compatibiliteit AT91RM9200 74LVX3245 AT91RM9200

Symbol

Value 74LVX3245

Symbol

Value VOH 2,9 VIHA 2,0 VOL 0,4 VILA 0,8 VIH 2 VOHA 2,35 VIL 0,8 VOLA 0,36

VDDIOP 3,3 VCCA 3,3 Referentie: 74LVX3245 datasheet pagina 3 (Bijlage 009) AT91RM9200 datasheet pagina 624 (Bijlage 008)

Elektrische compatibiliteit SPC3 74LVX3245 SPC3

Symbol

Value 74LVX3245

Symbol

Value VOH 4,5 VIHB 2,0 VOL 0,4 VILB 0,8 VIHC 3,5 VOHB 3,86 VIL 1,5 VOLB 0,36 VDD 5 VCCB 5

Referentie: 74LVX3245 datasheet pagina 4 (Bijlage 009) SPC3 datasheet pagina 47, 48 (8.5.2 Bijlage 001)

Toelichting: Het best te lezen vanuit de 74LVX3245 datasheet. Gebruik makende van maximale en minimale waarden.

Page 14: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 14 van 54

Voor de interrupt lijn tussen de SPC3 en de ARM gebruiken we nog een single gate level shifter. Deze moet ook aan de 3,3 naar 5 V I/O eisen voldoen.

Elektrische compatibiliteit AT91RM9200 SN74CB3T1G125 AT91RM9200

Symbol

Value SN74CB3T1G125

Symbol

Value VIH 2 VO 4,5V 3,1 VIL 0,8 VO 0,4V 0,4

VDDIOP 3,3 VCC 3,3 Referentie: SN74CB3T1G125 datasheet pagina 6 (Bijlage 010) AT91RM9200 datasheet pagina 624 (Bijlage 008)

Bron: Texas Instruments SN74CB3T1G125 datasheet pagina 6 (Bijlage 10)

Elektrische compatibiliteit SPC3 SN74CB3T1G125 SPC3

Symbol

Value SN74CB3T1G125

Symbol

Value VOH 4,5 VIH 2 min VOL 0,4 VIL 0,8 max VDD 5 VCC 3,3

Referentie: SN74CB3T1G125 datasheet pagina 6 (Bijlage 010) SPC3 datasheet pagina 48 (8.5.2 Bijlage 001)

Toelichting: VO 4,5V en VO 0,4V bepaald via de overdrachtskarakteristiek.

Page 15: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 15 van 54

3.1.5 Timing analyse geheugenbusinterface Na het elektrische ontwerp is timing van het grootste belang. Er zijn steeds 3 snelheden waarmee rekening moet worden gehouden. Namelijk de snelheid van de

• AT91RM9200 ARM • De SPC3 Profibus chip en • De tussenliggende 74LVX3245 buffers

Het eerste wat gecontroleerd is of de SPC3 theoretisch aan de AT91RM9200 kan worden ge-interfaced. Met theoretisch bedoel ik dat ik ze direct op elkaar aansluit zonder level shifters. Dit kan elektrisch gezien natuurlijk nooit werken. Maar als de timing zonder buffers klopt. Hoeven we daarna alleen nog de theoretische timing aanpassen aan die met buffers. Tijdens het maken van de timing analyse was het niet precies duidelijk wat de clock frequentie op het ARM board zou gaan worden daarom zijn we uitgegaan van een master clock frequency van 60 MHz. Een frequentie die zeer aan de hoge kant ligt. Als de timing kan werken bij 60 MHz zal een langzamere master klok aan de kant van de SPC3 geen problemen opleveren. Verwijzing naar datasheets voor deze analyse In deze analyse wordt verwezen naar de SPC3 en de AT91RM9200 datasheets. De timing diagrammen van deze datasheets zijn opgenomen op de volgende 2 pagina’s. Voorwaarden zoals: 23, 30 en 21 zijn afkomstig van de SPC3 datasheet pagina 52. (Bijlage 001) Voorwaarden zoals SMC30, SMC3 en SMC41 zijn afkomstig uit de AT91RM9200 datasheet vanaf pagina 634. (Bijlage 008)

Page 16: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 16 van 54

Page 17: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 17 van 54

Bron pagina 15: Atmel AT91RM9200 datasheet pagina 639 (Bijlage 008) Bron pagina 16: Siemens SPC3 datasheet pagina 53 (Bijlage 001)

Page 18: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 18 van 54

Read analyse We zien dat eerst CS laag gaat, vervolgens is de adresbus valid is en dan pas wordt RD actief. Eerste voorwaarde is 23: CS moet minimaal 5 nS laag zijn voordat RD omlaag gaat. Aan deze voorwaarde wordt voldaan bij NRD(2) SMC30 + tCHMCK60M = 7 + 8,3 nS = 15,3 nS. De volgende voorwaarde is 20: de adresbus moet valid zijn als RD laag is. (0 nS) Aan deze voorwaarde wordt voldaan bij SMC3 deze tijd zegt ons dat 7,4 nS na CS de ADRESBUS juist is. We hadden gezien dat RD laag mag worden op 15,3 nS. De ADRESBUS is valid na 7,4nS. Dit betekend dat de adresbus -7,9 nS (eerder) al valid is. (-7,9 =< 0 dus OK) De volgende voorwaarde is 21: de databus is valid na max. 105 nS. Dit maakt niet uit, omdat de controller de waarden van de databus pas inklokt na de laatste cycle van PCK. Zie volgende voorwaarde. De volgende voorwaarde is: 24: de minimale lengte van de READ puls is 116nS. Hieraan kunnen we voldoen met NWS (blz. 190) Number of wait states max. 128 x tPCK = 128 x 16,67 = 2133 nS. (Is dus ruim OK) Hierna zal RD weer inactief worden. Hierna zijn de volgende 2 voorwaarden van toepassing: 25 Data hold time nadat RD inactief word min. 3,1 nS. SMC41 -3,4 nS minimaal is dus OK. 22 Address hold time nadat RD inactief word, min. 0 nS SMC37 = tCPMCK + 0,3 = 16,67 + 0,3 = 17 nS is dus OK. De laatste voorwaarde is 27 CS hold time nadat read inactief wordt. Deze moet minimaal 0 ns zijn en deze is SMC4 4,3 nS dus OK. Daarmee concluderen we dat READ mogelijk is. Algemeen 26 Read/write inactive time: 10nS minimaal, tPCK = 16,67 nS. Dus deze parameter zal geen probleem opleveren. Daarbij komt nog dat de bustiming kan worden ingesteld in het SMC_CSR2 register. Hierover leest u meer in paragraaf 3.1.6.

Page 19: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 19 van 54

Write analyse We zien dat eerst CS laag wordt, vervolgens is de adresbus valid en daarna wordt WR actief. Eerste voorwaarde is 23: CS moet minimaal 5 nS laag zijn voordat WR actief wordt. Aan deze voorwaarde SMC10 = 4,8 nS wordt niet voldaan. Dus we voeren een extra waitstate in (NWSETUP=001 blz. 191) hierdoor wordt SMC10 = 1,5 x tPCK = 25 nS (dus OK) De volgende voorwaarde is 20: de adresbus moet valid zijn als WR actief is. (0 nS) Aan deze voorwaarde wordt voldaan. Dit is te zien aan SMC3 deze waarde vertelt ons dat de adresbus al geldig is 0,9 nS voor CS. (tCHMCK60M – SMC3 = 7,4 , tCHMCK60M – 7,4 = 0,9) De volgende voorwaarde is 31: de databus moet minimaal 10 nS voor het inactief worden van WR nog valid zijn. SMC19 is minimaal tCHMCK60M – 0,9 = 7,4 nS. Dit is onvoldoende. Dus moeten er extra waitstates worden ingevoegd. Hieraan kunnen we voldoen met NWS (blz. 190) Number of wait states max. 128 x tPCK = 128 x 16,67 = 2133 nS. (Is dus ruim OK) Daarna 32 Data holdtime nadat WR inactief, deze is 10 nS. Dit is SMC21 = tCPMCK – 1 = 15,67 dus OK. 22 Address holdtime after WR inactive, deze is minimaal 0. Dit is SMC17= 3,3 nS min. Dus OK 27 CS hold time after WR inactive deze is minimaal 0. Hieraan voldoet SMC12 – SMC4 = 0,5 nS => 0 dus OK. Daarmee concluderen we dat write mogelijk is. Buffers De gebruikte 74LVX3245 buffers hebben een gebalanceerde propagation delay. Dit betekend dat een laag naar hoog transitie even snel plaatsvindt als een hoog naar laag transitie. De propagation delay A to B is maximaal 9,5 ns en de propagation delay B to A is maximaal 8,5 ns. Wat erop neerkomt dat er door de buffers een symmetrische vertraging optreedt van rond de 9 ns. Aangezien dit zo is voor alle data en adreslijnen geeft dit geen problemen. Het INT signaal heeft een andere propagation delay. Maar deze lijn staat los van de bus en mag een relatief veel langere propagation delay hebben. (Bron: ST 74LVX3245 datasheet pagina 5 Bijlage 009)

Page 20: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 20 van 54

3.1.6 Testen van de geheugenbusinterface

Voordat we de geheugenbus testen zijn er eerst 2 andere tests die we kunnen doe om het ATEB9200 ontwikkel board te testen. Indien u 5 volt aansluit op het board en een 1:1 seriële kabel tussen UART0 en uw PC dan zou u Linux moeten zien booten. Een tweede test is een standaard “Hello World” programma dat u in de ARM kunt laden via de Embest IDE. Graag verwijs ik u naar de ATEB9200 User's Manual.pdf waarin op bladzijde 45 stap voor stap staat beschreven hoe u dit programma kunt testen. In deze gebruiksaanwijzing staan nog meer nuttige tips over het gebruik van het ATEB. Voordat u dit programma kunt testen dient u eerst de Embest IDE te installeren op uw PC. Volg de instructies op het scherm van uw PC. (Installeer in C:\Embest spaties in mapnamen e.d. weken niet) U dient ook een mail te sturen aan Embest voor een licentie. De licentie werkt per PC. Als u dus een aanvraag heeft gedaan kunt u alleen op die ene PC weken met de IDE/ICE. Een extra installatie moet u aanschaffen bij Embest. Vanaf de Embest website kunt u wel een educational versie van de IDE downloaden. Deze is gratis en kan compileren maar werkt niet in combinatie met de ICE. Het eerste testprogramma dat u heeft geladen heet basic_test. Dit programma heeft MESO aangepast om de geheugeninterface te testen. Het aangepaste programma is opgeslagen op de CD in de map basic_test_interface. U kunt dit op dezelfde manier in de ARM laden als het gewone basic_test programma. (zoals beschreven op bladzijde 45 van de ATEB9200 User's Manual) De bedoeling van het project basic_test_interface is het uitlezen van registers van de ARM processor en het lezen en schrijven van registers van de SPC3 Profibus ASIC. De resultaten van de lees en schrijfbewerkingen worden weergeven via de debug terminal. De debug terminal is de UART van de on board debug unit van de ARM. (Feitelijk een COM poort – terminal interface.) In het project basic_test_interface zijn slechts 2 files veranderd ten opzichte van basic_test. Het bestand main.c en het bestand AT91TM9200.h. De wijzigingen in deze 2 bestanden worden op de volgende pagina’s besproken.

Page 21: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 21 van 54

Voordat u het programma leest is het belangrijk om te begrijpen dat chip select 2 NCS2 waarop wij de SPC3 hebben aangesloten altijd overeenkomt met hetzelfde geheugenbereik van de ARM. Dit geheugenbereik begint zoals hieronder is te zien op 0x30000000 en loop tot en met 0x3FFFFFFF.

Bron: Atmel AT91RM9200 datasheet pagina 32 De inhoud van SMC_CSR2 is als volgt:

Bron: Atmel AT91RM9200 datasheet pagina 190 HEX 4098 = BIN 0100 0000 1000 1001 DBW = Databus width 10 = 8 bit WSEN = Wait State Enable NWS = Number of Wait States

Volledige uitleg van SMC_CSR op pagina 189 en 190 van AT91RM9200 datasheet

(Bijlage 008)

Page 22: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 22 van 54

Hieronder main.c: //*------------------------------------------------------------------ //* ATMEL Microcontroller Software Support - ROUSSET - //*------------------------------------------------------------------ //* ServoBerkelPrior //* Test geheugeninterface #include "AT91RM9200.h" //Declaratie van de Print_dimi functie unsigned char * Print_dimi(AT91_REG8 *temp); // Declaratie van SMC_CSR2, het register dat de bussnelheid insteld //SMC Chip Select Register #define SMC_CSR2 ((AT91_REG *) 0xFFFFFF78 ) // SMC_CSR2 // Declaratie van andere registers in de ARM // Main oscillator register #define BF_CKGR_MOR ((AT91_REG *) 0xFFFFFC20) // System clock status register #define BF_PMC_SCSR ((AT91_REG *) 0xFFFFFC08) enz... enz... enz... //SPC 3 op chip select 2, begint vanaf 0x30000000 #define mytest_CS2 ((AT91_REG8 *) 0x30000034) // AT91F_DBGU_Printk is defined in init.c extern void AT91F_DBGU_Printk(char *); //*------------------------------------------------------------------ //* \fn AT91F_InitFlash //* \brief This function performs low level HW initialization //*------------------------------------------------------------------ void AT91F_InitFlash() { // Deze functie is niet gewijzigd } int Main() { unsigned char SPC3_byte; SPC3_byte = 0xBF; // Testwaarde om weg te schrijven //AT91F_DBGU_Printk stuur een string naar de UART AT91F_DBGU_Printk("\n\n\rATEB9200 Register test\n\r"); AT91F_DBGU_Printk("ServoBerkelPrior BV\n\r"); // Door 4089 te schrijven naar SMC_CSR2 stellen we de databus // breedte in op 8-bit en geven we een aantal wait states. *SMC_CSR2 = 0x00004089; // Print_dimi maakt van een HEX getal een string AT91F_DBGU_Printk("System clock status register="); AT91F_DBGU_Printk(Print_dimi(BF_PMC_SCSR)); AT91F_DBGU_Printk("\n\r"); enz... enz... enz...

Page 23: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 23 van 54

while (1) { (*mytest_CS2)=SPC3_byte; // Lees de testwaarde // Weergeven van de Testwaarde AT91F_DBGU_Printk("\r\nSPC3 : "); AT91F_DBGU_Printk(Print_dimi(mytest_CS2)); } } // The Print_dimi function converts 8 bit hex to ASCII unsigned char * Print_dimi(AT91_REG8 *arg) { signed long i; unsigned char temp=*arg; unsigned char buff; unsigned static char tekst[9]; for(i=7;i>=0;i--){ tekst[i]=(temp&0x0f); if(tekst[i]>9)tekst[i]+=55; else tekst[i]+=48; temp>>=4; } tekst[8]=0; return tekst; } AT91_REG8 is de enige wijziging in de header file AT91RM9200.h: #ifndef AT91RM9200_H #define AT91RM9200_H typedef volatile unsigned int AT91_REG;// Hardware register definition typedef volatile unsigned char AT91_REG8;// Hardware register definition Bovenstaande code is een snipped. Uitvoerbare code dient u te openen vanaf de CD projectnaam basic_test_interface. Het testprogramma zou een uitvoer als deze moeten geven:

ATEB9200 Register test ServoBerkelPrior BV System clock status register=00000001 Peripheral clock status register=00000000 Power management controller status register=00000005 Main oscillator register=00000001 Main clock frequency register=00012326 PMC master clock register=00000001 SPC3 : 000000BF SPC3 : 000000BF SPC3 : 000000BF

enz...enz...enz...

Page 24: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 24 van 54

Page 25: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 25 van 54

3.2 Hardware Profibus kant Zoals gezegd bestaat het tweede dele van de hardware ontwikkeling uit het koppelen van de SPC3 met de Profibus zelf. Dit wordt ook wel de Physical Layer genoemd. In tegenstelling tot de koppeling van de ARM met de SPC3 is de Physical Layer al in vele application notes beschikbaar gesteld. Hetgeen aanzienlijk veel tijd bespaard in dit ontwerp. We hebben de volgende documentatie gebruikt bij het ontwerp van de Physical Layer:

• SPC3 datasheet (user_description_V2.0) pagina 62 (Bijlage 001) • HCPL0721 datasheet pagina 16 (Bijlage 007) • EN50170 pagina 34 (Bijlage 003)

U2, U3, U4, R1 en R2 zijn overgenomen uit de Agilent HCPL0721 datasheet. U5 is overgenomen uit de Siemens SPC3 datasheet en de bustermination R3, R4 en R5 zijn overgenomen uit EN50170 pagina 34. De bus termination weerstanden hoeven maar op één plaats in het Profibus netwerk aanwezig te zijn. Daarom kan men met jumpers JP1 en JP2 kiezen of men de bus termination wil gebruiken of niet. Normaal gesproken bevinden de bus termination weerstanden zich in de connector die wordt aangesloten op X1. Echter hebben we er hier voor gekozen om R3, R4 en R5 op de print te plaatsten. Aangezien dit kostbare Profibus connectors uitspaart. Optische scheiding Het doel van het schema zoals u kunt zien op de vorige pagina is de Profibus optisch te gescheiden van ons labmodel. Dit om eventuele schade aan de ATEB9200 te voorkomen. Door een beperking in het tekenpakket waarmee de printen zijn getekend, zijn de netnamen wat verwarrend.

Toelichting netnamen Physical Layer

2P5/VDD33 2P5 Gescheiden +5V van de Profibus. Heeft netname VDD33 maar is niet verbonden met VDD33

GND/2M 2M Gescheiden 0V van de Profibus. Heeft netname GND maar is niet verbonden met GND

Page 26: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 26 van 54

ATEB9200 Ontwikkelbord met SPC3 PCB

Page 27: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 27 van 54

4 Profibus en de SPC3 De SPC3 is een ‘fully-integrated’ Profibus Slave. Dit betekend dat het gehele Profibus protocol door deze ASIC wordt afgehandeld.

Uiteraard moet er wel bepaalde data kenbaar gemaakt worden aan de ASIC voordat deze een zinnig antwoord kan geven op de bus. Ook moeten de gegevens in de GSD file overeenkomen met de gegevens in de SPC3 driver.

In dit hoofdstuk wordt de toegepaste theorie van de communicatie tussen de SPC3, de Profibus en de ARM core beschreven.

Eerst leg ik aan de hand van een State Diagram uit in welke volgorde de berichten op de Profibus verschijnen. En welke DP-states hierbij horen. Hierdoor is het makkelijker om de structuur van Profibus te begrijpen en kan er gedebugged worden als de Slave niet werkt.

Page 28: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 28 van 54

4.1 Profibus Slave State machine

Legenda / Legend: = Ovaal geef een SPC3 DP-state weer / Denotes an SPC3 DP-State cursief = Geeft een overgangsvoorwaarde aan / italic denotes a state-condition vet = Geeft een messageframe aan van Master->Slave

/ bold denotes Profibus message frame Master->Slave

S->M ACK (Last stat NR)

S->M NACK (Last stat NA, RS etc)

S->M NACK (Last stat NA, RS etc)

S->M NACK (Last stat NA, RS etc)

S->M NACK (Last stat NA, RS etc)

S->M ACK (Last stat DL)

S->M ACK (Last stat NR)

S->M ACK (Last stat NR)

S->M ACK (Last stat NR) & Station not ready = FALSE

M->S GET DIAGNOSTICS message S->M NACK (Last stat NA, RS etc)

M->S SET PARAMETERS message

M->S CHECK REAL CONFIG message

M->S GET DIAGNOSTICS message S->M ACK (Last stat NR) & Station not ready = TRUE

M->S : Rd_Input Rd_Output Commands(Sync,Freeze,..) Slave_DIAG Set_Prm,OK Chk_Cfg,OK Get_Cfg S->M ACK

Power-ON INIT

WAIT PRM

WAIT CFG

WAIT CFG

DATA EXCHANGE

Page 29: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 29 van 54

De State Machine op de vorige bladzijde is van toepassing op alle Slaves, deze uitleg is daarom eerst nog algemeen. In hoofdstuk 7 zal ik de link tussen deze State Machine en de SPC3 en Profiscript duidelijk worden. Power-ON / Init State We sluiten de Slave aan op het netwerk. Vervolgens zal de Master tokenberichten over de bus sturen. (dit is niet te zien in het diagram) Tokenberichten worden door een aanwezige slave ge-acknowledged. (very low level vind ook baudrate detectie en adressering plaats) Hierdoor weet de Master dat er een Slave is die geparameteriseerd moet worden. De eerste stap die de Master dan neemt is het verzenden van een GET DIAGNOSTICS bericht. Als de Slave dit bericht beantwoord met een ACKnowledge dan zal de overgang worden gemaakt naar de WAIT PRM State. Bij een NOT ACK zal de Slave in de Power-ON blijven. (Dus weer baudrate detectie enz.) WAIT PRM State In de WAIT PRM state zal de Master een SET PARAMETER bericht sturen. . Als de Slave dit bericht beantwoord met een ACKnowledge dan zal de overgang worden gemaakt naar de WAIT CFG State. Bij een NOT ACK zal de Slave teruggaan naar de Power-ON / Init State. WAIT CFG State In de WAIT CFG state zal de Master een CHECK (Real) CONFIG bericht sturen. Bij een NOT ACK zal de Slave teruggaan naar de Power-ON / Init State. (Het woord Real heeft betrekking op Profiscript, normaal gesproken spreken we van CHECK CONFIG zonder de toevoeging Real) Als de Slave dit bericht beantwoord met een ACKnowledge dan zal de Master een GET DIAGNOSTICS bericht sturen en in de inhoud van dit bericht controleren of het Station_not_ready bit op FALSE staat. Als dit zo is dan zal de overgang worden gemaakt naar de DATA ECHANGE State. Indien de Slave een ACK geeft (op het GET DIAGNOSTICS bericht), maar Station_not_ready op TRUE heeft staan dan zal de Master GET DIAGNOSTICS berichten blijven sturen tot deze op FALSE staat. (of de WATCHDOG timeout is verstreken)

Page 30: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 30 van 54

DATA EXCHANGE De uiteindelijke data uitwisseling vind hier plaats, zolang de Slave reageert met ACK zal deze in de DATA EXCHANGE mode blijven. Bij een NACK zal de Slave terugkeren naar Power ON / Init. Dit gebeurd ook als er helemaal geen (token)berichten meer worden ontvangen (Watchdog). DATA EXCHANGE in dit project In de DATA EXCHANGE state kunnen er diverse berichten door de Master worden gestuurd. Hieronder bespreek ik de drie belangrijkste. Namelijk Read Outputs req. Read Inputs req. Data exchange req. De Slave kan niet zelf initiatief nemen om iets te verzenden. Data exchange req. In ons project wordt met het Data exchange req. de output aangestuurd. (1 byte voorbeeld) Read Output request Met Read Output request wordt in ons project de output terug gelezen. (welke is geset met Data exchange req.) Read Inputs req. Met Read Inputs req. wordt in ons project de input terug gelezen. (welke kan worden geset via een Terminal programma op UART0) In de DATA EXCHANGE state kunnen ook de standaard berichten voorkomen: SET DIAGNOSTICS SET PARAMETERS CHECK CONFIG Verder zijn er nog meer berichten/commando’s mogelijk in deze state, deze zijn in dit project niet getest en kunnen worden nagelezen in de “SPC3 User Description” datasheet PDF vanaf pagina 63 (Bijlage 001). Ik wil ook graag verwijzen naar de “VPC 3+ Software Description” (Bijlage 002)vanaf pagina 10 waar het iets duidelijker is beschreven. In dit project kunnen er geen wijzigingen worden aangebracht in de Parameterisatie in de DATA EXCHANGE mode. Maar de standaard heeft hiervoor nog wel mogelijkheden. Die hier niet worden besproken. Op de volgende bladzijde staat het sequentie diagram waarvan de State Machine is afgeleid.

Page 31: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 31 van 54

Bron: EN50170 Profibus Specification pagina 783

Page 32: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 32 van 54

4.2 Sequentie Diagram Profibus Slave Het sequentie diagram is afkomstig uit de standaard het laat zien hoe een Slave in het algemeen werkt. Hieraan is niet te zien welke delen door de SPC3 worden afgehandeld en welke delen door de programmeur moeten worden uitgevoerd. Het sequentie diagram laat wel zien wanneer bepaalde gegevens door de ARM core beschikbaar gesteld moeten zijn aan de SPC3. Rood omcirkeld is de Initialisatie van de SPC3 te zien. Merk op dat de Diag Data en de Config Data worden opgeslagen in de FDL laag (Fieldbus Datalink Layer). Deze data wordt dus niet meteen over de bus verzonden!

• Ook is er te zien of een reply data bevat of alleen een ACK. • Kijk ook naar de Station_not_ready bit

4.3 Berichtenstructuur en inhoud In hoofdstuk 7 wordt besproken hoe de Slave kan worden getest met ProfiScript, ProfiTrace en ProfiCaptain. Voor het verdere begrip is het nodig om te begrijpen wat de inhoud is van de berichten SET DIAGNOSTICS, SET PARAMETERS en CHECK CONFIG hiervoor verwijs ik naar de standaard: SET DIAGNOSTICS EN50170 (bijlage 003) pagina 723 t/m 730 SET PARAMETERS EN50170 (bijlage 003) pagina 732 t/m 734 CHECK CONFIG EN50170 (bijlage 003) pagina 734 t/m 739 Ook is het belangrijk te weten hoe de frames van de berichten en de responses e.d. werken. Hiervoor is een aparte bijlage: Overview of profibus headers (Bijlage 004) alle pagina’s

Page 33: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 33 van 54

5 Slave software in de ARM uploaden Voor het testen van de SPC3 moeten we wel eerst de applicatie in de ARM laden. Hiervoor gebruiken we de EMBEST IDE. Om te controleren dat het ATEB9200 ontwikkelbord juist is aangesloten en dat de IDE goed is geïnstalleerd raad ik aan een deel van de “ATEB9200 User’s Manual”te volgen (Bijlage 005) ATEB9200 User’s Manual (Bijlage 005) bladzijde 21 t/m 23 - Aansluiten bladzijde 45 t/m 50 tot 7.3 - Testprogramma in de RAM laden (niet de FLASH overschrijven!) De EMBEST-ICE heeft af en toe kuren, op bladzijde 49 zien we de disassembly van het testprogramma. Als de IDE een error geeft als “Downloading failed” of “Run target failed” dan is het verstandig om de baudrate een hoger of lager te zetten. En dan gaat het wel werken. Project - > Settings -> Remote -> High Speed of Full Speed kiezen.

Het helpt ook om niet te snel na het booten van het systeem de ICE te starten, en te downloaden. Open nu de source code van dit project “ATEB_Profibus FINAL.zip” en unzip deze in “C:\EmbestIDE\Examples\ateb9200” (dit overschrijft het standaard “ATEB_Profibus” test programma)

Page 34: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 34 van 54

Wat doet het testprogramma?

• In de terminal kunt u een ASCII teken intypen, bijvoorbeeld A, B, C enz... zolang het maar 1 karakter is. Hiermee simuleert u een digitale input van de Slave. Het door u verzonden karakter kan worden terug gelezen met het commando “Read inputs” in ProfiScript. (In DATA EXCHANGE mode)

• In ProfiScript kunt u een digitale output simuleren door maximaal 2 bytes hexadecimale te verzenden met “Send User Data”. Deze data kunt u weer teruglezen in de terminal.

• U kunt de outputs teruglezen met “Read outputs” in ProfiScript. Dit programma kan gebuild worden en gedownload op exact dezelfde wijze als u heeft kunnen nalezen in de ATEB User’s Manual. Om het programma te builden en te uploaden: EBEST IDE: Build -> Rebuild all Debug-> Remote connect Debug-> Download Debug-> Go!

Page 35: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 35 van 54

Vervolgens kunt u in het Terminal programma het volgende zien : 115200 Baud, Flow none, Databits 8, Stopbits 1. (GingerTerminal kan worden gedownload van http://www.barrydegraaff.tk/) Een hele rij met nullen omdat er nog niets is ontvangen via de Profibus. In het volgende hoofdstuk leggen we uit hoe we kunnen communiceren via deze Terminal in combinatie met ProfiCaptain.

Page 36: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 36 van 54

6 ProfiCaptain Voor het testen van een werkende Slave gebruiken we het softwarepakket ProfiCaptain. Met de bijbehorende hardware ProfiCore is ProfiCaptain de meest eenvoudige manier om een Profibus Master op een PC te installeren. ProfiCaptain en ProfiCore zijn beschikbaar via Procentec http://www.procentec.com Start Proficaptain:

We zien een leeg scherm, eerst gaan we de GSD file van het ATEB ontwikkelbord in de GSD Catalog laden. Settings -> Add/Copy GSD to Catalog Blader naar de CD die is bijgeleverd bij deze documentatie en kies vervolgens MESO0BEF.gsd. Indien u dit bestand niet kunt vinden is het ook te vinden in de source code van dit project “ATEB_Profibus FINAL.zip. U dient dan ook het bestand ATEB9200.bmp uit te pakken. Het programma vraag om de Catalog opnieuw te genereren, klik JA. Dit kan enkele minuten duren als u veel GSD’s heeft geïnstalleerd.

Page 37: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 37 van 54

Vervolgens kunt u het ATEB9200 ontwikkelbord in het netwerk installeren, dit doet u door de GSD uit de Catalog naar het netwerk te slapen:

(ATEB9200 bevind zich onder General->ATEB9200)

Page 38: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 38 van 54

Dubbelklik vervolgens op het ATEB9200 icon:

En stel het volgende in: Address = 10 Enable = True WatchDog Enabled = False Klik op Setup Modules & Parameters

Page 39: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 39 van 54

Klik op Add Module to Selection, en klik op OK. En vervolgens weer op OK. Terug in het beginscherm klik op Init ProfiCore. Klik vervolgens op Setup Master en daarna op Set/autodetect Bus Parameters. (zie volgende pagina) Use standard busparameters vinkje uitzetten en Baud op 187,5 kbps zetten. Klik vervolgens op OK en dan in het venster “Master system configuration” op Operate klikken.

Page 40: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 40 van 54

Page 41: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 41 van 54

Als het goed is staat er nu een groene stip bij het ATEB9200 icon, dit geeft aan dat de Slave online is.

Is dit niet het geval? Upload dan de Software opnieuw. Zie hoofdstuk 5 vanaf ”Wat doet het testprogramma?” En voer vervolgens de stappen op de vorige bladzijde opnieuw uit. Door de Master van Operate -> Offline en van Offline weer naar Operate te zetten.

Als dit werkt dan gaat de rest van de I/O test die we nu gaan doen ook goed, mocht het niet werken dan kunt u het beste verder gaan met het volgende hoofstuk waarin we ProfiScript bespreken. Via ProfiScript is meer diagnostische informatie te verkrijgen.

Page 42: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 42 van 54

Dubbelklik weer op het ATEB9200 icon:

En klik op het Inputs & Outputs Tab Vervolgens gaat u naar het terminal programma en stuurt u een karakter. Bijvoorbeeld de letter A. Als het goed is verspringt nu bij inputs de 00 naar 41. Als u nu B verstuurd zal er 42 komen te staan (ASCII). Indien u GingerTerminal gebruik zal deze geen CR LF zenden als u op Enter drukt. Gebruikt u een ander programma en blijft er 00 staan? Dan stuurt u mogelijk een CR of LF teken (13 of 10) deze worden genegeerd. Let op we hebben het over de 00 in ProfiCaptain Inputs en niet over de 00000000 in de Terminal. Druk op OK om dit venster te sluiten.

Page 43: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 43 van 54

Klik vervolgens op Watch/Modify I/O in het beginscherm. Druk vervolgens op Add Watch. Vul nu onder Modify to een waarde in bijvoorbeeld 09. Dit is vervolgens te zien in het Terminal scherm:

Hiermee concluderen we dat de Profibus-DP Slave werkt en aan de in Hoofdstuk 2 gestelde eisen voldoet. (tevens de contractueel vastgelegd project resultaten.)

Page 44: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 44 van 54

7 ProfiTrace en ProfiScript In het vorige hoofdstuk hebben we gewerkt met ProfiCaptain. Dit is een goed pakket om een werkende Slave te testen op installateursniveau. Het kan echter zijn dat tijdens de ontwikkeling van de Slave deze niet werkt zoals dit zou moeten. ProfiCaptain verstuurd (achter de schermen) de berichten GET DIAGNOSTICS en SET PARAMETERS enz. die zijn besproken in hoofdstuk 4. Als er ergens een fout optreed in een van deze berichten, dan is het met ProfiCaptain niet meer te achterhalen. In ProfiScript kan de programmeur zelf GET DIAGNOSTICS berichten enz. sturen om heel Low Level te kijken wat er gebeurd. Verder is er nog ProfiTrace, dit is een netwerksniffer/ Analyzer voor ProfiBus deze kan worden gebruikt om te kijken wat er op het gehele netwerk gebeurd. In het geval dat het netwerk niet naar behoren werkt. Ook de conditie van het netwerk kan worden bekeken. (Overhead beperking) ProfiTrace kàn ook met behulp van een Trigger worden gebruikt voor 1 bepaalde slave te debuggen. Maar als u beschikt over Profiscript dan is dit niet noodzakelijk. Voor de ontwikkeling van Profibus Slaves is ProfiScript+ProfiCore de belangrijkste tool.

Page 45: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 45 van 54

7.1 ProfiScript In deze paragraaf zal ik kort toelichten hoe ProfiScript werkt. Upload de software naar de ARM zoals in de vorige hoofdstukken besproken. Start ProfiScript en ga naar het tabblad DP Params. Vervolgens File-> Open GSD file. Kies wederom de GSD: MESO0BEF.gsd en voeg de modules toe op dezelfde wijze als besproken op bladzijde 39. Voer vervolgens het adres 10 DECIMAAL in welke standaard is ingesteld in onze Slave.

Ga nu naar het tabblad Test, en druk op Init Driver. (Dit is hetzelfde als Init ProfiCore.)

Page 46: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 46 van 54

Als het goed is is de Slave nu te zien in de Live List op het Tabblad Proficore Master Settings:

Stel anders nog even de baudrate in.

Page 47: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 47 van 54

Ga nu naar het tabblad Send FDL Frames. Dit is het belangrijkste tabblad voor het debuggen van een Profibus Slave, hiermee kunnen alle berichten worden verzonden om de Slave de parameteriseren. In het voorbeeld hieronder is in rood vet aangegeven wat de programmeur moet aanklikken. De ProfiScript Resultaten staat weergegeven in courier lettertype. Zet een vinkje bij Show details, als u wilt dat ProfiScript de responses van de SPC3 gaat interpreteren. (Dan hoeft u niet zelf byte voor byte te analyseren)

Page 48: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 48 van 54

Klik op de knop Get Diagnostics Get Diag. req. Get Diagnostics req. >3E 3C 0A 00 Get Diag. res. Get Diagnostics res. [Station_Not_Ready] [Prm_Req.] [MasterAddr.:255] [IdentNr:0BEF] <3E 3C 0A 06 02 05 00 FF 0B EF LSTAT: DL -------------------------------------------------- Klik op de knop Set Real Parameters Set Param. req. Set Parameter req. [Lock] [WD_Off] [minTsdr:11] [IdentNr:0BEF] [GroupIdent:None] >3E 3D 0A 07 80 0A 0A 0B 0B EF 00 Set Param. res. Set Parameter res. <3E 3D 0A 00 LSTAT: NR -------------------------------------------------- Klik op de knop Check Real Config Check Conf. req. Check Config req. [Inputs:1] [Outputs:1] >3E 3E 0A 03 30 00 00 Check Conf. res. Check Config res. <3E 3E 0A 00 LSTAT: NR -------------------------------------------------- Klik op de knop Get Diagnostics Get Diag. req. Get Diagnostics req. >3E 3C 0A 00 Get Diag. res. Get Diagnostics res. [MasterAddr.:0] [IdentNr:0BEF] <3E 3C 0A 06 00 04 00 00 0B EF LSTAT: DL -------------------------------------------------- Vul 12 in bij Data Exchange en druk op Send User Data Data exchange req. Data Exchange req. [Byte1..ByteX contains the new output data] >FF FF 0A 01 12 Data exchange res. Data Exchange res. [Byte1..ByteX contains the input data] <FF FF 0A 01 00 LSTAT: DL -------------------------------------------------- Als alles goed is gegaan ziet u die 12 nu ook in het terminal programma verschijnen. U kunt inputs en outputs lezen met de knoppen Read Inputs en Read Outputs in Data Exchange. De berichtenstructuur komt overeen met wat is besproken in Hoofdstuk 4 zie: SET DIAGNOSTICS EN50170 (bijlage 003) pagina 723 t/m 730 SET PARAMETERS EN50170 (bijlage 003) pagina 732 t/m 734 CHECK CONFIG EN50170 (bijlage 003) pagina 734 t/m 739

Page 49: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 49 van 54

7.2 ProfiTrace Start ProfiTrace de netwerksniffer van Profibus, zorg ervoor dat ProfiScript al draait. (Let op voor deze test heeft u 2 ProfiCores nodig) U kunt ook een andere master. Bijvoorbeeld een PLC gebruiken. Zolang het netwerk maar al in de lucht is. Druk op Init ProfiCore, ProfiTrace zal nu zelf de Baudrate detectie doen. Stel we willen alle protocol berichten van onze Slave zien, druk dan op Setup Record Trigger.

Instellen zoals op het plaatje. En druk op Setup Trigger:

Page 50: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 50 van 54

Druk op OK en weer op OK. En klik vervolgens op Start Message recording. Ga naar het tabblad messages. Stuur nu voor de test een Get Diag vanuit ProfiScript.

Page 51: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 51 van 54

Op de vorige bladzijde ziet u hoe dit eruit ziet in ProfiTrace. Kijk ook naar het linker frame Info Panel waar informatie staat op de responses van de slave. Merk ook de rokenberichten op die verzonden zijn door de master. Vlak voor en na de trigger. Te zien zijn allerlei termen zoals SD4, SD1, Sync en SRD_HIGH deze staan goed uitgelegd in de ProfiTrace help. Maar voor het gemak is hiervan ook een PDF beschikbaar gemaakt. Overview of profibus headers (Bijlage 004) alle pagina’s

7.3 Opmerking over de gebruikte softwarepakketten ProfiCore, ProfiScript, ProfiCaptain en Profitrace maken gebruiken van Internet om de licensie te controleren. Maar de Cores kunnen wel op diverse PC worden gebruikt. De EMBEST IDE maakt gebruik van HARDWARE PROTECTION dit pakket kan nog zonder extra kosten op 1 PC worden geïnstalleerd bij ServoBerkelPrior. Licensie kan via Email worden aangevraagd. Volg hiervoor de instructies tijdens de installatie. Nog een keer op een andere PC installeren kost 75 EUR per keer.

Page 52: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 52 van 54

8 Driver implementatie en GSD tips De sourcecode die u heeft gebruikt in de vorige hoofdstukken (ATEB_Profibus FINAL.zip) is gebaseerd op het testprogramma “basic_test” dat is aangeleverd door Embest. (hierin zit de low-level ARM init enz.). De SPC3 driver die we gebruiken voor de communicatie tussen ARM en SPC3 is geschreven door Procentec. Er zijn weinig wijzigingen gedaan aan SPC3.C en SPC3.H. In SPC3.H is typedef int vervangen door typedef short int typedef unsigned int vervangen door typedef short unsigned int Dit omdat de driver is geschreven voor een 16 bit processor en de ARM core 32 bits is. #define INTEL_MODE is defined Verder zijn in de sourcecode veel remarks geplaatst om de werking duidelijk te maken. Het testprogramma APP1.C is geport naar main.c. En verder is de periodieke interrupt SPC3_GetIntUserTimerClock uitgeschakeld en is de interuppt level voor de SPC ingesteld op LOW ACTIVE. GSD Alles over de implementatie van GSD files is te vinden in de GSD File Specification (Bijlage 006) Belangrijk om te weten dat 0 niet wordt meegerekend bij de LENGTH parameters. En dat er een minimale lengte is voor alle berichten. Deze is te vinden in de EN50170. SET DIAGNOSTICS EN50170 (bijlage 003) pagina 723 t/m 730 SET PARAMETERS EN50170 (bijlage 003) pagina 732 t/m 734 CHECK CONFIG EN50170 (bijlage 003) pagina 734 t/m 739 Lengte van het SET PARAMETER bericht is PARAMETER_LENGTH + User_Prm_Data_Len aangezien we geen user parameters hebben gedefinieerd, wordt deze default op 0 gezet. (zie de GSD file spec) GSD main.c Protocol bericht Waarde Max_Diag_Data_Len DIAGNOSTICS_LENGTH GET DIAGNOSTICS 6 User_Prm_Data_Len niet aanwezig SET PARAMETERS 0 niet aanwezig PARAMETER_LENGTH SET PARAMETERS 7 Module = CONFIGURATION_LENGTH GET CONFIG 3 Deze tabel kunt u raadplegen voor verdere implementatie. Ook de GSD file is voorzien van remarks.

Page 53: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 53 van 54

Slotwoord Met name door de tests uit hoofdstuk 6 is gebleken dat er communicatie is tussen de ARM core en de Profibus. Daardoor voldoet dit project aan de gestelde projecteisen. In de bijlage is nog de originele projectovereenkomst te vinden om dit te controleren. Dit document is niet een stap-voor-stap handleiding, maar het is bedoeld om het ontwikkeltraject dat is afgelegd binnen MESO te verduidelijken. En om het mogelijk te maken verder te ontwikkelen op het ATEB9200 ontwikkelboard. Ik wens u veel succes bij de verdere ontwikkeling van de Profibus Slave. En laat u niet ontmoedigen als dingen niet meteen werken. Barry de Graaff

Page 54: DocumentatieServoBerkelPriorProfibus

ServoBerkelPrior Profibus-DP Slave onderzoek Pagina 54 van 54

Bijlagen 001 _spc3_user_description_V2.0.pdf - SPC3 Datasheet 002 _VPC3-C-SWM500.pdf - VPC3 Datasheet 003 PROFIBUS Specifications - EN50170 - 0.032_v10.pdf 004 Overview of profibus headers.pdf 005 ATEB9200 User's Manual.pdf - Gebruikershandleiding ATEB 006 GSD_Spec_2122_v502_May04 (restored).pdf 007 hcpl0721.pdf - OptoCoupler 008 at91rm9200 datasheet 2.pdf - Datasheet ARM Core Rev. G 009 74LVX3245 profibus buffer.pdf - Level Shifter 010 sn74cb3t1g125.pdf - Single Gate Level Shifter 040 Isolated Profibus Interface ARM-SPC3 Final 0.5.pdf - Elektrisch ontwerp 041 ATEB9200Sch.pdf - Elektrisch schema ATEB9200 Board 042 PCB ontwerp.pdf - PCB Ontwerp 043 Sourcecode.pdf - Final versie Source Code 044 MESO0BEF.GSD.pdf - Final versie GSD file

Copyright and disclaimer Copyright The contents of this document are subject to national and international copyright laws and are the property of Barry de Graaff © 2007 unless another “source” is specified. This document may not be reproduced, copied, stored, manipulated in any way, or used whole or in part of a derivative work, without the written permission of Barry de Graaff (www.barrydegraaff.tk). Disclaimer of warranty and liability The information in this document is provided "as is" and "where is" without any express or implied warranty of any kind, including, without limitation, warranties of merchantability, title, no infringement of intellectual property rights, or fitness for any particular purpose. You agree that in no event will Barry de Graaff be liable for any damages whatsoever (including, without limitation, damages for loss of profits or business interruption and/or consequential, punitive, exemplary, special or incidental damages) arising out of the use of our inability to use the information, even if Barry de Graaff has been advised of the possibility of such damages. Some jurisdictions prohibit the exclusion or limitation of liability for consequential or incidental damages. As a result, the above limitations may not apply to you. Barry de Graaff is not liable for any damage caused by materials including software that are supplied with this document. This includes damage caused by viruses and/or malware from any kind. Use of materials including software and files supplied with this document is at your own risk. Barry de Graaff does not warrant the accuracy or completeness of the information, text, graphics, links or other items available in this document. Barry de Graaff may make changes to such information, text, graphics, links or other items at any time without notice. Barry de Graaff makes no commitment to update such information, text, graphics, links or other items. Trademarks Terms and product names may be trademarks of others.