Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de...

176
Comunicació PROFIBUS Titulació: Enginyeria Tècnica Industrial esp. Electrònica Industrial AUTORS: Xavier Pallàs Balsells, Sergi Aluja Miralles DIRECTOR: Ernest Gil Dolcet

Transcript of Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de...

Page 1: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Comunicació PROFIBUS

Titulació: Enginyeria Tècnica Industrial esp. Electrònica Industrial

AUTORS:Xavier Pallàs Balsells, Sergi Aluja Miralles

DIRECTOR:Ernest Gil Dolcet

Page 2: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Índex Xavier Pallàs i Sergi Aluja

ÍNDEX

1.- Descripció General

1.1.- Antecedents............................................................................................1

1.2.- Objectiu..................................................................................................1

1.3.- Mètode de Treball..................................................................................1

2.- Descripció del Stàndard PROFIBUS (EN 50170)

2.1.- Comunicacions Industrials....................................................................3

2.2.- Tecnologia PROFIBUS.........................................................................4

2.2.1.- Perfils de Comunicació..............................................................5

2.2.2.- Perfils Físics...............................................................................5

2.2.3.- Perfils d’Aplicació......................................................................5

2.3.- Característiques Bàsiques.......................................................................6

2.3.1.- Arquitectura del Protocol............................................................6

2.3.2.- Interfície RS-485........................................................................7

2.3.3.- MAC...........................................................................................8

2.4.- Perfil de Comunicació DP.....................................................................11

2.4.1.- Funcions Bàsiques.....................................................................11

Característiques Bàsiques..........................................................12

Configuració del Sistema i Tipus d’Aparells.............................14

Comportament del Sistema........................................................14

Transmissió Cíclica de Dades entre el DPM1 i els Esclaus.......15

Modes de Sincronisme i Congelació..........................................16

Mecanismes de Protecció...........................................................16

2.4.2.- Funcions DP Extenses................................................................17

Adressament mitjançant Slot i Índex.........................................17

Transmissió Acíclica entre el DPM1 i els Esclaus....................18

Transmissió Acíclica entre un DPM2 i els Esclaus...................19

2.5- Perfils d’Aplicació.................................................................................19

2.5.1.- PA (Procés d’Automatització)...................................................20

Comunicació..............................................................................21

Aplicació....................................................................................21

Blocs de Funcions......................................................................22

Page 3: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Índex Xavier Pallàs i Sergi Aluja

2.5.2.- Aplicacions d’Emergència........................................................22

2.5.3.- Automatització Constructiva.....................................................23

2.5.4.- Perfils d’Aplicació per Aparells Especials...............................23

2.6.- Utilització d’Aparells............................................................................23

2.6.1.- Fitxers GSD...............................................................................24

2.6.2.- Número d’Identitat.....................................................................24

2.6.3.- Descripció Electrònica de l’Aparell...........................................24

2.6.4.- Concepte FDT ...........................................................................24

3.- Elements per la Comunicació

3.1.- Hardware...............................................................................................25

3.1.1.- IM-180

Descripció General....................................................................25

Diagrama de Blocs....................................................................26

Descripció Funcional.................................................................26

Funcionament............................................................................27

3.1.2.- IM-181

Descripció General....................................................................27

Configurar l’Adreçament dins del PC.......................................27

Àrea de Memòria per la DPRAM..................................27

Àrea d’Entrada i Sortida................................................27

Canal d’Interrupció........................................................27

Distribució de Memòria.............................................................28

Registres....................................................................................29

Pins cap a l’Interfície PROFIBUS.............................................29

3.1.3.- IM-183.......................................................................................29

Característiques..........................................................................29

Diagrama de Blocs.....................................................................30

Descripció Funcional.................................................................30

Interfícies Software....................................................................31

Distribució de Memòria..................................................31

Assignació dels Ports del 80C32....................................32

Concepte EMC...........................................................................33

3.2.- Software.................................................................................................34

Page 4: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Índex Xavier Pallàs i Sergi Aluja

3.2.1.- COM PROFIBUS.......................................................................34

3.2.1.1.- Descripció....................................................................34

3.2.1.2.- Funcions.......................................................................34

3.2.1.3.- IM 180 Master.............................................................34

3.2.1.4.- IM 180 Slave...............................................................35

3.2.1.5.- IM 180 Master/Slave...................................................36

3.2.1.6.- Esclaus Compartits......................................................36

3.2.1.7.- Fitxer de Paràmetres....................................................36

3.2.2.- DPMT.........................................................................................41

Descripció del programa............................................................42

Submenú View...........................................................................42

Submenú IM 180 Commands....................................................44

Submenú IM 180 New Commands............................................45

Submenú IM 181 Commands.....................................................46

4.- Desenvolupament de la Placa Prototipus

4.1.- Hardware.................................................................................................47

4.1.1.- SPC3...........................................................................................47

Distribució de Memòria del SPC3..............................................47

Registres per correcte funcionament...........................................47

Registre d’estat............................................................................47

Controlador d’interrupcions........................................................48

Temporitzador Watchdog............................................................48

Interfície PROFIBUS-DP............................................................48

Descripció dels Serveis DP..............................................50

Detall de la memòria del SPC3....................................................61

Paràmetres de processament.............................................63

Paràmetres organitzatius (RAM)......................................65

4.1.2.- Placa prototipus............................................................................67

Esquema Elèctric..........................................................................67

Components..................................................................................68

Layout...........................................................................................69

4.2.- Software....................................................... ............................................71

4.2.1.- Diagrames.....................................................................................71

Page 5: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Índex Xavier Pallàs i Sergi Aluja

Diagrama d’Estat del DP................................................................71

Diagrama General del Software.....................................................72

Diagrama Funcional del Codi.........................................................74

Diagrama Concret del Codi............................................................77

4.2.2.- Codi.................................................................................................82

5.- Entorn de Desenvolupament del Ensamblador

5.1.- Introducció..................................................................................................116

5.2.- Funcionament Bàsic del Emulador.............................................................116

5.3.- Integració del Emulador a la Placa Prototipus............................................117

6.- Conclusions.................................................................................................120

7.- Annex..........................................................................................................121

7.1.- Firmware de la Targeta...............................................................................121

7.1.1.- Diagrama General...........................................................................121

7.1.2.- Diagrama de les Interrupcions.........................................................122

7.1.3.- Codi Font.........................................................................................125

Programa Principal..........................................................................125

Adjunt.............................................................................................133

Arxiu de Funcions...........................................................................144

Atenció a Interrupcions...................................................................157

BIBLIOGRAFIA......................................................................................................163

Page 6: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Agraïments Xavier Pallàs i Sergi Aluja

Agraïments

Des d’aquí, volem enviar els nostres agraïments a totes aquelles persones que deforma directa o indirecta han participat en la realització d’aquest projecte.

En primer lloc, volem agraïr a l’Ernest Gil, director d’aquest projecte, tot el temps itota l’ajuda que ens ha ofert en tot moment.

Agraïr tambè al personal del CITEE per ajudar-nos en els nostres dubtes i pelsubministrament del material necessari.

A les nostres famílies, al David i a l’Òscar, gràcies pel recolzament.

Page 7: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Descripció General Xavier Pallàs i Sergi Aluja

1

1 Descripció General

1.1 Antecedents

El nostre interés en l’automatització i comunicacions industrials ens va dur aproposar al DEEEA una investigació sobre el protocol Profibus, tipus de comunicacions,diferents aplicacions i suports del protocol. Aleshores es va disposar d’un paquet,subministrat per SIEMENS per al desenvolupament de nous productes, propietat deldepartament. Aquest s’anomena Development Kit 4 (DEVKIT4)

El kit consta de una targeta master (IM 180), un esclau intel·ligent (IM 183 basat enun xip SPC3) amb interfície RS485, un esclau no intel·ligent (IM 184 basat en un ASPC2),i una targeta d’interfície (IM 181) entre l’ordinador i el master amb connexió per a busISA. Amb tot això SIEMENS adjunta un CD amb els manuals, definicions, hardware iconfiguracions per a diversos sistemes PROFIBUS (tant DP com FMS)

Tota aquesta documentació fa que la feina d’aquest projecte tingui bastant treballbasat en la classificació i traducció de tota aquesta informació per dur a terme el nostreprojecte.

1.2 Objectiu

L’objectiu principal d’aquest projecte es l’estudi i disseny d’un aparell que permetifer una automatització descentralitzada mitjançant una comunicació Master/Esclau. Aquesttipus d’automatització cada vegada es mes important en el control de processos, degut alsbons temps de resposta, estalvi i senzillesa de la instal·lació.

Per fer això s’utilitza una comunicació PROFIBUS, ja que es l’estàndard industrialque mes es fa servir avui en dia i gairebé totes les marques poden adaptar els seus aparellsa una comunicació d’aquest tipus.

Es parteix de la necessitat d’un MESTRE i d’un ESCLAU. Així doncs, el projectees centra en el disseny de l’ESCLAU. El MESTRE el proporciona SIEMENS i es de fàcilinstal·lació en un PC.

El disseny de l’ESCLAU es basa en un xip de comunicació (controlador Profibus)que també proporciona SIEMENS. Hi han diferents xips cadascun amb les sevescaracterístiques i prestacions. Es tria el SPC3 (controlador intel·ligent) ja que conté totesles funcions que s’integren dins de la comunicació PROFIBUS DP (DecentralizedPeripheral). Es necessita un altre uC (80C32 de Intel) per fer les funcions de gestió del’aplicació. Per una millor depuració de l’aplicació s’utilitza l’emulador DCSemu.

1.3 Mètode de Treball

La targeta esclava ve provista d’un codi exemple en C que fa el següent: agafa lessortides i les passa a les entrades definint sortides com les senyals que van del master al’esclau i entrades com les que van de l’esclau al master; fa, per tant, un mirall E/S. Lafeina consisteix en variar el codi perque faci el que es pretèn, o sigui, una gestió adequadade les E/S.

Page 8: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Descripció General Xavier Pallàs i Sergi Aluja

2

Inicialment cal configurar i connectar les targetes entre si per verificar el correctefuncionament. La IM-180 es connecta al Bus ISA d’un PC mitjançant l’IM-181, perposteriorment, configurar-la correctament mitjançant un software distribuït per elproveïdor. Es va fer una recerca i selecció d’informació d’entre tota la documentació queSiemens proporciona per poder fer la connexió. Un cop comprovada la comunicació ambl’ordinador es continua amb la connexió entre master i esclau mitjançant la interfície RS-485. Per la comunicació entre ells, el pack porta un programa basat en DOS que posa aprova tots els aspectes de la comunicació els quals s’expliquen posteriorment. El queinteressa ara es verificar el funcionament del codi guardat en la EPROM de l’esclau.

Accedint a la zona de la Dual Port RAM del master, es modifiquen 4 bytes i, esvisualitzen les entrades. Efectivament, per a l’esclau configurat com el número 3 esvisualitzen els mateixos valors hexadecimals que s’han introduït. A partir d’aquí esplanteja un dilema: es poden fer les variacions de codi sobre la EPROM o es pot utilitzarun emulador del microcontrolador. En ambdós casos, la programació ha d’ésser enllenguatge de baix nivell. Finalment s’opta per l’ús de l’emulador ja que sinó cada vegadaque es varïi el codi s’hauria de fer un borrat mitjançant rajos ultraviolats, la qual cosa seriamolt molesta.

Llavors es presenta un problema d’incompatibilitat ja que algunes de les adrecesutilitzades per l’emulador coincideixen amb les que accedeixen a la memòria SRAM de latargeta. Com que l’emulador conté una RAM interna s’opta per suprimir la senyal de“Chip Select” de la RAM de la targeta. Un cop adaptat l’emulador es presenta un problemaque impedeix la comunicació entre l’emulador i la placa. Després de moltes proves no estroba la causa i s’opta per crear un prototipus de la targeta. L’esquema de blocs i elèctricd’aquesta es veurà en l’apartat 4.1.2 d’aquesta memòria.

A continuació es fa un anàlisi exhaustiu del codi d’exemple que contè la EPROMrealitzant el corresponent diagrama de flux del programa.

Posteriorment s’implementa el codi en ensamblador per al micro 80C32. Llavorsapareix un altre problema: una acció que segons els manuals el xip SPC3 ha de ferautomàticament com és la detecció del baudrate de comunicació entre les targetes, no hofa. Després de moltes proves amb el prototipus i de tornar a revisar la documentació de lestargetes, del xip SPC3 i de la normativa de Profibus EN 50170, no s’ha pogut resoldre.

Page 9: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Elements per la Comunicació Xavier Pallàs i Sergi Aluja

3

2 Descripció del Standard Profibus (EN 50170)

2.1 Comunicacions Industrials

Les tecnologies de la informació (IT) s’estan incrementant seguint el creixement deles tecnologies de l’automatització. Han canviat les jerarquies, les estructures i lesdireccions i ara mateix s’arriba a tots els sectors – des de indústries de manufactura icontrol de processos fins a subministraments i edificacions. La capacitat de comunicar-sede qualsevol aparell i la transparència de la informació son característiques indispensablesper arribar a una bona automatització. Les comunicacions estan creixen i millorant nonomés en sentit vertical, sinó també horitzontal, entre elements de diferents jerarquies isimilars. Depenent de l’aplicació i del preu hi ha diferents sistemes que poden cobrir totauna gamma de possibilitats com ara Ethernet, PROFIBUS i AS-Interfície, aquests donenunes condicions de transparència en totes les àrees de producció.

A nivell sensor/actuador (sensor/actuator level), les senyals binàries dels sensorsson transmeses via un bus sensor/actuador. Hi ha un cost molt petit per a la instal·laciótècnica. Per aquí circulen les dades i porta una alimentació comú de 24V (aquest es unrequeriment important i característic) Les dades son transmeses cíclicament. El bus AS-Interfície es ideal per aquestes aplicacions.

A nivell de camp (field level), hi han els element distribuïts que son elements commòduls I/O, transductors de mesura, unitats de control, vàlvules i terminals d’operació ambel seu sistema de control, etc., comuniquen mitjançant un sistema eficient i a temps real. Esuna comunicació cíclica menys en el cas d’alarmes, paràmetres i diagnosis ja que aquesteshan de ser transmeses acíclicament. PROFIBUS te aquest tots aquest avantatges i ofereixuna solució transparent tant per processos de manufactura com automatitzats.

A nivell de nucli (cell level), controladors programables com PLCs i IPCs, s’han decomunicar entre ells. Es requereixen paquets grans d’informació i funcions molt potents decomunicació. Es important que hi hagi una bona integració en tot l’ample de la companyia.Els sistemes de intranet i internet amb protocols com Ethernet i TCP/IP estan donant unaresposta molt vàlida.

La revolució IT (tecnologies d’informació) tenen un potencial molt gran en laoptimització de processos i fan una contribució molt important per trobar nous recursos.Els sistemes de comunicació industrial han assumit la responsabilitat per desenvolupartotes aquestes funcionalitats.

Page 10: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Descripció del Stàndar Profibus Xavier Pallàs i Sergi Aluja

4

Figura 1. Piràmide de les comunicacions en les tecnologies d’automatització

2.2 Tecnologia PROFIBUS

PROFIBUS es un sistema independent del subministrador, es un estàndard amb elcamp obert per una gamma amplia d’aplicacions. Perquè continuï essent un sistema obert,encara que continuï evolucionant, esta assegurat pels estàndards internacionals EN 50170 iEN 50254.

Ens proporciona una comunicació senzilla per adaptar aparells de diferentsfabricants sense cap interfície especial per ajustar interfícies o protocols també es pot ferservir per tasques de comunicació complexes. Entre totes aquestes coses hi ha al darrerauna tasca de recerca per noves evolucions tècniques.

Aquest sistema esta format per diferents protocols de comunicació per als diferentsnivells de comunicació (Perfils de comunicació): DP i FMS. I diferents tecnologies per a latransmissió (Perfils físics): RS-485, IEC 1158-2 o fibra òptica. En el transcurs de labúsqueda de nous recursos, la organització d’usuaris de PROFIBUS esta treballant en laimplementació de conceptes universals per la integració vertical en la base TCP/IP.

Quan parlem de “Perfils d’Aplicació”, definim les opcions i la tecnologia detransmissió que es requereixen per les diferents aplicacions, segons l’àrea i el tipus de cadaaparell.

Figura 2. Vista de la tecnologia PROFIBUS

Page 11: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Descripció del Stàndar Profibus Xavier Pallàs i Sergi Aluja

5

2.2.1 Perfils de comunicació

El perfil de comunicacions PROFIBUS defineix com han de transmetre les dadesels usuaris per el medi de transmissió comú.

2.2.1.1 DP

DP es el perfil de comunicació més utilitzat. Es ideal per la velocitat, eficiència i baixcost de connexionat i esta dissenyat especialment per a la comunicació entre els sistemesd’automatització i els seus perifèrics distribuïts. Es pot fer servir en la substituciód’elements fins ara convencionals, senyals de transmissió paral·leles de 24V i senyalsanalògiques (corrent i tensió) en els processos automatitzats.

2.2.1.2 FMS

Aquest es el perfil universal de comunicació per les últimes necessitats que hansorgit en comunicació. FMS ofereix funcions d’aplicació molt sofisticades per a lacomunicació entre aparells intel·ligents. En tot cas, apareix FMS com un avanç tècnic dePROFIBUS per a l’ús de TCP/IP. L’FMS tindrà un paper cada cop mes important en elfutur.

2.2.2 Perfils Físics

L’aplicació d’un sistema de bus de camp queda molt definida segons la interfícieque fem servir per a la transmissió de dades. Si treballem amb llargues distàncies i/o altavelocitat de transmissió, son característiques que s’han de satisfer per a un procésd’automatització. Altres inconvenients a superar son les operacions en àrees perilloses i lapossibilitat de transmetre dades i energia per un cable comú.

Com que satisfer tots aquests requisits amb una sola tecnologia de transmissióactualment no es possible, hi han tres mètodes de transmissió:

RS-485: transmissió utilitzada per la majoria d’aplicacions d’automatització

IEC 1158-2 transmissió en processos d’automatització

Fibra òptica: millora la immunitat a interferències i es poden fer distàncies mesllargues de xarxa.

Hi han altres intents de millores tècniques, on s’intenta utilitzar l’ús comerciald’Ethernet amb velocitats de 10Mbits/s i 100Mbits/s com un camp físic per PROFIBUS.

Hi han acopladors i linkadors entre les diferents soports per la transmissió. Elsacopladors implementen el protocol tenint en compte les limitacions o circumstànciesfísiques i els enllaçadors son intel·ligents com per tenir diferents opcions de configuracióper a una xarxa PROFIBUS.

2.2.3 Perfils d’Aplicació

Descriurem els protocols de comunicació segons el sistema de transmissió ques’estigui utilitzant. Això també ens defineix la conducta dels elements de camp durant unacomunicació via PROFIBUS. El perfil d’aplicació més important es el PA, on esdefineixen els paràmetres i blocs de funcions dels aparells que formen el procésd’automatització (transductors de mesura, vàlvules, posicionadors...) Existeixen perfils per

Page 12: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Descripció del Stàndar Profibus Xavier Pallàs i Sergi Aluja

6

controladors de variadors de velocitat, HMI i encoders definits en els productes de cadavenedor.

2.3 Característiques Bàsiques

PROFIBUS defineix les característiques tècniques per a un sistema de bus sèrieinstal·lat en camp segons el qual, els controladors digitals programables poden serenxarxats, des dels elements de camp fins als elements centralitzats. Es un sistemaMULTIMESTRE i això ajuda a l’operativitat i a integrar diverses automatitzacions,sistemes de visualització i tots els seus perifèrics distribuïts en un sol bus. Es distingeix elssegüents tipus d’aparells:

MESTRES: Determinen les dades de comunicació al bus. Un mestre pot enviarmissatges sense necessitat d’una demanda externa quan posseeix els drets sobre el bus. Elmestre moltes vegades també es anomenat “estació activa”.

ESCLAUS: Son els perifèrics com: mòduls d’I/O, vàlvules, controladors itransductors de mesures. No tenen els drets d’accés al bus i només poden reconèixer elsmissatges rebuts o enviar missatges al MASTER quan aquest els demana. Els esclaustambé s’anomenen “estacions passives”. Només cal que suportin una porció petita delprotocol de bus. La seva implementació es particularment econòmica.

2.3.1 Arquitectura del protocol

PROFIBUS esta basat en un estàndard internacional reconegut. L’arquitectura delprotocol esta orientada segons el model de referència OSI (Sistema Obert d’Interconnexió)d’acord amb estàndard internacional ISO 7498. En aquest model cada capa de transmissiósuporta unes tasques definides.

Capa 1 (capa física) defineix les característiques de la transmissió.

Capa 2 (capa enllaçadora de dades) defineix el protocol d’accés al bus.

Capa 7 (capa d’aplicació) defineix les funcions d’aplicació.

Page 13: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Descripció del Stàndar Profibus Xavier Pallàs i Sergi Aluja

7

Transmissor Receptor Funció de la capa

7 7 Aplicació Interfície entre el programa del’aplicació i els comandamentsorientats a l’aplicació (llegir,escriure)

6 6 Presentació Representació de les dades peranàlisis i interpretació a lasegüent capa

5 5 Sessió Estableix les connexions amb lesestacions

4 4 Transport Controla la transmissió de dadesper la següent capa

3 3 Network Evita la congestió de la xarxa

2 2 Llinkatge de dades Descripció del protocol d’accésal bus (MAC), inclou seguretatde les dades

1 1 Entorn físic Definició del medi, codificació ivelocitat de la transmissió dedades

Medi de transmissió

Taula 1. Model de referència OSI

El perfil de comunicació DP utilitza les capes 1 i 2 com interfície. De les capes 3 a7 no les fa servir. Aquesta arquitectura racionalitzada assegura una transmissió de dadesràpida i eficient. El DDLM (Direct Data Link Mapper, Mapeig dels Enllaços Directes aDades) proveeix al usuari d’un fàcil accés a la capa 2. Les funcions que pot aplicarl’usuari, el sistema o la conducta dels dispositius segons el tipus de DP queden definides al’interfície de l’usuari.

El perfil de comunicació FMS, que es el protocol universal de comunicacions, teuna importància particular ja que te la missió d’unir les capes 1 i 2 amb la 7. L’aplicació dela capa 7 esta composta de l’FMS (Fieldbus Message Specification, Especificació deMissatge de Camp) i el LLI (Lower Layer Interface, Interfície de Camp Menor). L’FMSdefineix els serveis per la comunicació entre MESTRE - MESTRE i MESTRE - ESCLAU.El LLI defineix com s’han de representar els serveis FMS en el protocol de transmissió dela capa 2.

2.3.2 Interfície RS-485

La transmissió amb el suport RS-485 es la que s’utilitza més freqüentment ensistemes PROFIBUS. Es fa servir en aplicacions on es requereix una instal·lació simple,barata i ràpida. El cable es un parell trenat i apantallat.

L’RS-485 es molt senzill d’utilitzar. No calen coneixements d’expert per lainstal·lació del parell apantallat. La estructura del bus permet afegir i treure estacions sense

Page 14: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Descripció del Stàndar Profibus Xavier Pallàs i Sergi Aluja

8

influenciar en les altres estacions. Si hi han futures expansions de la xarxa tampoc tindranefecte sobre les estacions que ja estan instal·lades.

Les velocitats de transmissió es troben entre els 9.6kbit/s i els 12Mbit/s. Hi had’haver una sola velocitat de transmissió per a tots els aparells de la xarxa.

Figura 2. Cablejat per a un suport RS-485 i la possibilitat de la terminació de bus

? Instruccions d’instal·lació per RS-485

Tots els aparells han d’estar connectats a l’estructura del bus. Hi poden haver fins a32 estacions que poden estar connectades en un sol segment.

Cada terminació del bus ha de constar d’un terminador actiu, tant al començar i comal finalitzar cada segment. Per estar segurs de que estem lliures d’errors ens hemd’assegurar que les terminacions estan alimentades. També es convenient tenir unseleccionador per activar o desactivar el terminador per a futures ampliacions.

En cas de que hi hagin mes de 32 usuaris, o de la necessita d’allargar la xarxa,haurem de fer servir repetidors (amplificadors de línia) per unir els diferents segments debus.

La longitud màxima del cable depèn de la velocitat de transmissió:

Velocitat (kbit/s) 9.6 19.2 93.75 187.5 500 1500 12000

Longitud màx.(m)

1200 1200 1200 1000 400 200 100

Taula 2. Velocitat màxima en funció de la longitud

L’utilització de un apantallament es essencial per tenir una alta immunitat a lesemissions electromagnètiques. La pantalla ha d’estar connectada al terra de protecció perles dues parts amb una bona connexió. També es recomana que les línies de dades vaguinseparades de les tirades d’alt voltatge.

Quan hi han problemes en xarxes PROFIBUS, en el 90% dels casos es degut alcablejat de la instal·lació.

Page 15: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Descripció del Stàndar Profibus Xavier Pallàs i Sergi Aluja

9

2.3.3 MAC (Medium Access Protocol, Protocol d’Accés al Medi)

Tots els perfils de comunicació PROFIBUS fan servir un protocol per accedir almedi. Aquest protocol queda implementat a la capa 2 segons el model de referència OSI.Aquí també s’inclou la seguretat de les dades i el tracte dels protocols de transmissió itelegrames. A PROFIBUS, la capa 2 s’anomena FDL (Fieldbus Data Linker, Enllaçador deDades Camp). El MAC especifica el procediment que defineix quan una estació te elpermís per transmetre dades. El MAC controla i assegura que només una estació te elsdrets per transmetre dades en qualsevol moment. El protocol estat dissenyat per tenir dosserveis principals del MAC:

· Durant la comunicació entre sistemes complexes d’automatització(MESTRES) S’ha d’assegurar de que cada estació te el suficient temps per fer la sevacomunicació en un temps definit precís.

· Per altra banda, tenim la comunicació entre aquest controladors complexes iels seus perifèrics assignats (ESCLAUS) Hi ha d’haver una comunicació cíclica, a tempsreal, ràpida i tant senzilla com sigui possible.

Figura 3. Tres masters formant part del procediment “pas de testimoni”

El MAC consta de un procediment de "pas de testimoni", que es fa servir percomunicar les estacions complexes (MESTRES). També hi ha un procediment que es fasservir per comunicar les estacions complexes amb els perifèrics simples (ESCLAUS)

El procediment de "pas de testimoni" assegura que els drets d’accés al bus seranassignats a cada mestre en una franja de temps precisa. El missatge d'autorització es untelegrama especial que passa els drets d'un mestre a l’altre, també hi ha un temps màxim derotació configurable (perquè un mestre no saturi tota la comunicació per ell) PerPROFIBUS el "pas de testimoni" només es fa servir pels mestres

El procediment MESTRE - ESCLAU permet al mestre que posseeix en aquellmoment els drets de bus tenir accés als esclaus assignats. Això permet al mestrel'enviament de missatges o rebre'n dels esclaus. Aquest mètode d'accés permet les següentsimplementacions:

· Sistema mestre-esclau

· Sistema mestre-mestre (pas de testimoni)

· Combinació dels dos

Page 16: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Descripció del Stàndar Profibus Xavier Pallàs i Sergi Aluja

10

L'anell de "pas de testimoni" garanteix una organització de les estacions activessegons les adreces del bus. En aquest anell, el testimoni (els drets d'accés a bus) es passad'un mestre al següent en una seqüència predefinida (incrementant les adreces). Quan unaestació activa rep el telegrama testimoni, aquesta adopta el paper de MESTRE per un certtemps i pot comunicar-se amb les estacions esclaves mitjançant una comunicacióMESTRE - ESCLAU i també comunicar amb tots els altres mestres mitjançant unacomunicació MESTRE - MESTRE.

La tasca del MAC de les estacions actives es la de detectar aquest assignamentlògic en la posada en marxa del bus i establir aquest "pas de testimoni". Durant elfuncionament normal de la xarxa, es poden desconnectar MESTRES (ja sigui per fallo operque els apaguem)i això significa que queda borrat del procediment del "pas detestimoni", per altra banda també es poden afegir nous mestres a l'anell, i seran incorporatsal procediment. A sobre, el control de bus assegura que el testimoni es passa d'un mestre al'altre en ordre creixent de les adreces.

El testimoni actual espera un temps com a MESTRE segons el temps que s’hagiconfigurat per a la rotació.

El MAC també te característiques especials per a la detecció de defectes del medide transmissió i de la línia receptora, així com els errors deguts a un mal adressament(adreces repetides...) o en el pas del testimoni (varis MESTRES o sense MESTRE)

Un altra tasca important es la seguretat de les dades (capa 2 OSI). En la capa 2,PROFIBUS utilitza uns formats que asseguren una alta integritat de les dades. Tots elstelegrames tenen una HD=4 (Hamming Distance, Distància de Repetició) Això es realitzad'acord amb estàndard internacional IEC 870-5-1, mitjançant uns inicis i finals especialsper cada telegrama, paritat de slip-free-synchronization de bits i byte de chequeig.

La capa 2 de PROFIBUS funciona sense estar connectada. A part de la transmissiópunt a punt (de igual a igual, peer to peer), PROFIBUS proporciona una comunicaciómulti-peer (broadcast and multicast, tirample i multitiro)

Comunicació Broadcast vol dir que un MESTRE envia un missatge dedesconeixement a totes les altres estacions (mestres i esclaus)

Comunicació Multicast significa que un MESTRE envia un missatge dedesconeixement a un grup determinat d'estacions (mestres i esclaus)

Cada perfil de comunicació (DP o FMS) utilitza un joc de serveis a la capa 2 :

Serveis Funció DP FMS

SDA Envio de dades amb reconeixement ·SRD Envio i demanda de dades amb contesta · ·SDN Envio de dades sense reconeixement · ·

CSRD Envio i demanda de dades amb contestacíclicament ·

Taula 3. Serveis DP

Page 17: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Descripció del Stàndar Profibus Xavier Pallàs i Sergi Aluja

11

Els serveis es criden des dels SAPs (Service Acces Point, Punts d'Accés a Serveis).En FMS aquests SAPs es fan servir per adreçar les relacions lògiques de comunicació.

En DP hi ha un funció assignada per a cada SAP. Hi han varis SAPs i es poden ferservir simultàniament per totes les estacions (actives i passives) Hi ha una distinció entreSSAP (Source Service Acces Point) i DSAP (Destination Service Acces Point)

2.4 Perfil de Comunicació DP

L’entorn de comunicació DP esta dissenyat per tenir un intercanvi de dades eficienta nivell de camp. Els PLCs, PCs o sistemes de control de procés (sistemes centrals), podencomunicar ràpidament, a traves d’una connexió sèrie, amb els aparells que estan distribuïtsen camp: I/Os, controladors i vàlvules... Aquest intercanvi de dades amb els aparellsdistribuïts es produeix de manera cíclica la majoria de les vegades. Les funcions decomunicació requerides per tot això estan definides dins les funcions bàsiques DP i estad’acord amb la norma EN 50 170. A més d’aquestes funcions, el perfil DP també ofereixserveis extesos de comunicació acíclics per a la parametrització, operació, monitorització itractament de les alarmes dels aparells distribuïts intel·ligents. Tot això queda definit alPROFIBUS Guideline No. 2.042 i estan explicats al capítol 4.2

2.4.1 Funcions Bàsiques

El funcionament normal consisteix en que el MASTER llegeix cíclicament lainformació d’entrada dels SLAVES i cíclicament escriu les sortides d’informació alsSLAVES. Perque el funcionament sigui correcte, el temps de cicle de bus ha de ser inferiorque el temps de cicle del programa del sistema central d’automatització, el qual per a lamajoria d’aplicacions es de 10ms aproximadament. A més de la transmissió cíclica dedades d’usuari, el perfil DP disposa de funcions molt potents per fer la diagnòstics i elcomandament. La comunicació de dades es monitoritza per funcions en ambdós sentits(esclau i mestre)

La següent taula mostra un sumari de les funcions bàsiques DP.

Accés al Bus:

· Procediment de pas de testimoni entre els MASTERS i entre MASTERS i

SLAVES

· Possibilitat de sistemes mono-master o multi-master

· Possibilitat de instal·lar 126 estacions en un bus

Comunicació:

· Peer to peer o multicasta

· Comunicació cíclica entre MASTER i SLAVE

Estats d’operació:

· Operate: Transmissió cíclica de dades d’entrada i sortida

· Clear: Es llegeixen les entrades, les sortides es mantenen en un estat segur

· Stop: Es produeix la diagnosis i la parametrització, no hi ha transmissió de

les dades d’usuari

Page 18: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Descripció del Stàndar Profibus Xavier Pallàs i Sergi Aluja

12

Sincronització:

· Els comandaments de control troben la sincronització d’entrades i sortides

· Mode Sync: Es sincronitzen les sortides

· Mode Freeze: Es sincronitzen les entrades

Funcions:

· Transferència cíclica de dades entre el MASTER DP i els SLAVES

· Activació o desactivació dinàmica dels SLAVES

· Chequeig de la configuració dels SLAVES

· Funcions de diagnòstic. Hi han 3 nivells de missatges de diagnòstic

· Sincronització d’entrades i de sortides

· Possibilitat d’assignar de les adreces dels SLAVES via el bus

· Hi ha un màxim de 244 bytes d’entrada i sortida per a cada SLAVE

Funcions de protecció:

· Tots els missatges es transmeten amb una distància de repetició de HD=4

· Control per Watchdog per als SLAVES DP que detecta errades del

MASTER assignat.

· Protecció per a l’accés d’entrades i sortides dels SLAVES

Tipus d’aparells:

· DP master Class 1 (DPM1), p.e. PLCs

· DP master Class 2 (DPM2), p.e. eines de diagnòstic

· DP slave, p.e. entrades/sortides digitals/analògiques, controladors,

vàlvules...

Taula 4. Funcions bàsiques DP

2.4.1.1 Característiques Bàsiques

L’intercanvi ràpid de dades no es l’únic criteri a seguir per obtenir un bon sistemade bus. Necessitem un tractament senzill, unes capacitats bones de diagnòstic i tecnologiaper provar si hi han interferències. DP representa la combinació perfecta de totes aquestescaracterístiques.

Velocitat:

El perfil DP només necessita 1ms a 12Mbit/s per a la transmissió de 512 bits dedades d’entrada i 512 bits de dades de sortida distribuïdes en 32 estacions. En la següentfigura mostrem el típic temps d’una transmissió DP depenent del nombre d’estacions i dela velocitat de transmissió.

Page 19: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Descripció del Stàndar Profibus Xavier Pallàs i Sergi Aluja

13

Figura 4. Temps de cicle de bus en un sistema DP amb un sol mestre

La gràcia d’aquest augment de velocitat es el transmetre les dades d’entrada i desortida en un sol missatge (DP), que es un augment molt significatiu respecte FMS. Aquestes un servi SRD de la capa 2.

Figura 5. Sistema DP mono-master

Funcions de diagnosis:

Les funcions de diagnòstic en DP ajuden a localitzar ràpidament els errors. Elsmissatges de diagnosis son transmesos via bus i els recull el mestre. Aquests missatgesestan dividits en tres nivells:

· Diagnosis relacionada amb l’estació:

Aquests missatges tenen a veure amb l’estat general d’operació d’unaestació (p.e.) sobretemperatura o baix voltatge)

· Diagnosis relacionada amb el mòdul

Aquests missatges indiquen que en algun rang d’I/O (p.e.) un mòdul desortida de 8 bits) de una estació, els diagnòstics estan pendents.

· Diagnosis relacionada amb el canal

En aquest cas, la causa del error esta relacionada a un bit individual d’I/O(canal), p.e. hi ha un curtcircuit a la sortida 7

Page 20: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Descripció del Stàndar Profibus Xavier Pallàs i Sergi Aluja

14

2.4.1.2 Configuració del Sistema i Tipus d’Aparells

El perfil DP permet sistemes mono-master o multi-master. Això proporciona un altgrau de flexibilitat durant la configuració del sistema. Hi poden haver un màxim de 126aparells (mestres o esclaus) connectats al mateix bus. Les especificacions de configuraciódel sistema ens serveixen per definir el nombre d’estacions, l’assignament d’adreces a lesadreces d’I/O, consistència de les dades d’I/O, format dels missatges de diagnosis i elsparàmetres del bus fets servir.

Cada sistema DP pot consistir en diferents tipus d’aparells. La distinció es fa per a 3tipus d’aparells:

DP Mestre Class 1 (DPM1)

Aquest es un controlador central el qual cíclicament intercanvia informació amb lesestacions distribuïdes (esclaus) en un cicle definit de missatge. Els aparells típics son, perexemple, PLCs o PCs.

DP Mestre Class 2 (DPM2)

Els aparells d’aquest tipus son de configuració, d’enginyeria o d’operació. Son fetsservir per comandament, diagnosticar, i serveixen per configurar els aparells connectats,avaluen els valors mesurats i els paràmetres i qüestionen l’estat de l’aparell.

Slave

Un esclau es un aparell perifèric (I/Os, controladors, HMI, vàlvules, transductors demesura) que reuneixen informació d’entrada i envien la informació de sortida alsperifèrics. Hi han altres aparells que poden subministrar informació només d’entrada onomés de sortida .

La suma de la informació d’entrada i de sortida depèn de cada tipus d’aparell. Hi haun màxim de 246 bytes de dades d’entrada i 246 bytes de dades de sortida.

En sistemes mono-master només hi ha un mestre que esta actiu al bus.

El controlador programable es el component central de control. Els esclaus estanenllaçats descentralitzadament amb el PLC via el medi de transmissió. Els sistemes mono-master guanyen en temps de cicle de bus (es mes petit)

En sistemes configurats com a multi-master diversos mestres estan connectats a unbus. Qualsevol d’aquests mestres representa un subsistema independent, cadascunconsisteix d’un mestre DPM1 i dels seus esclaus assignats, o de configuració addicional iaparells de diagnòstics . Les imatges d’I/O dels esclaus es poden llegir des de tots elsmestres DP. En tot cas, només un mestre pot tenir accés d’escriptura a les sortides (p.e. elDPM1 assignat durant la configuració)

2.4.1.3 Comportament del Sistema

Les especificacions del perfil DP inclouen una descripció detallada del sistema perassegurar l’intercanvi entre aparells (diferents marques...) La conducta del sistema esdetermina principalment per l’estat en que opera el DPM1.

El DPM1 es pot controlar localment o via el bus segons la configuració que tingui.

Page 21: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Descripció del Stàndar Profibus Xavier Pallàs i Sergi Aluja

15

Aquest te tres estats principals:

· Stop

En aquest estat, no hi ha transmissió de dades entre els esclaus i el DPM1.

· Clear

En aquest estat, el DPM1 llegeix la informació d’entrada del esclaus iaguanta les sortides en mode de seguretat.

· Operate

En aquest estat, el DPM1 esta en la fase de transmissió de dades. Es unacomunicació cíclica, es llegeixen les entrades dels esclaus, i s’escriu la informacióde sortida als esclaus.

El DPM1 envia cíclicament el seu estat a tots els esclaus assignats a ell fent servirun comandament multicasta en un interval de temps que es pot configurar.

La reacció del sistema davant d’un error durant la transmissió normal de dades delDPM1 (p.e. una fallada d’un esclau) es pot predeterminar mitjançant el paràmetre deconfiguració “auto-clear”

Si aquest paràmetre esta assertat, el DPM1 commuta les sortides de tots els esclausque te assignats a l’estat de seguretat tan ràpid com detecta que l’esclau no esta preparat(ready) per l’intercanvi de dades. El DPM1 aleshores canvia a l'estat Clear.

Si aquest paràmetre no esta assertat, el DPM1 es manté en l’Operate state encaraque hi hagi un error, i l’usuari pot especificar pas a pas la reacció del sistema.

2.4.1.4 Transmissió Cíclica de Dades entre el DPM1 i els Esclaus

La transmissió de dades entre el DPM1 i els esclaus que te assignats s’executaautomàticament pel DPM1 en una ordre que queda definida i es recurrent. Quanconfigurem el sistema del bus, l’usuari defineix l’assignament de un esclau al DPM1.L’usuari també defineix quins esclaus queden inclosos o exclosos de la comunicaciócíclica d’usuari.

La transmissió de dades entre el DPM1 i els esclaus esta dividida en tres fases:parametrització, configuració i transferència de dades.

Abans de que l’esclau DP entri en la fase de transmissió de dades, en les fases deparametrització i configuració aquest es sotmès a un chequeig, on la configuració ha decoincidir. El tipus d’aparell, el format i la longitud de la informació, així com el nombred’entrades i sortides han de coincidir. Aquests test proporciona a l’usuari una protecciódavant possibles errors de parametrització. A part de la transmissió de dades per part del’usuari, que es executada automàticament pel DPM1, es poden enviar noves dades deparametrització a petició de l’usuari.

Page 22: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Descripció del Stàndar Profibus Xavier Pallàs i Sergi Aluja

16

Figura 6. Transmissió cíclica de dades en DP

2.4.1.5 Modes de Sincronisme i Congelació

A part de les dades de transferència amb l’usuari, que s’executa automàticament pelDPM1, el mestre pot enviar comandaments de control a un sol esclau, un grup d’esclaus oa tots els esclaus simultàniament. Aquest comandaments de control es transmeten comcomandament multicasta. Aquests permeten l’ús de modes de sincronisme i congelació percontrolar diferents events dels esclaus.

Els esclaus comencen amb el “sync mode” quan reben un comandament desincronització des del seu mestre assignat. Aleshores les sortides de tots els esclaus que teadreçats aquest DPM1 es congelen al seu valor actual. Durant les següents transmissionsamb l’usuari, les dades de sortida es guarden als esclaus, però els estats de sortida nocanvien. Les sortides que s’han anat guardant no s’envien a les sortides fins que es rep unaltre comandament de sync. “Sync mode” esta inclòs amb el “unsync command”.

Molt semblant al que s’acaba d’explicar, es el comandament de control de freezeque força als esclaus adreçats en aquest DPM1 a assumir el “freeze mode” . En aquestmode d’operació, els estats de les entrades es congelen al valor actual. Les dades d’entradano s’actualitzen fins que el mestre envia un altre comandament de freeze. Freeze mode estainclòs amb el “unfreeze command”.

2.4.1.6 Mecanismes de Protecció

La seguretat i la fiabilitat obliguen a proveïr al perfil DP amb unes potents funcionsde protecció contra els possibles errors de parametrització o errades en l’equip detransmissió. Per aconseguir això, s’utilitzen mecanismes de monitorització al mestre DP ials esclaus en forma de temps de monitorització. L’interval de monitorització es defineixdurant la configuració.

Al mestre DP

El DPM1 monitoritza les dades de transmissió dels esclaus mitjançant elData_Control_Timer. Es fa servir un temps de control individual per cadascun delsesclaus. El temps de monitorització es dispara quan no hi ha cap dada de transmissiócorrecta durant aquest interval de monitorització. L’usuari es informat quan això passa. Siesta habilitada la reacció automàtica a un error (Auto_Clear), el DPM1 surt de l’estatOPERATE, commuta les sortides dels esclaus assignats a l’estat de seguretat i canvia a elseu estat s CLEAR.

Page 23: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Descripció del Stàndar Profibus Xavier Pallàs i Sergi Aluja

17

A l’esclau DP

L’esclau utilitza el control per watchdog per detectar els errors del mestre o de lalínia de transmissió. Si no hi ha dades de comunicació amb el mestres durant l’interval decontrol del watchdog, l’esclau automàticament canvia les seves sortides a l’estat deseguretat.

A part, es requereix la protecció d’accés per a les entrades i sortides dels esclausque operen en sistemes multi-master. Això assegura que només el mestre autoritzat teaccés directe. Per tots els altres mestres, els esclaus faciliten una imatge de les sevesentrades i sortides les quals poden ser llegides des de qualsevol mestre.

2.4.2 Funcions DP Extenses

Les funcions DP extenses fan possible una transmissió acíclica per llegir i escriure,així com la transmissió d’alarmes entre mestres i esclaus paral·lela i independentment de lacomunicació cíclica. Això facilita a l’usuari la possibilitat de fer servir una einad’enginyeria (DPM2), a optimitzar els paràmetres dels aparell de camp (esclaus) o llegirl’estat d’un esclau sense distorsionar l’operació general del sistema.

Amb aquestes funcions extenses, el perfil DP esta preparat per parametritzaraparells que sovint s’han de parametritzar en funcionament. Avui en dia, les funcionsextenses DP s’utilitzen per operacions “online” pels aparells en camp d’un Procésd’Automatització (PA) mitjançant les eines d’enginyeria. Les transmissions acícliques sonfetes amb una prioritat inferior a les cícliques però es realitzen paral·lelament a lestransmissions cícliques de l’usuari i a la mateixa velocitat. El mestre necessita algun tempsaddicional per enviar aquests serveis de comunicació acíclica. Això s’ha de tenir encompte en la parametrització de tot el sistema. Per fer això, les eines de parametritzaciónormalment incrementen el temps de circulació en objecte de no limitar al mestre per a lescomunicacions cícliques, sinó que també ha de tenir temps per les tasques de comunicacióacícliques.

Aquestes funcions extenses son opcionals. Son compatibles amb les funcionsbàsiques DP. Existeixen aparells els quals no volen o no necessiten l’ús de noves funcions ipoden continuar funcionant.

2.4.2.1 Adressament mitjançant Slot i Índex

Per adreçar les dades, PROFIBUS interpreta que els esclaus estan formats comblocs físics, o que poden estar estructurats internament en unitats de funcions lògiques, ques’anomenen mòduls. Aquest model també es fa servir en les funcions bàsiques DP per a latransmissió cíclica de dades on cadascun dels mòduls consta de un nombre de bytesd’entrades i/o sortides, els quals son transmesos sempre en una posició fixa del telegramade dades d’usuari. El procediment per l‘adreçament esta basat en identificadors els qualscaracteritzen el tipus de mòdul com entrades, sortides o una combinació dels dos. Tots elsidentificadors donen la configuració de l’esclau, el qual es chequejat pel DPM1 quan elsistema es posa en marxa.

Els sistemes acíclics també es basen en aquest model. Tots els blocs de dadespreparats per llegir o escriure es considera que pertanyen al mòdul. Aquests blocs podenser adreçats pel número de slot i l’índex. El número de slot adreça el mòdul, i l’índexadreça els blocs de dades pertanyents a un mòdul. Cada bloc de dades pot tenir un tamanyde 244 bytes. En aparells modulars, el número de slot es assignat als mòduls. Començant

Page 24: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Descripció del Stàndar Profibus Xavier Pallàs i Sergi Aluja

18

per 1, els mòduls son numerats consecutivament en ordre creixent. El slot número 0 elproporciona el propi aparell (DPM1) Els aparells compactes son tractats com una unitat ocom mòduls virtuals.

Utilitzant les especificacions de longitud en les peticions de lectura i escriptura, espossible llegir o escriure parts d’un bloc de dades. Si l’accés al bloc de dades ha estatcorrecte, l’esclau respon positivament a la lectura o l’escriptura . Si no ha estat correcte,l’esclau dona una resposta negativa en la qual retorna el problema classificat.

Figura 7. Adressament en una lectura o escriptura acícliques en un servei DP

2.4.2.2 Transmissió Acíclica entre el DPM1 i els Esclaus

Les següents funcions es poden fer servir per realitzar una comunicació acíclica dedades entre el sistema central d’automatització (DPM1) i els esclaus:

MSAC1_Read:

El mestre llegeix un bloc de dades des de l’esclau.

MSAC1_Write:

El mestre escriu un bloc de dades al esclau.

MSAC1_Alarm:

Transmissió d’una alarma des de l’esclau cap al mestre. La recepció d’una alarmaes reconeguda pel mestre. Només desprès del reconeixement de l’última alarma, l’esclauestarà autoritzat per enviar un altre missatge d’alarma. Això significa que les alarmes maies sobreescriuran.

MSAC1_Alarm_Acknowledge:

El mestre reconeix la rebuda d’un missatge d’alarma al esclau assignat.

MSAC1_Status:

Transmissió d’un missatge d’estat des del esclau cap al mestre. La rebuda d’unmissatge d’estat no es reconeix. Els missatges d’estat poden ser sobreescrits.

Page 25: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Descripció del Stàndar Profibus Xavier Pallàs i Sergi Aluja

19

Totes aquestes dades son transferides via un connexió orientada (MSAC1) Aquestaconnexió s’estableix per part del DPM1. Esta molt relacionada a la comunicació cíclica dedades entre el DPM1 i els esclaus i només es pot utilitzar pel mestre que alhora ha de tenirparametritzat i configurat l’esclau en qüestió.

2.4.2.3 Transmissió Acíclica entre un DPM2 i els Esclaus

Les següents funcions es poden fer servir per a una comunicació acíclica entreelements d’enginyeria i eines operatives en planta (DPM2 i els esclaus):

MSAC2_Initiate i MSAC2_Abort:Inici i final de una connexió per comunicació acíclica entre el DPM2 i l’esclau.

MSAC2_Read:Els mestre llegeix un bloc de dades del esclau.

MSAC2_Write:El mestre escriu un bloc de dades a l’esclau

MSAC2_Data_Transport:Amb aquest servei, el mestre pot escriure dades acíclicament a l’esclau i si es

necessita també pot llegir dades des de l’esclau en el mateix cicle de servei. Les dadestenen sentit segons cada l’aplicació.

La comunicació esta feta de manera orientada a la connexió i s’anomenaMSAC_C2. Aquesta s’estableix abans del començament de la comunicació acíclica pelDPM2 mitjançant el servei MSAC2_Initiate. Després d’això, la connexió esta preparadaper utilitzar els serveis MSAC2_Read, MSAC2_Write i MSAC2_Data_Transport. Quanuna connexió es massa llarga, el mestre la desconnecta amb el MSAC2_Abort. En generales possible que un esclau mantingui diferents connexions MSAC2 actives al mateixmoment. El nombre de connexions que poden estar actives al mateix temps estan limitadespels recursos del mateix esclau.

La transmissió acíclica s’efectua seguint una seqüència predefinida:

Primer el mestre envia una petició de MSAC2_Read a l’esclau; davant aquestapetició la dada que es demana s’adreça mitjançant el número d’slot i l’índex. Després derebre aquesta petició, l’esclau te l’oportunitat de facilitar la dada. El mestre enviaràtelegrames regularment per recollir totes les dades demanades al esclau. L’esclau varesponent els telegrames del mestre amb una confirmació breu i sense dades fins que no tepreparades totes les dades. La següent petició per part del mestre es contesta ara amb unMSAC2_Read, amb la qual les dades que es volen llegir es transmeten cap al mestre. Latransmissió de dades esta controlada per temps.

El temps de monitorització s’especifica amb el servei DDLM_Initiate quans’estableix la connexió. Si es detecta un error, la connexió es desconnecta automàticamentdes de les dues parts (mestre i esclau) La connexió es pot establir un altre cop per part delmateix usuari o per part d’un altre. Els punts d’accés de servei (SAPs) des del 40 al 48 al’esclau i el 50 en el DPM2 estan reservats per a una connexió MSAC2.

Page 26: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Descripció del Stàndar Profibus Xavier Pallàs i Sergi Aluja

20

2.5 Perfils d’Aplicació

Els perfils PA descriuen l’ús de la comunicació PROFIBUS i dels perfils físics pera certes aplicacions (processos automatitzats...) o per alguns tipus d’aparells (encoders,controladors...)

2.5.1 PA (Procés d’Automatització)

L’ús de PROFIBUS en aparells típics i aplicacions automatitzades queda definit alperfil PA (Process Automation). Aquest perfil es pot obtenir de l’organització d’Usuaris dePROFIBUS amb el nº 3042. Esta basat en la comunicació DP, i depenent del campd’aplicació, els suports físics de comunicació poden ser qualsevol (RS-485, fibra òptica oIEC 1158-2). El perfil PA defineix els paràmetres de l’aparell i la conducta d’aquest. Elstípics son transductors de mesura, posicionadors... La facilitat que proporciona això es quees independent del fabricant. La descripció de les funcions i del comportament es basa enel model de Function Block reconegut internacionalment. Les definicions i opcions delperfil d’aplicació PA, fan que PROFIBUS sigui un substitut molt atractiu per les senyalsanalògiques (4...20mA)

També permet la mesura i el control de llaços tancats en processos automatitzatsúnicament amb 2 fils. Permet el manteniment i la connexió/desconnexió d’aparells durantles operacions en zones perilloses. El perfil PA de PROFIBUS ha estat desenvolupat encoordinació amb usuaris en les indústries i s’han trobat uns característiques especials:

· Estandarització dels perfils d’aplicació per processos automatitzats ipossibilitat de intercanvi de marques entre els elements de camp.

· Possibilitat d’afegir i treure estacions sense influenciar a les altres estacions.

· Utilització de transductors de mesura utilitzant la tecnologia de 2 filsd’acord amb l’IEC 1158-2

· La seva utilització també ha de ser possible en àrees potencialmentexplosives amb proteccions del tipus “intrínsecament segures” (EEX ia/ib) o“encapsulament” (EEX d)

Figura 8. Típica configuració d’un sistema en el procés d’automatització

Page 27: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Descripció del Stàndar Profibus Xavier Pallàs i Sergi Aluja

21

2.5.1.1 Comunicació

L’ús de PROFIBUS en processos de muntatge de sistemes comporta un estalvi demes del 40% en planejament, posta en marxa i manteniment i ofereix un importantcreixement en funcionalitat i seguretat. La figura 17 mostra la diferència entre elconvencional llaç de 4...20mA i el sistema bastat en PROFIBUS.

Els elements de camp en zones arriscades estan connectats a PROFIBUS fent servirla tecnologia de transmissió IEC 1158-2, això assegura la transmissió de dades i energiautilitzant només 2 fils. El pas per àrees no perilloses, on fem servir l’RS-485 fem el canvimitjançant un acoplador o enllaçador. A diferència del cablejat convencional, on s’havia detirar una línia separada per cada senyal de mesura al mòdul d’I/O del sistema de control deprocés, amb PROFIBUS les dades de diversos aparells son transmeses per un cable comú.Mentre que en el sistema convencional necessitàvem una font d’alimentació separada per acada senyal, amb PROFIBUS tenim el acoplador de segment o l’enllaçador que fan aquestafunció per a un munt d’elements d’una xarxa PROFIBUS. Depenent dels requerimentsd’explosió i del consum d’energia dels aparells, es poden connectar de 9 a 32 transductorsde mesura en un segment d’acoplador o enllaçador. Això no només estalvia cablejat, sinóque la possibilitat d’avaries es redueix i la simplicitat del circuit ajuda a la sevalocalització.

Els valors mesurats i l’estatus dels diferents elements del PA en camp sontransmeses cíclicament amb alta prioritat entre el DCS (DPM1) i els transductors demesura fent servir les ràpides funcions DP. Això assegura que el valor del corrent mesurat iel seu estatus associat estan sempre actualitzats al sistema d’automatització (DPM1). Peraltra banda, els paràmetres de l’esclau per visualització, operació, manteniment i diagnosiseran transmesos pel DPM2 mitjançant les funcions acícliques DP.

2.5.1.2 Aplicació

El perfil PA també conte definicions per l’aplicació, com tipus de dades i unitatsdel transmissor del valor mesurat, i també el significat del valor associat a l’estatus. Lesespecificacions per la unitat i el significat dels paràmetres de l’aparell, així com els límitssuperiors i inferiors de les mesures queden definides per cada usuari o subministrador. Perajudar a la posta a punt, hi ha la possibilitat de simular valors en el transductor de mesures.

Aquí l’usuari pot entrar una mesura fictícia, aquesta serà transmesa des deltransductor de mesura cap al sistema de control de procés, enlloc del valor real mesurat.Això facilita la simulació d’estats crítics de la planta i ajuda a la posta a punt iensinistrament del personal durant la posta en marxa de la planta.

La conducta de l’aparell es descriu per la especificació de les variables estàndardsamb les quals es descriuen en detall les propietats dels transductors de mesura. La fig.18ensenya el principi de funcionament per a un transductor de pressió.

El perfil PA consisteix en unes indicacions generals que contenen les definicionsque s’han d’aplicar per a tots els tipus d’aparell. El perfil va perfecte per la descripciód’aparells que només mesuren una variable i també per als que tenen varies funcions(multifuncionals) amb diferents variables mesurades. El perfil PA (versió 3.0) defineix elsparàmetres per a tots els transductors de mesura comuns:

· Medidors de pressió absoluts i diferencials

· Nivell, temperatura, cabal

Page 28: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Descripció del Stàndar Profibus Xavier Pallàs i Sergi Aluja

22

· Entrades i sortides analògiques i digitals

· Vàlvules i posicionadors

· Analitzadors

2.5.1.3 Blocs de Funcions

El perfil PA suporta l’intercanvi i l’interoperacionalitat entre elements de camp dediferents fabricants. El perfil utilitza el model de bloc de funcions, que estainternacionalment reconegut, per descriure les funcions de l’aparell i els seus paràmetres.Els blocs de funcions representen funcions d’usuari diferents, com entrades analògiques isortides analògiques. A més del bloc de funcions específics de l’aplicació, hi han 2 blocsde funcions per característiques específiques dels aparells (bloc físic i bloc transductor) Elsparàmetres d’entrada i de sortida dels blocs de funcions poden ser connectats pel bus ienllaçats a l’aplicació del procés.

Bloc físic: conté informació general de l’aparell: nom, fabricant, versió número desèrie...

Bloc transductor: conté dades específiques i correcció de paràmetres

Bloc d’entrades analògiques (AI): dona el valor mesurat pel sensor, amb estatus iescalaBloc de sortides analògiques (AO): Proporciona les sortides analògiques amb elvalor de sortida que especifica el sistema de control.

Qualsevol aplicació conte diferents blocs de funcions. Aquests s’integren en elselements de camp pels fabricants d’aparells i es pot accedir a ells per comunicació aixícom mitjançant eines d’enginyeria (tractament del senyal)

2.5.2 Aplicacions de Seguretat

El perfil PROFISafe (número 3092) defineix com estan connectats al controladorprogramable els aparells de seguretat (botons de parada d’emergència, barreres de llum...)via PROFIBUS. Això significa que les avantatges de que el sistema PROFIBUS sigui unsistema obert també es poden fer servir en un àrea especial, que fins ara, havíem connectatconvencionalment.

Mentre desenvolupem el concepte de transmissió de dades segures via PROFIBUS,no només ens hem de fixar en l’estalvi de cablejat, sinó que hem de veure l’ampli marged’aplicacions en les indústries de manufactura i processament. El resultat es que sorgeixenaparells amb el perfil PROFISafe que poden operar sense restriccions , amb unacoexistència harmònica amb els aparells estàndards, fent servir un cable únic i comú.PROFISafe es basa en el perfil de comunicació DP i pot operar amb RS-485, fibra òptica oIEC 1158-2.

Al mateix temps, en DP hi han uns temps de reacció molt petits i, a més, nocomporta un consum addicional d’energia o fonts d’alimentació extra per els elements decamp PA. PROFISafe es una solució software que no requereix nous cables.

També es tenen en compte tots els error que poden ocórrer durant la comunicaciósèrie del bus (repetició, pèrdua, inserció seqüència incorrecta, retard, enmascaraments,dades de procés incorrectes i adressaments erronis) i es defineixen nous mecanismes de

Page 29: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Descripció del Stàndar Profibus Xavier Pallàs i Sergi Aluja

23

seguretat que abarquen l’estàndard de detecció d’errors i els seus mecanismes d’eliminaciódel protocol d’accés a PROFIBUS.

2.5.3 Automatització Constructiva

Aquest perfil (nº 3011) esta dedicat a una branca específica i serveix com a base permolts procediments alhora de crear automatitzacions. La base del perfil de comunicacióFMS defineix la monitorització, control, regulació, operació, gestió d’alarmes i historialper els sistemes que s’han d’automatitzar.

2.5.4 Perfils d’Aplicació per Aparells Especials

La base del perfil de comunicació DP, queda definit com segueix:

NC/RC (3.052)

Aquest perfil descriu com es controlen els robots de muntatge. Diagrames de fluxque descriuen el moviment i el programa de control de robots des del punt de vista delssistemes d’automatització d’alt nivell.

? Encoders (3.062)

Aquest perfil descriu la unió amb DP del encoders, rotatoris, d’angle i lineals ambresolució monovolta o multivolta. Hi han dos classes d’aparells definits en les funcionsbàsiques i addicionals: escalat, gestió d’alarmes i diagnosis.

? Controladors de variadors de velocitat (3.072)

Aquest perfil especifica com s’han de parametritzar els controladors i quinssetpoints i valors actuals han de ser transmesos. Això proporciona intercanvis entre elscontroladors de diferents fabricants. Aquest perfil conte especificacions per el control develocitat i modes de posicionament. Especifica les funcions bàsiques del controladordeixant la suficient llibertat per aplicacions més específiques.

? Interfície home-màquina (3.082)

Aquest perfil (HMI) especifica la relació entre els aparells via DP cap alscomponents de major nivell dins de l’automatització. El perfil utilitza funcions DPextenses per la comunicació.

2.6 Utilització d’Aparells

Els aparells PROFIBUS tenen característiques de funcionament diferents. Lesdiferencies van en funció de la finalitat (p.e. número de senyals d’I/O i missatges dediagnosis) o dels paràmetres que ha de tenir el bus (baudrate, temps de monitorització)Aquest paràmetres varien per a cada tipus d’aparell i del fabricant. Amb la finalitat degarantitzar una configuració Plug and Play per a PROFIBUS, hi han uns data sheets queestan definits per les funcions de comunicació dels aparells (fitxers GSD)

Basant-se en fitxers GSD, fa que sigui molt fàcil la configuració de xarxesPROFIBUS amb aparells de diferents fabricants.

Page 30: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Descripció del Stàndar Profibus Xavier Pallàs i Sergi Aluja

24

2.6.1 Fitxers GSD

Les característiques de comunicació per a un aparell PROFIBUS queden definidesen el format GSD (electronic data sheet) Aquest fitxers son subministrats pel fabricant decada aparell i permeten una integració ràpida i senzilla a qualsevol sistema PROFIBUS.

En aquest fitxer hi ha una descripció clara i comprensiva de les característiques decada aparell (especificades en un format concret)

2.6.2 Número d’Identitat

Qualsevol master de tipus DPM1 i qualsevol esclau han de tenir un número d’ID.Els masters necessiten aquest número per identificar els tipus d’aparells que tenenconnectats sense necessitat d’un protocol de capçalera. El master compara aquest númeroID amb el que ell té configurat . No s’inicia cap transferència de dades mentre els esclauscorresponents no tinguin les seves adreces al bus. Això ens assegura que no hi hagin errorsde configuració.

Els fabricants han d’aplicar aquest número ID per a cada tipus d’aparell. Hi ha unrang especial pels aparells PA: 9700h-977Fh (p.e.)

2.6.3 Descripció Electrònica de l’Aparell (EDD)

Aquest tipus de fitxer descriu l’aparell en qüestió però alhora de configurar-lo en unsistema SCADA o en algun sistema d’enginyeria. Serveix per simplificar la configuració,visualització i operació.

2.6.4 Concepte FDT (Eina pels aparells de camp)

FDT treballa amb la base de MICROSOFT COM com a eina d’enginyeria per aconfigurar una xarxa-sistema PROFIBUS, aquest ofereix configuració, operació idiagnosis. Amb tot això ja va inclosa una llibreria amb els fitxers GSD i EDD (en forma deun fitxer DTM), cosa que facilita la búsqueda i configuració de qualsevol aparell (sinó estaa la llibreria ens ho haurà de subministrar el fabricant)

Page 31: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Elements per la Comunicació Xavier Pallàs i Sergi Aluja

25

3 Elements per la Comunicació

3.1 Hardware

3.1.1 IM-180

3.1.1.1 Descripció General

L’IM180 i el Firmware V3.0 fan possible establir una connexió de tipus master,esclau o master/esclau a una xarxa PROFIBUS DP (també seria possible una connexióPROFIBUS FMS) El xip que fa possible aquesta connexió es un ASPC2 que estaincorporat a la targeta.

La velocitat màxima de comunicació es de 12Mbaud en un suport RS485.

També esta proveït d’una memòria DPRAM per fer una imatge de les entrades,sortides i diagnosis de tots els esclaus (aprox. 15.5kbyte)

Funcionant com a master tenim una reserva de memòria per a cada esclau (capacitatmàxima de 123 esclaus):

244 bytes paràmetres

244 bytes configuració

244 bytes diagnosis

244 bytes sortides sense consistència

244 bytes sortides amb consistència

244 bytes entrades amb o sense consistència

Taula 5. Distribució de bytes per cada esclau

Fent servir COM PROFIBUS podrem configurar l’IM180 com a master, esclau omaster/esclau, així com gestionar una comunicació master-master (pas de testimoni) .

Page 32: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Elements per la Comunicació Xavier Pallàs i Sergi Aluja

26

3.1.1.2 Diagrama de Blocs

Figura 9. Diagrama funcional del IM 180

3.1.1.3 Descripció Funcional

o Disseny:

- Possibilitat d’un muntatge acoplat amb el mòdul IM181

o Interfície:

- Connector de pins de 4 files x 16 columnes

- Bus de dades de 8 o 16 bits

- Dual Port RAM (2x8Kx8)

- Control de consistència

- RAM (2x128Kx8)

- Flash EPROM (256Kx16) per memòria de programa i paràmetres

- ASPC2 a 48MHz

- CPU 80C165 a 40 MHz

o Alimentacions:

- Voltatge per alimentació del mòdul en general i per la programació de laFlash

Page 33: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Elements per la Comunicació Xavier Pallàs i Sergi Aluja

27

3.1.1.4 Funcionament

L’ASIC ASPC2 es l’encarregat independent del control del bus. Les comunicacionsamb el sistema host es fan mitjançant la RAM de doble port, mentre que l’intercanvi dedades va a càrrec del programa del usuari, per això tenim el processador 80C165 amb elqual podem gestionar la nostra aplicació.

No necessitem cap altre complement per programar la Flash EEPROM ja que elmateix mòdul IM180 genera el voltatge per aquesta programació.

El firmware que esta instal·lat al ASPC 2 es l’encarregat de portar tot el pes de lacomunicació ja que porta el protocol i les funcions necessàries per a una comunicació coma master.

3.1.2 IM-181

3.1.2.1 Descripció General

Té la missió de fer d’interfície entre la targeta IM180 i el PC, i també la connexió alRS485. La descodificació de l’adreça per aquesta targeta ha de ser de 16kByte que ha demapejar el PC per poder tenir accés a la DualPort RAM.

3.1.2.2 Configurar l’Adreçament dins del PC

Es configura amb els grups de switch S1 i S2, seguint les següent taules (l’opcióombrejada es la que hi ha per defecte):

3.1.2.2.1 Àrea de Memòria per la DPRAM

Àrea DPRAM S 1.1 S 1.2 S 1.3

C8000-CBFFF ON OFF ON

CC000-CFFFF ON OFF OFF

D0000-D3FFF OFF ON ON

D4000-D7FFF OFF ON OFF

D8000-DBFFF OFF OFF ON

DC000-DFFFF OFF OFF OFF

Taula 6. Distribució de l’àrea de memòria depenent de la posició del switch S1.

Tipus d’Accés S 1.4

Accés de 8 bits OFF

Accés de 16 bits ON

Taula 7. Tipus d’accés a memòria

Page 34: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Elements per la Comunicació Xavier Pallàs i Sergi Aluja

28

3.1.2.2.2 Àrea d’Entrada i Sortida

Àrea del Port S 1.5 S 1.6 S 1.7 S 1.8

220-22F ON OFF ON ON

230-23F OFF OFF ON ON

240-24F ON ON OFF ON

250-25F OFF ON OFF ON

260-26F ON OFF OFF ON

320-32F ON OFF ON OFF

330-33F OFF OFF ON OFF

340-34F ON ON OFF OFF

350-35F OFF ON OFF OFF

Taula 8. Adreces del Port d’E/S

3.1.2.2.3 Canal d’Interrupció

Canal S 2.1 S 2.2 S 2.3 S 2.4 S 2.5 S 2.6 S 2.7 S 2.8

3 ON OFF OFF OFF OFF OFF OFF OFF

5 OFF ON OFF OFF OFF OFF OFF OFF

7 OFF OFF ON OFF OFF OFF OFF OFF

10 OFF OFF OFF ON OFF OFF OFF OFF

11 OFF OFF OFF OFF ON OFF OFF OFF

12 OFF OFF OFF OFF OFF ON OFF OFF

14 OFF OFF OFF OFF OFF OFF ON OFF

15 OFF OFF OFF OFF OFF OFF OFF ON

Cap OFF OFF OFF OFF OFF OFF OFF OFF

Taula 9. Canal d’interrupció cap al PC

3.1.2.3 Distribució de Memòria

L’espai de memòria que ocuparà la targeta dins del PC serà:

- Adreça base+0h fins Adreça base+3FFFh (espai DPRAM)

Page 35: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Elements per la Comunicació Xavier Pallàs i Sergi Aluja

29

3.1.2.4 Registres

Adreça Nom Funció

Adreça base + 0h Registre 1 Ajust de consistència

Adreça base + 1h Registre 2 Reset i byte de identificació

Adreça base + 2h Registre 3 Lloc interrupció

Adreça base + 3h Registre 4 Reservat

Adreça base + 4h Registre 5 Reservat

Adreça base + 5h Registre 6 XTESTO

Adreça base + 6h Registre 7 Reservat

Adreça base + 7h Registre 8 Reservat

Taula 10. Funcions dels Registres adreçables del IM181

3.1.2.5 Pins cap a l’Interfície PROFIBUS

L’interfície cap a PROFIBUS es una RS485 amb 9 pins (DB9) i es corresponenamb:

Pin 1: sense connectar

Pin 2: sense connectar

Pin 3: Línia B

Pin 4: RTS

Pin 5: Terra

Pin 6: +5V

Pin 7: sense connectar

Pin 8: Línia A

Pin 9: sense connectar

3.1.3 IM-183

3.1.3.1 Característiques

La IM183 possibilita una connexió específica de client a una xarxa PROFIBUS-DP. La interfície PROFIBUS es fonamenta en el SPC3 i la RS485. La placa serveix com aplataforma hardware per a proves de firmware i demostracions a clients així com a mòdulde sistemes específics. La distribució de memòria de dades i les àrees de CS s’hand’adaptar als requeriments del SPC3.

El baudrate per al RS485 és, en concordància de l’ASIC utilitzada, de fins a 12Mbaud amb l’SPC3 i la temperatura de funcionament pot variar entre 0º... +70ºC

Page 36: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Elements per la Comunicació Xavier Pallàs i Sergi Aluja

30

3.1.3.2 Diagrama de Blocs

Figura 10. Diagrama funcional del IM181

3.1.3.3 Descripció Funcional

El mòdul conté les següents característiques:

- Processador 80C32/20 MHz

- 32 KB SRAM

- Una EPROM de 64 KB, d’on mitjançant un jumper es poden seleccionar 32o 64 KB

- Bloc oscil·lador de 20 MHz que fa de rellotge del processador

- Registre d’adreces per A(7:0)

- Descodificador CS per als bits d’adreces més alts A(15:12)

- Watchdog i RESET generats amb el bloc MAX 705. El temps de watchdoges carrega constantment. Es monitoritza la tensió d’alimentació viainterfície. El watchdog es pot desactivar mitjançant un jumper.

- El reset de l’SPC3 es fa per software.

- L’ASIC SPC3 per l’enllaç PROFIBUS funciona a un baudrate màxim de 12Mbaud. Un bloc oscil·lador de 48 MHz fa de rellotge permanentment delSPC3.

- Per la interfície RS232, utilitza la UART del 80C32. Les senyals s’apliquena un connector de 14 pols. Les senyals UART s’apliquen a l’interfície host.Es pot desactivar la RS232 mitjançant el pin 5 del Port P3 a nivell baix.

Page 37: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Elements per la Comunicació Xavier Pallàs i Sergi Aluja

31

- Mitjançant la interfície host (connector de 50 pols) es subministra al mòdulla alimentació +5V. Esta protegida contra la inversió de polaritat amb undiode i té un corrent màxim de 100mA. El bus de dades/adreces, les senyalsde control rellevants i els bits dels ports del 80C32 s’apliquen en paral·lel alconnector. Les línies de connexió d’aquestes han de ser molt curtes o s’hande gestionar externament. A més, han d’acabar amb una resistència de pull-up.

- El RS485 té un funcionament correcte per a un màxim de 12Mbaud.S’utilitzen drivers i optoacopladors ràpids i sense soroll. Les senyalsd’aquesta interfície s’apliquen a un connector de 10 pols. Per l’aïllament,una segona font d’alimentació aïllada de +5V ha de ser subministrada via lainterfície host de 50 pols. A les senyals d’ASIC de Profibus no es potaccedir mitjançant la interfície host. Esta protegida contra la inversió depolaritat amb un diode i té un corrent màxim de 100mA.

3.1.3.4 Interfícies Software

3.1.3.4.1 Distribució de MemòriaMitjançant el senyal XPSEN, el processador diferència físicament entre memòria

de dades i de programa a l’hora d’accedir al bus. El que no pot diferenciar és entre lamemòria de dades i l’àrea de E/S. En el mode 80C32, el mateix SPC3 genera internamentel senyal CS amb el bit d’adreces més alt. L’adreça d’inici del SPC3 és sempre la 0000Hmentre que la de la SRAM es situa a la 8000H. El bit d’adreces AB12 s’inverteix al’entrada de l’ASIC així que, realment, l’adreça inicial de l’SPC3 és la 1000H. Des delpunt de vista del processador, l’SPC3 ocupa un espai de 1,5Kbyte.

Memòria de programa:

Àrea d’adressament Tamany de la memòria

FFFFh

8000h

32k x 8

7FFFh

0000h

32k x 8

Taula 11. Adreces de memòria de la EPROM

Variants:

- 32 Kbyte EPROM, reflexada. Degut a una codificació d’adrecesincompleta, el processador troba el mateix contingut en l’àrea 0000H -7FFFH que en l’àrea 8000H - FFFFH.

- 64 Kbyte EPROM en l’àrea 0000H-FFFFH

Page 38: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Elements per la Comunicació Xavier Pallàs i Sergi Aluja

32

Es fa la distinció en la targeta mitjançant un jumper:

o 1-2 => 64 kByte

o 2-3 => 32 kByte

Memòria de dades i senyal CS:

Àrea d’adressament Tamany de la memòria Funció

FFFFh

8000h

32k x 8 SRAM

7FFFh

4000h

16k x 8 Lliure

3FFFh

3000h

4k x 8 XCS2 (Interfície d’E/S pelHost)

2FFFh

2000h

4k x 8 XCS1 (Interfície d’E/S pelHost)

1FFFh

1600h

15FFh

1000h

4k x 8 Àrea del ASIC (SPC3)

0FFFh

0000h

4k x 8 Lliure

Taula 12. Adreces de la memòria de dades

Els senyals CS es generen per accessos a la memòria de dades i a la de programa.Per tant, només són vàlids amb el senyal R/W.

3.1.3.4.2 Assignació dels Ports del 80C32

Port Senyal Tipus Funció

P0.0 ABD0 I/O Adreça i bus de dades multiplexats, Bit 0

P0.1 ABD1 I/O Adreça i bus de dades multiplexats, Bit 1

P0.2 ABD2 I/O Adreça i bus de dades multiplexats, Bit 2

P0.3 ABD3 I/O Adreça i bus de dades multiplexats, Bit 3

P0.4 ABD4 I/O Adreça i bus de dades multiplexats, Bit 4

P0.5 ABD5 I/O Adreça i bus de dades multiplexats, Bit 5

P0.6 ABD6 I/O Adreça i bus de dades multiplexats, Bit 6

Page 39: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Elements per la Comunicació Xavier Pallàs i Sergi Aluja

33

P0.7 ABD7 I/O Adreça i bus de dades multiplexats, Bit 7

P2.0 AB8 O Bus adreces, Bit 8

P2.1 AB9 O Bus adreces, Bit 9

P2.2 AB10 O Bus adreces, Bit 10

P2.3 AB11 O Bus adreces, Bit 11

P2.4 AB12 O Bus adreces, Bit 12

P2.5 AB13 O Bus adreces, Bit 13

P2.6 AB14 O Bus adreces, Bit 14

P2.7 AB15 O Bus adreces, Bit 15

P3.0 RXD I Rebuda de dades en sèrie RS232

P3.1 TXD O Enviament de dades en sèrie RS232

P3.2 XINT0 I Interrupció del SPC3, actiu a nivell baix

P3.3 XINT1 I Interrupció per l’interfície del host, actiu a nivell baix

P3.4 XRESSPC O Reset per software al SPC3

P3.5 P3_5 I/O Deshabilita el driver RS232, actiu a nivell baix

P3.6 XWR O Escriure activat a nivell baix

P3.7 XRD O Llegir activat a nivell baix

P1.0 P1_0 O Retrigger del watchdog per software

P1.1 P1_1 I/O No assignada

P1.2 P1_2/RTS O Petició d’enviament RS232

P1.3 P1_3/CTS I Confirmació d’enviament RS232

P1.4 P1_4 I/O No assignada

P1.5 P1_5 I/O No assignada

P1.6 P1_6 I/O No assignada

P1.7 P1_7 I/O No assignada

Taula 13. Funcions dels pins dels Ports 1 , 2 i 3.

3.1.3.5 Concepte de EMC

La pantalla es connecta externament en l’aplicació del mòdul. La interfície RS485es troba aïllada. A més, s’ha de tenir en compte que el cable trenat per la connexió de busha de ser tant curt com sigui possible, en el nostre cas és 1 metre.

Page 40: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Elements per la Comunicació Xavier Pallàs i Sergi Aluja

34

3.2 Software

3.2.1 COM Profibus

3.2.1.1 Descripció

Aquest software ens serveix per fer la parametrització dels elements d’una xarxaProfibus, on donem d’alta nous elements. Funciona sobre Windows 3.1 i W-95.

Dins el paquet d’aquest software s’inclouen fitxers per el mòdul IM180, ambconfiguració del master (SI0008AX.2MH) i la seva icona (IM180.BMP), o la sevaconfiguració com a slave (SI8080AX.200)

També conté un munt de fitxers GSD de diferents tipus d’elements que podenintegrar una xarxa Profibus. Dins d’aquests esta el fitxer pel nostre esclau IM183(SIEM008.GSD)

3.2.1.2 Funcions

Depenent de COM Profibus es poden carregar més o menys funcions al mòdulIM180, aquesta informació la enviem mitjançant un fitxer binari (*.2bf). Les diferentsfuncions que podem realitzar son:

- Veure la diagnosis del IM 180

- Veure la diagnosis dels esclaus que pengen del IM 180

- Carregar el fitxer binari al IM 180

- Descarregar el fitxer binari del IM 180

- Activar les dades binàries del IM 180

3.2.1.3 IM 180 Master

Configurant l’IM180 com a Master es compliran els següents requisits:

- Software del Master actiu.

- Software d’ordres DP actiu

- Actualització de l’estat del master, el sistema de diagnosi i la llista detransferència

- Segons elecció, es poden tenir els següents estats

Page 41: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Elements per la Comunicació Xavier Pallàs i Sergi Aluja

35

Taula 14. Modes de funcionament del IM180 com a Master

- Les sortides dels esclaus parametritzats es borren sota les següents condicions:

o Transició de l’esclau de l’estat DIAG1 a WAIT_PRM

o Transició de l’esclau de l’estat DIAG2_STATUS a DIAG2

o Transició del master de l’estat OPERATE a CLEAR

3.2.1.4 IM180 Slave

Configurant l’IM180 com a Slave es compliran els següents requisits:

- Software d’esclau actiu

- Actualització del byte d’estat i del byte de dades d’informació

- Es disposa d’un identificador del IM180 Slave al byte de dades d’informació

- Les sortides en la DPRAM corresponen a les entrades del master parametritzat

- Les entrades en la DPRAM corresponen a les sortides en el master parametritzat

- Els mecanismes d’accés per ajust i lectura de entrades/sortides son els mateixosque quan funciona com a Master.

- Es pot ajustar la diagnosi d’esclau de la IM180

- Aquesta diagnosi no es pot llegir de la DPRAM

- Les accions de PROFIBUS segons els estats son:

Estat Explicació

OFFLINE IM180 com a master no envia dades a PROFIBUS

STOP IM180 com a master es troba en mode de pas d’indicador

CLEAR IM180 com a master envia telegrames de borrat als esclaus

OPERATE IM180 com a master envia telegrames de dades d’usuari als esclaus

Estat Explicació

OFFLINE IM180 com a esclau no envia dades a PROFIBUS

STOP IM180 com a esclau no envia dades a PROFIBUS

CLEAR IM180 com a esclau es troba actiu

OPERATE IM180 com a esclau es troba actiu

Page 42: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Elements per la Comunicació Xavier Pallàs i Sergi Aluja

36

Taula 15. Modes de funcionament del IM180 com a Esclau

- Les entrades de l’esclau es borren quan es donen les següents condicions:

o L’esclau es troba en l’estat WAIT_CFG

o El master envia una ordre de control Global

3.2.1.5 IM180 Master/Slave

Els modes d’operació en aquest funcionament son els següents:

Taula 16. Modes de funcionament del IM180 com a Master/Esclau

3.2.1.6 Esclaus Compartits

Utilitzant aquest ajustament, els esclaus que tenen un altre master parametritzatpoden ser activats amb el software del master així que es poden llegir les entrades a laDPRAM de la IM180. Aquesta carrega les entrades de manera cíclica amb la ordreREADINPUT.

3.2.1.7 Fitxer de Paràmetres

La targeta IM-180 s’ha de configurar mitjançant un fitxer binari de paràmetres que seli ha de carregar. Aquesta configuració es crea amb el COM PROFIBUS.

Aquest fitxer es pot enviar per software en estat offline o online. Així que, quanutilitzem les funcions online, el fitxer de dades binari es pot enviar via PROFIBUS a laIM-180.

Estat Explicació

OFFLINE IM180 no envia dades a PROFIBUS

STOP IM180 com master es troba en mode pas d’indicador

IM180 com a esclau només envia RS al master

CLEAR IM180 com a esclau es troba actiu

IM180 com master envia missatges d’esborrat als esclaus

OPERATE IM180 com a esclau es troba actiu

IM180 com master envia missatges de dades d’usuari als esclaus

Page 43: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Elements per la Comunicació Xavier Pallàs i Sergi Aluja

37

Per a crear aquesta configuració, obrirem el software COM PROFIBUS i desprèsseguirem els següents passos:

1. Introduir els arxius GSD

Seleccionem la ordre del menú Archivo > grabar archivo GSD. Un copfet això, obtindrem un catàleg de hardware on es mostren totes les estacions delbus configurables. Només haurem de fer això en el cas que desprès de l’arrancs’hagi copiat un nou arxiu GSD en el subdirectori ...\gsd de COM PROFIBUS osi s’ha modificat en aquest un arxiu gsd ja existent.

2. Composició de l’estructura del bus

Seleccionarem les estacions que formaran part de la nostra xarxaPROFIBUS , tant masters DP com a esclaus DP, en la finestra derepresentació gràfica. Desprès es continuarà ajustant paràmetres.

o Diversos masters en un bus. Si hi ha connectats diversos masters DP, espot commutar durant la configuració entre la representació de tot el buso la d’un sistema mestre mitjançant la ordre de menú Ver >Representación de la red o bé Ver > Sistema maestro <i>. En elnostre cas, la xarxa només es formada per un master i un esclau així queaquesta ordre no s’utilitzarà.

o Composició de l’estructura gràfica del bus. Es selecciona del catàleghardware el master DP i l’esclau DP i es desplacen mitjançant elDrag&Drop cap a la finestra de la dreta per a la representació gràfica delbus. En el nostre cas, es selecciona Maestro DP => IM 180 MASTER=> PC-EKIT4 i es situarà com un node a la xarxa PROFIBUS. Perseleccionar l’esclau el trobarem a Esclavo DP => Generalidades => ····=> Test SPC3/IM183-1

Page 44: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Elements per la Comunicació Xavier Pallàs i Sergi Aluja

38

Figura 11. Vista de la xarxa PROFIBUS

3. Introducció dels paràmetres del bus

Aquests paràmetres regeixen el funcionament de tota la xarxaPROFIBUS. Si l’estructura del bus consta de més d’un sistema mestre, noméscaldrà ajustar els paràmetres del bus en un d’ells. Per modificar aquestsparàmetres anirem a :

o Configurar > Parámetros del bus i ens apareixerà el quadre de diàleg“Parámetros del bus”.

o Es selecciona el perfil de bus “Profibus-DP”. Aquest perfil funcionanomés quan hi ha connectats al bus masters DP segons la norma EN50170, vol.2, PROFIBUS. Els perfils de bus proporcionen uns valorsestàndards per a diferents aplicacions de PROFIBUS. Cadascund’aquests perfils comprèn paràmetres calculats i ajustats per COMPROFIBUS en funció de la configuració, el perfil i la velocitatcorresponents.

o Selecció de la velocitat en bauds a “12000.0 Kbauds”. Aquesta velocitatde transmissió regeix tota la xarxa PROFIBUS-DP, així que totes lesestacions que operin en ella han de suportar la velocitat elegida.

4. Introducció dels paràmetres del master

Mitjançant els paràmetres del master es determina com es direccionada la perifèriadescentralitzada i com s’ha de comportar el master DP durant una anomalia.

Page 45: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Elements per la Comunicació Xavier Pallàs i Sergi Aluja

39

o Introduir paràmetres. Fent doble click sobre l’icona del master apareix lafinestra de “ Parámetros maestros”. Aquí es poden ajustar els següentsparàmetres:

? Direcció PROFIBUS. Deixarem l’adreça per defecte, la “1”.

? Tipus de direccionament. S’activarà el “ Pàgina P”

? Número del master. Es queda a “0”

? Mode multiprocessador. No activat

? Vigilància d’exploració per a esclaus. Activat. Si es trobaactivada la vigilància d’exploració, en cas de error enl’intercanvi de dades amb el master DP, l’esclau pot reaccionardintre d’un temps de vigilància configurat. Un cop pasta aquesttemps, l’esclau passarà a un estat segur, o sigui, totes les sevessortides es posen a estat “0” o s’envien valors substitutius.

? Mode d’alarmes. Deixar a “QVZ”.

Si s’han d’utilitzar diverses CPU’s i masters en un host, llavorss’haurà d’activar el mode multiprocessador.

5. Introducció dels paràmetres de l’esclau

Aquesta opció permet configurar tots els esclaus de la xarxa PROFIBUS, iconcretament, en aquest projecte es el IM 183. Fent doble click sobre l’esclau que es volparametritzar, apareix el quadre de diàleg “ Propiedades del esclavo”.

Figura 12. Quadre de diàleg

Paràmetre Explicació Valor

(Cas particular)

Adreça PROFIBUS Adreça de l’esclau en la xarxa “3”

Ordres de control Possibilitat de SYNC o FREEZE Freeze activat

Master parametrització Segons master del que penja Mastersystem<1>

Page 46: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Elements per la Comunicació Xavier Pallàs i Sergi Aluja

40

Vigilància d’exploració de l’esclau Activa/Desactiva la vigilància “Actiu”

Mode d’alarmes Forma en que avisa d’anomalies “QVZ”

Taula 17. Valors de les propietats de l’esclau

6. Configurar l’esclau DP

En el quadre de diàleg de “Propiedades del esclavo”, polsarem el botó “Configurar”.

Figura 13. Quadre de configuració de l’esclau

7. Emmagatzenament de la configuració.

Un cop tenim la xarxa configurada, s’ha de guardar la configuració anant a Archivo> Guardar Como. La configuració de l’estructura del bus es guarda en l’arxiu de programaen format *.pb5 i ja esta llest per ser exportat als masters DP.

8. Transferència de la configuració al master DP

Per a transferir la configuració als masters DP, COM PROFIBUS s’ha de trobar enestat online. Per fer això s’han de complir els següents requisits:

o El PC (amb targeta PROFIBUS) ha d’estar connectat a la xarxa

o Ha d’estar ajustada la interfície PC.

o Ha d’estar parametritzada la targeta de memòria per al IM 180.

Per a commutar el COM PROFIBUS de l’estat offline a online, només calque s’executi qualsevol funció DP online i es commuta automàticament. Per adesconnectar, amb el menú de comandaments Servicio > Connectar offline PG/PC.

COM PROFIBUS exporta cada cop només les dades d’un sistema master almaster DP. Es a dir, s’ha de transferir per a cada master DP successivament lesdades de configuració del respectiu sistema master. Així, si la xarxa PROFIBUSconstés de més d’un sistema mestre i es modifica la parametrització d’un d’ells,s’hauran de reparametritzar els demés ja que es poden presentar anomalies degut apossibles variacions en els temps de vigilància d’exploració.

Page 47: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Elements per la Comunicació Xavier Pallàs i Sergi Aluja

41

Un cop assegurat això, amb la ordre de menú Archivo > Exportación >Maestro DP

- Haurem d’indicar l’adreça PROFIBUS del master DP i apareixerà el quadre dediàleg “Exportación maestro DP”. El software proposa un temps de vigilànciad’exploració basat en l’estructura del bus i la velocitat en bauds, el qual pot seracceptat o augmentat. Acceptar i es formularà la pregunta de si s’ha decommutar a STOP el master DP.

- El master DP passa a STOP, independentment de la posició del selector demode d’operació. COM PROFIBUS transfereix el conjunt de paràmetres almaster DP però segueix funcionant amb l’antic conjunt de paràmetres. Acteseguit, COM PROFIBUS pregunta si es vol que els paràmetres transferitss’activin immediatament en el master DP. Si només existeix un master DP en laxarxa, s’ha d’activar el conjunt de paràmetres mitjançant “Sí”. Si n’hi ha mésd’un, s’ha de contestar “No”, transferir totes les dades de configuració alsdiversos masters DP i activar el conjunt mitjançant Servicio > activar juego deparámetros.

Existeix una altra forma de transferir el fitxer de configuració al master DP.Ens saltarem els punts 8 i anirem a l’ordre de menú Archivo > Exportación >Archivo binario.

- Aquesta ordre ens crea un fitxer binari de sufix *.2bf exportable al master. Aixòes pot fer si el master no suporta la funció “Exportar datos al maestro DP” o enqualsevol cas.

- Desprès executem el software master anomenat DPMT i al menú IM-180Commands > Parameters to IM180. Desprès s’ha d’introduir el nom del fitxer“*.2bf ” que s’ha de trobar en el mateix directori on tenim l’executable i el“.cfg” del DPMT.

- En acceptar es pregunta si es vol fer un reset, el qual servirà per actualitzar eljoc de paràmetres.

Normalment es treballa amb un arxiu de programa existent o se’n crea un, però encasos excepcionals es pot necessitar la funció Importar. En cas de pèrdua d’aquests arxiuspodem fer la operació inversa a la descrita anteriorment. Això es, llegir la configuració delsmasters DP de la xarxa PROFIBUS. En cadascun dels processos d’importació, COMPROFIBUS rep únicament les dades d’un sistema master i, només desprès d’haver–loscarregat tots es pot es pot formar l’estructura completa de bus i emmagatzemar-la en unarxiu de programa. Existeixen dues vies inverses als dos processos d’exportació deconfiguració:

- 1er) La ordre de COM PROFIBUS Archivo > Importación > Maestro DPimporta un fitxer *.pb5 que conté la configuració i els paràmetres del sistemamaster. Desprès es mostra la xarxa en l’entorn gràfic.

- 2on) Crearem un fitxer binari amb el software DPMT mitjançant IM-180Commands > Parameters from IM180. Ens demanarà un nom de fitxer i elguardarà en el directori on estigui l’executable del DPMT. Llavors obrirem elCOM PROFIBUS i des de Archivo > Importación > Archivo binario, aquest esconverteix en un format llegible que contindrà un sistema master.

Page 48: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Elements per la Comunicació Xavier Pallàs i Sergi Aluja

42

3.2.2 DPMT

El software “dpmt.exe” es un software de demostració per provar el “Developmentkit 4” que inclou els mòduls IM180, IM181, IM183 i IM184. Junt amb aquest executabletenim el fitxer de configuració “dpmt.cfg” (aquests dos fitxers han d’estar junts al mateixdirectori) que conté la configuració per defecte que coincideix amb el dels mòduls:

; Configuration file for IM180 Control program "DPMT"

DPR_BASIS = $D8000000 ; Basic address of Dual-Port-RAM as

; 4digit Segment 4digit Offset. Data in Hex

; with sign "$".

DPR_SIZE = $10 ; KB-Size of DPRAM in Hex.

INT_NUM = $00 ; Number of the interrupt in Hex.

PORT_BASIS = $340 ; Basic address of the I/O-port in Hex.

; END OF FILE: DPMT.CFG

Si fem alguna modificació en aquest fitxer ens hem d’assegurar de fer les correccionshardware corresponents.

Aquest programa ens facilita la comunicació amb el master IM180 via la Dual PortRAM. Amb això podem passar el master a estats de OPERATE, STOP, CLEAR... A partpodem veure els bytes de entrades i sortides, els missatges de diagnosis...

3.2.2.1 Descripció del Programa

Al executar el fitxer “dpmt.exe” el primer que ens apareix es la possibilitat de ferun reset de hardware al IM 180. A continuació ens apareix el menú general amb unainterfície bastant senzilla. Tenim uns menús desplegables i informació de l’estat del master.

Per accedir al seguit d’opcions cal el teclat i ho farem mitjançant “ALT+...”

3.2.2.2 Submenu View:

Page 49: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Elements per la Comunicació Xavier Pallàs i Sergi Aluja

43

Figura 14. Vista de les opcions del Submenú View

Algunes de les funcions son les següents:

? SLAVE INFO DATA:

Dins del menú “View” podem fer aquesta tria,

Amb aquesta opció sabrem la configuració de cada esclau. La informació que esmostra per pantalla ve ordenada de la següent manera:

1ª columna: adreça de l’esclau, valor d’offset per entrades, offset sortides i offsetdiagnosis

2ª columna: consistència de les dades, longitud de les entrades, longitud de lessortides i longitud de la diagnosis.

Per una interpretació precisa de la consistència va bé aquesta taula:

Bit Descripció

Entrades 7 0 = Sense buffer / 1 = Amb buffer

6, 5 00 = Sense consistència

01 = Consistència curta

10 = Consistència llarga

11 = Reservat

4 = 0

Sortides 3 0 = Sense buffer / 1 = Amb buffer

2, 1 00 = Sense consistència

01 = Consistència curta

10 = Consistència llarga

11 = Reservat

0 = 0

Taula 18. Descripció dels bits

Sense consistència: Tenim accés directe a la DPRAM

Consistència curta: Hem d’assertar el bit de llegir/escriure cada vegada que fem unaccés a DPRAM.

Consistència llarga: Hi ha un buffer a la RAM del IM 180 que conté les dades.

A destacar que això de la consistència es interessant tenir-ho activat quan hi hanvaris bytes de dades que s’han de transferir sense interrupció en una mateixa cadena.

3ª columna: Mode d’operació de l’esclau. Comptador de diagnosis.

Bit Indicació

7 IM 180 com esclau

Page 50: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Elements per la Comunicació Xavier Pallàs i Sergi Aluja

44

6...3 Reservats

2 Read_Outputs

1 Read_Inputs

0 XchangeData

Taula 19. Descripció dels bits

? DPRAM:

Dins del menú “View” també tenim aquesta possibilitat on veurem el valor de cadaposició dels bytes de la DPRAM. Les dades es van actualitzant cíclicament.

? INPUTS:

Tenim la possibilitat de veure les entrades provinents dels esclaus, ens anemdesplaçant per veure els diferents esclaus.

? OUTPUTS:

Aquí veiem les sortides que enviem als esclaus, ens anem desplaçant per veure elsdiferents esclaus.

Per veure tant els “outputs” com els “inputs” hem d’haver fet una “caça” de les decada esclau amb el comandament “Slave info data”.

3.2.2.3 Submenú IM180 Commands

Figura 15. Vista de les opcions del Submenú IM180 Commands

? SOFTWARE RESET:

Aquest reset es pot fer amb diferents possibilitats:

Tecla de funció Possibilitat

F1 IM180 a STOP

Page 51: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Elements per la Comunicació Xavier Pallàs i Sergi Aluja

45

IM180 a CLEAR

IM180 a OPERATE

IM180 a OFFLINE

F2 Sense canvi de paràmetres

Agafar paràmetres de la OTP

Agafar paràmetres per defecte

F3 Sense missatge davant error del sistema

Amb missatge davant error del sistema

Taula 20. Funcions del Reset per software

Atenció: Si canviem a l’estat de OFFLINE, només podem sortir d’ell mitjançant un“Hardware Reset”

? SLAVE INFO DATA:

Amb aquest comandament fem una “caça” de l’estructura de dades dels esclaus. Esimportant per després poder veure les entrades/sortides, diagnosis i l’estructura de lesdades.

? STOP/OPERATE/CLEAR:

Amb aquestes possibilitats anem commutant l’IM180 cap a cadascun dels seusestats.

? PARAMETERS TO IM180:

Amb aquesta funció enviem un fitxer binari al IM180, aquest fitxer el podem havercreat amb el COM PROFIBUS per exemple. Aquests paràmetres que li enviem es posaranen funcionament després de un Hardware Reset o de un Software Reset. Aquesta funciós’ha d’executar només en el Mode Stop, si no ho fem així no sabem que passarà al bus.

? PARAMETERS FROM IM180:

Al revés de l’anterior funció, aquí agafem les dades del IM180 i les guardem en unfitxer binari. Es pot realitzar des de qualsevol mode de funcionament del IM180.

? SLAVE ADRESS:

Aquesta funció ens permet canviar l’adreça dels esclaus (si l’esclau esta configuratamb aquesta opció)

? IMPULS:

Amb aquesta funció marquem un nº de pulsos per la senyal XTESTO, amb unabase de temps = 25.6? s. Es pot utilitzar com a control de temps quan utilitzeminterrupcions.

Page 52: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Elements per la Comunicació Xavier Pallàs i Sergi Aluja

46

3.2.2.4 Submenú IM180 New Commands:

Figura 16. Vista de les opcions del Submenú IM180 New Commands

? DIAGNOSTIC MASTER:

Aquí fem una captura de la diagnosis des del IM 180. Aquestes dades s’indiquendes del comandament “View- Commnication channel”, les dades que apareixen marxaranquan demanem un altra feina al IM 180.

? DIAGNOSTIC SLAVE:

Seguidament em d’introduir l’adreça de l’esclau del qual volem saber la diagnosis.Igual que a l’anterior anirem al “View- Commnication channel” per veure les dades. Quaniniciem una nova tasca pel IM 180 aquestes dades desapareixeran.

3.2.2.5 Submenú IM181 Commands:

Figura 17. Vista de les opcions del Submenú IM181 Commands

? RESET SIGNAL TO IM180:

Aquesta opció fa un reset hardware al IM180. El IM180 passa al mode STOP.

Page 53: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

47

4 Desenvolupament de la Placa Prototipus

4.1 Hardware

4.1.1 SPC3

4.1.1.1 Distribució de Memòria del SPC3

El xip SPC3 conté una memòria RAM de 1,5 kByte els quals es troben dividits en elssegüents registres:

? Paràmetres de processament

? Cel·les internes de treball

? Paràmetres organitzatius

? Buffers DP:

1) Dades Entrada

2) Dades Sortida

3) Diagnosi

4) Dades de parametrització

5) Dades de configuració

6) Buffers Auxiliars

7) Buffers SSA(Set Slave Address)

4.1.1.2 Registres per Correcte Funcionament

Existeixen 2 registres que determinen el funcionament hardware de l’ASIC i tambéla forma de processament dels missatges.

- Registre de Mode 0

La càrrega d’aquests paràmetres te lloc durant l’estat offline . Aquí es podenactivar/desactivar funcions com son la congelació(freeze) o la sincronització(sync).

- Registre de Mode 1

Aquí controlarem els finals d’interrupció, resets del watchdog i la posada enmarxa del SPC3.

4.1.1.3 Registre d’Estat

Aquest registre ens mostra l’estat actual del SPC3. Només pot ser llegit, no hi podemaccedir per escriptura.

Page 54: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

48

4.1.1.4 Controlador d’Interrupcions

El controlador d’interrupcions ens informarà d’errors i missatges indicatius quetinguin lloc en l’SPC3. Pot emmagatzemar fins a 16 events i te una única sortidad’interrupció. Conté els següents registres típics de qualsevol controlador:

IRR(Interrupt Request Register)IMR(Interrupt Mask Register)IAR(Interrupt Acknowledge Register)IR(Interrupt Register)

Degut a que l’emulador utilitza totes les entrades d’interrupció per la sevacomunicació el que hem fet és emmascarar totes les interrupcions en l’IMR i fer un pollingconstant als bits necessaris en el registre IRR.

4.1.1.5 Temporitzador Watchdog

Aquest és intern a l’SPC3 i te tres modes de treball, o sigui, tres estats possibles:

- Identificació automàtica del Baud Rate. Es fa cada vegada que hi ha un RESET o siel watchdog expira en l’estat de monitorització del Baud Rate

- Monitorització del Baud Rate. El Baud Rate trobat es monitoritza constantment perevitar errors o canvis.

- Monitorització del Temps de Resposta.

4.1.1.6 Interfície PROFIBUS-DP

Estructura del buffer DP

El mode de funcionament DP s’activa a l’SPC3 posant ‘DP_Mode=1’ del Registre demode 0. En aquest procés, els següents SAPS es reserven per al mode DP:

- SAP Defecte: Intercanvi de dades (Write_Read_Data)

- SAP53: reservat

- SAP55: canvi d’adreça de l’estació (Set_Slave_Address)

- SAP56: Llegir entrades (Read_Inputs)

- SAP57: Llegir sortides (Read_Outputs)

- SAP58: Comandes de control al esclau DP (Global Control)

- SAP59: Llegir les dades de configuració (Get_Config)

- SAP60: Llegir la informació de diagnosi (Slave_Diagnosis)

- SAP61: Enviar paràmetres de càrrega (Set_Param)

- SAP62: Dades de chequeig de configuració (Check_Config)

El SPC3 de l’esclau DP porta integrat el protocol i el seu funcionament ésindependent. L’usuari ha de parametritzar l’ASIC adequadament i processar i reconèixerels missatges transferits. Normalment tots els SAP’s estan activats, amb excepció delDefault SAP, el SAP 56, SAP57 i SAP58. Aquests no s’activen fins que la màquinad’estats de l’esclau DP (DP_SM) arriba a l’estat ‘DATA_EX’. A mes, l’usuari pot

Page 55: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

49

desactivar el SAP55 mitjançant el punter del buffer R_SSA_Puf_Ptr que s’ha de posar a‘00H’.

La estructura del buffer DP_SAP es mostra en la següent figura. L’usuari configuratots els buffers (longitud i buffer inicial) en “l’estat offline”. Durant aquesta operació, laconfiguració dels buffers no s’ha de canviar, excepte per la longitud dels buffers d’entradai sortida (Dout/Din buffers).

L’usuari ha d’adaptar aquests buffers en l’estat ‘Wait_Cfg’ desprès del telegramade configuració (Check_Config). En l’estat d’intercanvi de dades (DATA_EX) noméss’haurà d’acceptar la mateixa configuració.

Figura 18. Estructura dels buffers de l’SPC3

L’estructura dels buffers es divideix en:

o Buffer de dades

Page 56: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

50

o Buffer de diagnosi

o Buffer de control

Tant les dades d’entrada com les de sortida tenen tres buffers disponibles percadascun, amb la mateixa longitud. La funció d’aquests buffers és donar la possibilitat decanviar-se entre ells. Un buffer s’assigna per a la transferència de dades ‘D’, un altre per al’usuari ‘U’ i el tercer es troba sempre desocupat en un dels seu dos estats possibles, o béNext ‘N’ o bé Free ‘F’.

Es disposa de dos buffers de longitud variable per a la diagnosi on un d’ells estàsempre assignat al SPC3 per enviament i l’altre, anomenat ‘U’, pertany a l’usuari perpreparació de noves dades de diagnosi.

El SPC3 primer llegeix els diversos missatges de càrrega de paràmetres (adreçad’esclau, paràmetres) i el missatge de configuració des de Aux-Buffer1 o Aux-Buffer2.

4.1.1.6.1 Descripció dels Serveis DP? INTERCANVI DE DADES(SAP PER DEFECTE)

En aquest SAP és on es s’envien dades d’entrada i de sortida entre el master il’esclau. S’arriba desprès de passar per uns altres estats.

? RESERVAT(SAP 53)

? CANVI D’ADREÇA DE L’ESTACIÓ(SAP55)

L’usuari pot activar o desactivar aquesta funció i si està desactivada, l’adreça s’hauràde determinar mitjançant la lectura de interruptors i posteriorment ser escrita al registre deRAM. Aquest servei permet que el mestre enviï a l’esclau una nova adreça.

? LLEGIR ENTRADES(SAP56)

L’SPC3 envia les dades d’entrada, que es troben en un buffer, des de l’esclau cap almestre mitjançant la UART. La velocitat de transmissió de dades és de 12Mbd.

? LLEGINT SORTIDES(SAP57)

L’SPC3 llegeix les dades enviades des del mestre mitjançant la UART. Les dadesseran guardades en un buffer d’on l’usuari anirà a agafar-les.

? ORDRES DE CONTROL A L’ESCLAU DP(SAP 58)

El SPC3 processa una sèrie d’ordres de control enviats pel master, per després actuard’acord amb elles.

? LECTURA DE DADES DE CONFIGURACIÓ(SAP 59).

En aquest SAP es llegeixen les dades de configuració a modificar en cas de canvid’aquestes.

? LECTURA DE INFORMACIÓ DE DIAGNOSI(SAP 60)

El master demana informació de diagnosi a l’esclau i aquest li envia el seu estatactual.

? ENVIAMENT DE DADES D’AJUST DE PARÀMETRES(SAP61)

El SPC3 del im183 rebrà i processarà una sèrie de paràmetres que li envia el master,els quals modificaran el seu comportament.

Page 57: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

51

? TESTEIG DE DADES DE CONFIGURACIÓ(SAP 62)

La configuració que se li dóna a l’esclau per software es compara amb la que li enviael master i s’avalua.

4.1.1.6.1.1 Intercanvi de Dades (SAP per Defecte)Escrivint sortides(WRITING OUTPUTS)

L’SPC3 llegeix les dades de sortida del buffer ‘D’ i desprès de donar-les com alliures d’errors mou el contingut recent al buffer ‘N’. A mes, també es genera lainterrupció ‘DX_Out Interrupt’. Ara, l’usuari ha d’anar a per l’actual dada de sortidaque es troba al buffer ‘N’. El buffer canvia de ‘N’ a ‘U’ amb la ordre‘Next_Dout_Buffer_Cmd’, així que l’actual dada de l’aplicació pot ser reenviada per ala lectura de sortides del mestre.

Si el temps de cicle d’avaluació de l’usuari és menor que el temps de cicle delbus, l’usuari no trobarà cap nou buffer a ‘N’ amb el següent ‘Next_Dout_Buffer_Cmd’.Per tant, l’intercanvi de buffers no es realitza. Sens dubte, a una velocitat detransmissió de 12Mbd és molt probable que el temps de cicle d’avaluació sigui majorque el de bus i, per tant, no succeeixi res d’això. Aquesta velocitat crea una nova dadade sortida disponible a ‘N’ moltes vegades abans que l’usuari vagi a pel següent buffer.Per tant, es garanteix que l’usuari carregarà l’última dada rebuda.

Per a ‘Power_On’, ‘Leave_Master’ i el missatge de control global(Global_Control-Telegram) ‘Clear’, l’SPC3 borra el contingut del buffer ‘D’ i eldesplaça cap a ‘N’. Si l’usuari va a pel contingut d’aquest buffer, durant el‘Nex_Dout_Buffer_Cmd’ visualitzarà el missatge ‘U_Buffer cleared’. Si l’usuarisuposa que el buffer de sortida és mes llarg que les dades, ell mateix ha de borraraquesta diferència de tamany després del telegrama de Chech_Config (això només espot fer durant la fase d’arranc en l’estat “Wait_Cfg”).

Si ‘Diag.Sync_Mode = 1’, el buffer ‘D’ s’omple però no s’intercanvia amb elmissatge Write_Read_Data, sinó que es farà al següent ‘Sync’ o ‘Unsync’.

L’usuari pot llegir l’estat de la gestió del buffer amb la següent codificació delsquatre estats: ‘Nil’, ‘Dout_Puf_Ptr1-3’. El punter a les dades actuals es troba en l’estat‘N’.

Posició BitAdreçaRegistreControl 7 6 5 4 3 2 1 0

Designació

0Ah F U N D Dout_Puffer_SM

X1 X2 X1 X2 X1 X2 X1 X2 Veure sota per codificació

Taula 21. Gestió del buffer Dout_Buffer

Page 58: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

52

Taula 22. Codificació de Dout_Puffer_SM

Quan l’usuari llegeix el ‘Next_Dout_Buffer_Cmd’, obté la informació sobre quinbuffer (U-buffer) li pertany després del canvi o si ha tingut lloc algun canvi.

Posició BitAdreçaRegistreControl 7 6 5 4 3 2 1 0

Designació

0Bh 0 0 0 0 U_

Buffer

Cleared

State_

U_

Buffer

Ind_U_

Buffer

Next_Dout_Buf_Cmd

0 1 Dout_Buf_Ptr11 0 Dout_Buf_Ptr2

1 1 Dout_Buf_Ptr3

0 No nou buffer U

1 Nou buffer U

0 Buffer U conté dades

1 Buffer U borrat

Taula 23. Codificació de Next_Dout_Puffer_Cmd

L’usuari ha de borrar el contingut del buffer ‘U’ durant la inicialització, així que potser que abans del primer cicle de dades s’enviïn unes dades definides (borrades).

? Llegint entrades

L’SPC3 envia les dades d’entrada des del buffer ‘D’, però abans de fer-ho carregael buffer Din de ‘N’ a ‘D’. Si el buffer present a ‘N’ no és nou, no farà cap canvi.

L’usuari crea la nova dada disponible a ‘U’ i, llavors, amb ‘New_Din_buffer_Cmd’el canvia a ‘N’. Si el temps de cicle de preparació és menor que el temps de cicle del bus,no totes les dades d’entrada s’enviaran, només ho seran les més actuals. El que fa llavorsl’SPC3 és enviar la mateixa dada successivament moltes vegades ja que a una velocitat detransmissió de 12Mbd el temps de cicle de preparació normalment és més gran que el delbus.

Durant l’arrancada, desprès que tots els telegrames de configuració i de paràmetreses reconeguin, l’SPC3 va primer a l’estat ‘DATA_EX’ i l’usuari crea llavors el primerbuffer Din disponible a ‘N’ amb el ‘New_Din_Buffer_Cmd’.

Si ‘Diag.Freeze_Mode = 1’, no hi ha cap canvi de buffer abans d’enviar-lo.

X1 X2 Codificació

0 0 Nil

0 1 Dout_Puf_Ptr1

1 0 Dout_Puf_Ptr2

1 1 Dout_Puf_Ptr3

Page 59: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

53

L’usuari pot llegir l’estat de la gestió del buffer amb la següent codificació delsquatre estats: ‘Nil’, ‘Din_Puf_Ptr1-3’. El punter a les dades actuals es troba en l’estat ‘N’.

Posició BitAdreçaRegistreControl 7 6 5 4 3 2 1 0

Designació

08h F U N D Din_Buffer_SM

X1 X2 X1 X2 X1 X2 X1 X2 Veure sota per codificació

Taula 24. Registre per la gestió dels buffers d’entrada

Taula 25. Codificació bits Din_Buffer_SM

Quan l’usuari llegeix el ‘Next_Din_Buffer_Cmd’, obté la informació sobre quinbuffer (U-buffer) li pertany després del canvi.

Posició BitAdreçaRegistreControl 7 6 5 4 3 2 1 0

Designació

09h 0 0 0 0 0 0 X X New_Din_Buf_Cmd

0 0 Din_Buf_Ptr1

0 1 Din_Buf_Ptr2

1 1 Din_Buf_Ptr3

Taula 26. Registre New_Din_Buffer_Cmd

? USER WATCHDOG TIMER

Desprès de la posada en marxa (power-up), és possible que l’SPC3 enviïcontínuament missatges de Write_Read_Data sense que l’usuari carregui les dades delsbuffers Din o creï nous buffers Dout disponibles. Si el processador es penja, el mestre norebrà aquesta informació i, és per això que s’ha implementat un timer anomenat‘User_Watchdog_Timer’ a l’SPC3. Aquest és una cel·la RAM interna de 16 bits quearranca des d’un valor ‘R_User_Wd_Value15..0’ que l’usuari pot variar i és decrementatamb cada missatge Write_Read_Data rebut del SPC3. Si el timer arriba al valor ‘0000hex’,l’SPC3 passa a l’estat ‘Wait_Prm’ i la màquina d’estat DP envia fora el senyal‘Leave_Master’. Per tant, l’usuari ha de carregar el timer cíclicament al valor de sortida i,per fer-ho, s’ha de posar a 1 el bit del senyal ‘Res_User_Wd = 1’ del registre de mode 1.En el moment de la recepció del següent missatge de Write_Read_Data, l’SPC3 torna a

X1 X2 Codificació

0 0 Nil

0 1 Din_Buf_Ptr1

1 0 Din_Buf_Ptr2

1 1 Din_Buf_Ptr3

Page 60: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

54

carregar el timer al valor parametritzat ‘R_User_Wd_Value15..0’ i posa el ‘Res_User_Wd’a 0 (Registre de mode 1). En el moment de la posta en marxa del sistema, l’usuari ha deposar ‘Res_User_Wd = 1’ així que el timer és carregat amb el valor parametritzat.

4.1.1.6.1.2 Ajust de l’Adreça de l’Esclau (SAP55)? Seqüència per la utilització

L’usuari pot desactivar aquesta utilitat carregant el punter a buffer“R_SSA_Puf_Ptr” al valor 00H. Llavors, l’adreça de l’esclau es determinarà a partir de lalectura d’un/uns interruptors i la posterior escriptura al registre de RAM anomenatR_TS_Adr.

Per fer ús d’aquesta utilitat, és necessari tenir disponible una memòria no borrablecom ara una EEPROM, ja que aquí s’hauran d’emmagatzemar “l’adreça d’estació” i elparàmetre ‘Real_No_Add_Change” (‘verdader’=FFh). Desprès de cada arranc causat perun fallo d’alimentació, l’usuari agafarà una altra vegada els valors R_TS_Adr iR_Real_No_Add_Change dels registres en RAM del SPC3.

Si el SAP55 està activat i rebem un telegrama de càrrega de l’adreça de l’esclauacceptat correctament, l’SPC3 entra totes les dades provinents de la xarxa (“net data”) enl’Aux_Puffer1/2, intercanvia aquest pel SSA buffer, emmagatzema la longitud de les dadesentrades al registre ‘R_Len_SSA_Data’, genera la interrupció ‘New_SSA_Data’ i,internament emmagatzema la nova ‘adreça d’estació’ i el nou paràmetre‘Real_No_Add_Change’. Així l’usuari no necessita transferir una altra vegada aquestsparàmetres canviats al SPC3. Desprès que l’usuari ha llegit el buffer, ha de generar el‘SSA_Puffer_Free_Cmd’ (amb una operació de lectura a l’adreça 14h), la qual cosa faràque el SPC3 torni a estar llest per rebre un telegrama de canvi d’adreça d’esclau.

Quan hi ha errors, el SPC3 reacciona independentment.

Posició BitAdreçaRegistreControl 7 6 5 4 3 2 1 0

Designació

14h 0 0 0 0 0 0 0 0 SSA_Puffer_Free_Cmd

Taula 27. Codificació de SSA_Puffer_free_Cmd

? Estructura del telegrama de Set_Slave_Address

Posició BitByte

7 6 5 4 3 2 1 0

Designació

0 Nova Adreça d'esclau

1 Num. Ident Alt

2 Num. Ident Baix

3 Real_No_Add_Change

4-243 Dades addicionalsespecífiques de

l'aplicació

Taula 28. Format del telegrama de Set_SlaveAddress

Page 61: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

55

4.1.1.6.1.3 Llegir Entrades (SAP 56)En aquest cas, l’SPC3 va a buscar les dades igual que ho fa en els missatges de

Write_Read_Data. Si la nova dada d’entrada es troba disponible en ‘N’, abans de serenviada, el buffer es canvia pel ‘D’. En canvi, si ‘Diag.Freeze_Mode = 1’, no hi hauràaquest canvi de buffer.

4.1.1.6.1.4 Llegir Sortides (SAP57)L’SPC3 va a buscar les dades de sortida del buffer Dout a ‘U’. L’usuari haurà de

prefixar les dades de sortida a ‘0’ durant l’arranc amb la finalitat que no es puguin enviaraquí dades no vàlides. Si hi ha un canvi de buffer des de ‘N’ a ‘U’ (mitjançant elNext_Dout_Buffer_Cmd) entre la primera crida de servei i la següent, la nova dada desortida és enviada durant la segona.

4.1.1.6.1.5 Ordres de Control Global ( SAP58 )El propi SPC3 processa els missatges de control global (Global_Control-

Telegrams) del mode ja descrit. A més, aquesta informació es troba disponible per l’usuari.

El primer byte d’aquest tipus de missatge és emmagatzemat en la cel·la de RAMR_GC_Command. El segon byte (Group_Select) es processa internament.

Posició BitAdreçacel·la

RAM7 6 5 4 3 2 1 0

Designació

3Ch Res Res SyncUn

SyncFreeze

Un

freeze

Clear_

DataRes

R_GC_Command

Taula 29. Registre R_GC_Command

Bit Designació Significat

0 Reservat

1 Clear_Data Amb aquesta ordre es borren les dades de sortida de ‘D’ i es canviaa ’N’.

2 Unfreeze Es cancel·la la congelació de dades d’entrada

3 Freeze La dada d’entrada es carrega de ‘N’ a ‘D’ i es congela. No escarreguen noves dades d’entrada fins que el master envia la següent

ordre de congelació.

4 Unsync Aquesta ordre cancel·la la ordre ‘Sync’

5 Sync La dada de sortida transferida amb un missatgeWRITE_READ_DATA es canvia de ‘D’ a ‘N’. La següent dada de

sortida es manté a ‘D’ fins a la propera ordre ‘Sync’

6,7 Reservat Per a futures funcions afegides

Taula 30. Format de dades per al missatge de Global_Control

Page 62: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

56

Si existeix un canvi en el byte de Control_Command de l’últim missatge que es varebre respecte al ja existent, l’SPC3 genera la interrupció ‘New_GC_Command’. Durantl’inicialització, l’SPC3 dona un valor prefixat de 00h a la cel·la de RAM‘R_GC_Command’, la qual pot ser llegida i avaluada per l’usuari.

En el registre de mode haurem d’activar les funcions Sync i Freeze amb la finalitatde que puguin ser portades fora.

4.1.1.6.1.6 Lectura de Dades de Configuració (SAP59)L’usuari guarda la configuració disponible al buffer Read_Cfg però si existeix

algun canvi en ella desprès del missatge de Check_Config, l’usuari ha d’escriure la dadacanviada al buffer Cfg, posar ‘EN_Change_Cfg_Buffer = 1’ i l’SPC3 intercanviarà elbuffer Cfg pel Read_Cfg. Si el canvi en la configuració succeeix durant la operació,l’usuari ha de retornar amb ‘Go_Offline’ a l’estat ‘Wait_Prm’ del SPC3.

4.1.1.6.1.7 Diagnosi de l’Esclau (SAP 60)Hi han dos buffers disponibles per als diagnòstics que poden tenir longituds

diferents entre ells. SPC3 sempre te assignat un buffer de diagnòstics, el qual es utilitzatper crides de diagnòstics. L’usuari pot pre-processar noves dades de diagnosi en paral·lelmitjançant l’altre buffer. Quan les dades de diagnosi han de ser enviades, l’usuari utilitza elcomando ‘New_diag_Cmd’ per fer la petició de l’intercanvi de buffers. L’usuari rep laconfirmació de l’intercanvi mitjançant la interrupció ‘Diag_puffer_Changed Interrupt’.

Quan els buffers són intercanviats, s’activa el ‘Diag_Flag’ intern. Si això succeeix,SPC3 respon durant la següent Write_Read_Data amb una dada de resposta d’alta prioritatque avisa al mestre de que hi ha noves dades de diagnosi presents al esclau. Llavors elmestre carrega les dades de diagnosi en un telegrama de diagnosi d’esclau(Slave_Diagnosis). Un cop s’ha fet això , el ‘Diag_Flag’ es resetejat. En canvi, si l’usuariactiva el senyal ‘Diag.Stat_Diag=1’, llavors el ‘Diag_Flag’ roman activat desprès que elmestre hagi carregat la diagnosi. L’usuari pot enquestar aquest flag al registre d’estat persaber si el mestre ja ha carregat les dades de diagnosi abans que les dades velles siguinintercanviades per les noves.

La codificació de l’estat dels buffers de diagnosi es troba emmagatzemada alparàmetre de processador anomenat ‘Diag_bufferSM’. L’usuari pot llegir aquesta cel·laamb la possible codificació per ambdós buffers: ‘User’,’SPC3’, or ‘SPC3_Send_Mode’.

Posició de Bits DesignacióAdreça

Registre

Control

7 6 5 4 3 2 1 0

0CH 0 0 0 0 D_Puf2 D_Puf1 Diag_Puffer_SM

X1 X2 X1 X2 Veure codificació sota

Taula 31. Bits significatius del registre Diag_Puffer_SM

Page 63: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

57

X1 X2 Codificació

0 0 No els controla ningú

0 1 Usuari

1 0 SPC3

1 1 Mode envio SPC3

Taula 32. Codificació dels bits

El ‘New_Diag_Cmd’ s’accedeix llegint un paràmetre de processador definit i ensdiu quin buffer de diagnosi pertany a l’usuari desprès de l’intercanvi o si els dos bufferspertanyen al SPC3 (‘no Puffer’,’Diag_Puf1’,’Diag_Puf2’).

Posició de BitsAdreça

Registre

Control

7 6 5 4 3 2 1 0

Designació

0DH 0 0 0 0 0 0 New_Diag_Cmd

0 0 No buffer

0 1 Diag_Puf1

1 0 Diag_Puf2

Taula 33. Codificació New_Diag_Cmd

? Estructura dels buffers de Diagnosi

L’usuari transfereix el buffer de diagnosi amb la estructura de sota al SPC3. Elsprimers 6 bytes són “SPACE HOLDERS” exceptuant els tres bits de menys pes del primerbyte. L’usuari emmagatzema els bits de diagnosi ‘Diag.Ext_Diag’,’Diag.Stat_Diag’ i’Diag.Ext_Diag_Overflow’ en aquests tres bits. Els bits restants poden ser assignats enqualsevol ordre. Quan s’envia, el SPC3 pre-processa els primers sis bytes corresponents alestàndard.

Posició BitByte

7 6 5 4 3 2 1 0

Designació

0 Ext_

Diag_

Overf

Stat_diag Ext_Diag Spaceholder

1 Spaceholder

2 Spaceholder

3 Spaceholder

4 Spaceholder

Page 64: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

58

5 Spaceholder

6-n Ho entra l’usuari Ext_Diag_Data

(n max= 243)

Taula 34. Estructura del buffer de diagnosi per transferència al SPC3

Quan fem ‘Ext_Diag_Data’, l’usuari ha d’entrar als buffers les dades de diagnosiinternes del SPC3. Els tres formats disponibles són possibles aquí (device-related, ID-related i port-related). A més, la longitud del buffer també inclou els bytes de diagnosi delSPC3 (R_Len_Diag_Puf1, R_Len_Diag_Puf2).

4.1.1.6.1.8 Enviament de Dades d’Ajust de Paràmetres (SAP61)? Estructura de les dades de paràmetres

El SPC3 ens avalua els primers set bytes de dades (sense user_prm_data), o els vuitprimers (amb el user_prm_data). Aquests set bytes són específics d’acord amb l’estàndardPROFIBUS. El vuitè byte s’utilitza per característiques específiques del SPC3. A més,disposem de bytes addicionals per a l’aplicació.

Posició BitByte

7 6 5 4 3 2 1 0

Designació

0 Lock

Req

Unlo.

Req

Sync

Req

Free

Req

WD

on

Res Res Res Station status

1 WD_Fact_1

2 WD_Fact_2

3 MinTSDR

4 Ident_Number_High

5 Ident_Number_Low

6 Group_Ident

7 0 0 0 0 0 WD_

Base

Dis

Stop

Dis

Start

Spec_User_Prm_Byte

8-243

User_Prm_Data

Page 65: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

59

Byte7

Spec_User_Prm_Byte

Bit Nom Significat Estat perdefecte

0 Dis_Startbit Amb aquest bit posem a OFF la monitorització delbit d’arranc

Dis_Startbit=1.Monitoritzaciódel bit d’arranc

a OFF1 Dis_Stopbit Amb aquest bit posem a OFF la monitorització del

bit de paradaDis_Stopbit=1.Monitorització

del bit deparada a ON

2 WD_Base Especifica el temps base que s’usa com a clock delWD

WD_Base=0=>10msWD_Base=1=>1ms

WD_Base=0Temps base és

10ms

3-7 res Ha de ser parametritzat a 0 0

Taula 35. Format de dades del Set_Param_Telegram

? Seqüència de processament de les dades

En el cas de que la validació de les dades sigui correcta per més de set bytes, el SPC3força les següents reaccions:

o Intercanvia el Aux-Puffer1/2 pel Prm_buffer, guarda la longitud de lesdades d’entrada al registre ‘R_Len_Prm_Data’ i dispara la senyald’interrupció ‘New_Prm_Data’.

o L’usuari ha de respondre mitjançant el ‘User_Prm_Data_Okay_Cmd’ o‘User_Prm_Data_Not_Okay_Cmd’ però no caldrà que reconegui lainterrupció al IAR.

o Els bits de diagnosi pertinents s’ajusten amb el‘User_Prm_Data_Okay_Cmd’ i són enviats a l’estat ‘Wait_Prm’.

o El reconeixement de ‘User_Prm_Data_Okay’ i de‘User_Prm_Data_Not_Okay’ es fa mitjançant accessos de lectura alsregistres de paràmetres ja definits amb els senyals:? ‘User_Prm_Finished’: No hi ha missatge de paràmetres? ‘Prm_Conflict’: Ja hi ha un missatge de paràmetres, processar de

nou.? ‘Not_Allowed’: L’accés no està permès en l’actual estat de bus.

Posició bitAdreçaRegistreControl

7 6 5 4 3 2 1 0Designació

0EH 0 0 0 0 0 0 User_Prm_Data_Okay0 0 User_Prm_Finished0 1 PRM_Conflict1 1 Not_Allowed

Taula 36. Codificació User_Prm_Data_Okay

Page 66: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

60

Posició bitAdreçaRegistreControl

7 6 5 4 3 2 1 0Designació

0FH 0 0 0 0 0 0 User_Prm_Data_Not_Okay0 0 User_Prm_Finished0 1 PRM_Conflict1 1 Not_Allowed

Taula 37. Codificació User_Prm_Data_Not_Okay

En cas que es suposi que es pot rebre un missatge Set_Param addicional mentre esprocessa l’anterior, es retorna el senyal ‘Prm_Conflict’ per confirmar la rebuda del primermissatge Set_Param, ja sigui positiu o negatiu. Llavors, l’usuari ha de repetir la validacióperquè el SPC3 ha creat un nou buffer de paràmetres disponible.

4.1.1.6.1.9 Testeig de la Configuració (SAP62)L’usuari s’encarrega de l’avaluació de les dades de configuració. Un cop l’SPC3 ha

rebut un telegrama de Check_Config vàlid, aquest intercanvia el Aux-Puffer1/2(ja que totsels bytes són entrats aquí) pel Cfg buffer, emmagatzema la longitud de les dades d’entradaal ‘R_Len_Cfg_Data’ i genera la interrupció ‘New_Cfg_Data-Interrupt’. Llavors l’usuariha de comprovar el ‘User_Config_Data’ i haurà de respondre, o bé amb‘User_Cfg_Data_Okay_Cmd’ o amb ‘User_Cfg_Data_Not_Okay_Cmd’ (reconeixement alCfg_SM).

L’usuari respon una altra vegada retornant la interrupció de ‘New_Cfg_Data’ i noha de ser reconegut en el IAR.

Si es detecta una configuració incorrecta, es canvien diversos bits de diagnosi i lamàquina d’estats passa a l’estat ‘Wait_Prm’.

Si la configuració és correcta, la transició a l’estat ‘DATA_EX’ te llocimmediatament sempre i quan no hi hagi present el Din_Buffer (R_Len_Din_puf=00h) iels comptadors de dispar dels telegrames de càrrega de paràmetres i de configuració siguin0. De qualsevol altra forma, la transició no succeeix fins al primer‘New_Din_Puffer_Cmd’ amb el qual l’usuari crea el primer ‘N buffer’ vàlid disponible.Quan s’entra al ‘DATA_EX’, l’SPC3 també genera la interrupció‘Go/Leave_Data_Exchange-Interrupt’.

Si les dades de configuració del buffer Cfg venen del buffer Read_Cfg ( el canviconté les dades del telegrama Get_Config ), l’usuari ha de crear unes dades pel bufferRead_Cfg abans del reconeixement amb “User_Cfg_Data_Okay_Cmd”. Desprès de rebreel reconeixement, l’SPC3 intercanvia el buffer Cfg amb el buffer Read-Cfg si‘EN_Change_Cfg_Buffer = 1’ en el ‘mode register1’. L’usuari rep informació sobre siexisteix o no un conflicte durant aquest reconeixement. Si es creu que mentrestant es potrebre un telegrama addicional de Check-Config, l’usuari rep el senyal ‘Cfg_Conflict’durant el reconeixement del primer missatge de Check-Config, ja sigui positiu o negatiu.Llavors l’usuari repeteix la validació perquè l’SPC3 ha creat un nou buffer Cfg disponible.

El reconeixement de les dues trames ‘User_Cfg_Data_Okay_Cmd’ i‘User_Cfg_Data__Not_Okay_Cmd’ son accessos de lectura a cèl·lules de memòria onpodrem trobar les següents senyals significatives: ‘Not_Allowed’, ‘User_Cfg_Finished’i

Page 67: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

61

‘Cfg_Conflict’. Si es creu que poden estar presents simultàniament ‘New_Prm_Data’ i‘New_Cfg_data’ durant l’arranc, l’usuari haurà de mantenir el Set_Param i llavors laseqüència de reconeixement del Check_config.

Posició BitAdreçaRegistreControl

7 6 5 4 3 2 1 0

Designació

11h 0 0 0 0 0 0 X X User_Cfg_Data_Not_Okay

0 0 User_Cfg_Finished

0 1 Cfg_Conflict

1 1 Not_Allowed

Taula 38. Codificació User_Cfg_Data_Not_Okay

Posició BitAdreçaRegistreControl 7 6 5 4 3 2 1 0

Designació

10h 0 0 0 0 0 0 X X User_Cfg_Data_Okay

0 0 User_Cfg_Finished

0 1 Cfg_Conflict

1 1 Not_Allowed

Taula 39. Codificació User_Cfg_Data_Okay

4.1.1.7 Detall de la Memòria del SPC3

L’spc3 té una àrea de memòria de 1,5k on es situen els registres interns i es trobenen les 21 primeres adreces. Aquests poden ser només llegits, només escrits o llegits iescrits. Existeixen unes cel·les internes de treball a les quals l’usuari no hi te accés i estroben a les mateixes adreces.

Els paràmetres organitzacionals es situen a partir de l’adreça 16H i les estructuresde buffers(per als DP-SAPs) s’escriuen basant-se en aquests paràmetres. A més, també s’hiemmagatzemen l’adreça d’estació, número d’identitat, dades de configuració deparàmetres generals i l’estat(comandaments de control global).

Page 68: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

62

Adreça Funció

0000h Registres deparàmetres deprocessament(22 bytes)

Cel·les de treballinternes

0016h Paràmetres

Organitzacionals (42 bytes)

0040h

5FFFh

DP-buffer: Dades Entrada

Dades Sortida

Diagnosi

Dades de parametrització

Dades de configuració

Buffer Auxiliar

Buffer SSA

Taula 40. Distribució de l’àrea de Memòria de l’SPC3

El HW no permet un accés a una adreça de fora de rang ja que si això succeeix, esresta 400h d’aquesta adreça i l’usuari n’accedeix a una nova. A més l’SPC3 genera lainterrupció de violació d’accés a RAM.

Page 69: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

63

4.1.1.7.1 Paràmetres de ProcessamentAquestes cel·les són, o bé de lectura o d’escriptura.

Adreça Nom Bit No. Significat

00H Int-Req-Reg 7..0

01H Int-Req-Reg 15..8

02H Int-Reg 7..0

03H Int-Reg 15..8

Registre del controlador d’interrupcions

04H Status-Reg 7..0

05H Status-Reg 15..8

Registre d’estat

06H

07H

Reservat

08H DIN_Buffer_SM 7..0 Assignació del buffer d’entrada

09H New_DIN_Buffer_Cmd 1..0 L’usuari crea un nou buffer Din disponible enl’estat N

0AH DOUT_Buffer_SM 7..0 Assignació del buffer de sortida

0BH Next_DOUT_Buffer_Cmd 1..0 L’usuari carrega l’últim buffer Dout de l’estatN

0CH DIAG_Buffer_SM 3..0 Assignació del buffer de diagnosi

0DH New_Diag_Puffer_Cmd 1..0 L’usuari crea un nou buffer Diag disponibleper a l’SPC3

0EH User_Prm_Data_OK 1..0 Acceptació de les dades d’ajust de paràmetresd’un Set_Param-Telegram

0FH UserPrmDataNOK 1..0 Rebuig de les dades d’ajust de paràmetres d’unSet_Param-Telegram

10H User_Cfg_Data_OK 1..0 Acceptació de les dades d’ajust de paràmetresd’un Check_Config-Telegram

11H User_Cfg_Data_NOK 1..0 Rebuig de les dades d’ajust de paràmetres d’unCheck_Config -Telegram

12H

13H

Reservat

14H SSA_Bufferfreecmd Dades carregades del buffer SSA i reactivaciódel mateix

15H Reservat

Taula 41. Assignació dels paràmetres interns per a LECTURA

Page 70: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

64

Adreça Nom Bit No. Significat

00H Int-Req-Reg 7..0

01H Int-Req-Reg 15 ..8

02H Int-Ack-Reg 7..0

03H Int-Ack-Reg 15..8

04H Int-Mask-Reg 7..0

05H Int-Mask-Reg 15..8

Registre del controlador d’interrupcions

06H Mode-Reg0 7..0

07H Mode-Reg0-S 15..8

Ajust del paràmetres per bits individuals

08H Mode-Reg1-S 7..0

09H Mode-Reg1-R 15..8

0AH WD Baud Ctrl-Val 7..0 Valor arrel per al baudrate

0BH Min Tsdr_Val 7..0 Temps de MinTsdr

0CH

0DH

0EH

0FH

10H

11H

12H

13H

14H

15H

Reservat

Taula 42. Assignació dels paràmetres interns per a ESCRIPTURA

Page 71: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

65

4.1.1.7.2 Paràmetres Organitzatius (RAM)Aquests paràmetres són emmagatzemats en RAM sota unes adreces

específiques i poden ésser llegits i escrits. Les adreces i els paràmetres són elssegüents:

Adreça Nom Bit No. Significat

16H R_TS_Adr 7..0 Adreça de càrrega del SPC3

17H Reservat Punter a l’adreça de RAM pre-carregada amb 0FFH

18H R_User_WD_Value 7..0

19H R_User_WD_Value 15..8

Basat en un temporitzador watchdog intern de 16 bits

1AH R_Len_Dout_Puf Longitud dels 3 buffer de sortida

1BH R_Dout_buf_Ptr1 Adreça del segment base del buffer Dout 1

1CH R_Dout_buf_Ptr2 Adreça del segment base del buffer Dout 2

1DH R_Dout_buf_Ptr3 Adreça del segment base del buffer Dout 3

1EH R_Len_Din_buf Longitud dels 3 búfal d’entrada

1FH R_ Din _buf_Ptr1 Adreça del segment base del buffer Din 1

20H R_ Din _buf_Ptr2 Adreça del segment base del buffer Din 2

21H R_ Din _buf_Ptr3 Adreça del segment base del buffer Din 3

22H Reservat Carregat amb 00H

23H Reservat Carregat amb 00H

24H R_Len_Diag_buf1 Longitud del buffer de diagnosi 1

25H R_Len_Diag_buf2 Longitud del buffer de diagnosi 2

26H R_diag_Puf_Ptr1 Adreça del segment base del buffer Diag 1

27H R_diag_Puf_Ptr2 Adreça del segment base del buffer Diag 2

28H R_Len_Ctrl_buf1 Longitud del buffer Aux 1 i el buffer de controlpertanyent

29H R_Len_Ctrl_buf2 Longitud del buffer Aux 2 i el buffer de controlpertanyent

2AH R_Aux_Puf_Sel Bit de carry, on definim si usem o no els buffer AUX

2BH R_ Aux _Puf_Ptr1 Adreça del segment base del buffer auxiliar 1

2CH R_ Aux _Puf_Ptr2 Adreça del segment base del buffer auxiliar 2

2DH R_Len_SSA_Data Longitud de les dades d’entrada al buffer SSA

2EH R_ SSA _Buf_Ptr Adreça del segment base del buffer SSA

2FH R_Len_Prm_Data Longitud de les dades d’entrada al buffer Set_Param

30H R_ Prm _Buf_Ptr Adreça del segment base del buffer Set_Param

31H R_Len_Cfg_Data Longitud de les dades d’entrada al bufferCheck_Config

32H R_ Cfg _Buf_Ptr Adreça del segment base del buffer Check_Config

33H R_Len_Read_Cfg_Data Longitud de les dades d’entrada al buffer Get_Config

Page 72: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

66

34H R_ Read_Cfg _Buf_Ptr Adreça del segment base del buffer Get_Config

35H Reservat Carregat amb 00H

36H Reservat Carregat amb 00H

37H Reservat Carregat amb 00H

38H Reservat Carregat amb 00H

39H R_Real_No_Add_Change Especifica si es pot canviar l’adreça de l’esclau DP

3AH R_Ident_Low Paràmetre d’identificació de l’esclau. Byte baix

3BH R_Ident_High Paràmetre d’identificació de l’esclau. Byte alt

3CH R_GC_Command Últim Global_Control_Command rebut

3DH R_Len_Spec_Prm_buf Si s’activa el Spec_Prm_Buffer_Mode, aquestparàmetre

Defineix la longitud del buffer de paràmetres.

Taula 43. Paràmetres organitzatius.

Page 73: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

67

4.1.2 Placa Prototipus

4.1.2.1 Esquema Elèctric

Figura 19. Esquema elèctric

4.1.2.2 Components

Page 74: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

68

Nº d’element Quantitat Referència Característica

1 1 C1 10u

2 2 C3,C2 27p

3 2 C4,C5 100u

4 4 C6,C7,C8,C9 100n

5 2 D2,D1 1N4148

6 1 JMP1 JUMPER

7 1 JMP2 JUMPER-2pin

8 1 J1 JUMPER-3pin

9 1 J2 REG3

10 1 J3 REG2

11 4 LED1,LED2,LED3,LED4 LED

12 4 R1,R2,R3,R4 10K

13 1 R5 8x390

14 1 R6 120

15 1 R7 12

16 1 S1 SW DIP-4

17 1 U1 89C51DIP

18 1 U2 SPC3_1

19 1 U3 OSCIL-48MHz

20 1 U4 75176B

21 1 U5 74HC14

22 1 U6 LM7805C/TO220

23 1 Y1 20MHz

Taula 44. Llistat de components

Page 75: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

69

4.1.2.3 Layout

Figura 20. Cara de soldadura

Figura 21. Cara de components

Page 76: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

70

Figura 22. Placa amb components

Page 77: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

71

4.2 SOFTWARE

4.2.1 Diagrames

4.2.1.1 Diagrama d’Estat del DP

Power-ON : L’únic moment en el qual podem modificar l’adressa de l’esclau es enl’estat Power-On

WPRM: L’esclau queda a l’espera de un missatge de parametrització. No s’acceptacap altre missatge que no sigui aquest

WCFG: El missatge de configuració especifica el nombre de entrades i sortides. Elmaster comunica a l’esclau quants bytes de entrada/sortida es transmetran.

DXCHG: Si els missatges anteriors i les comprovacions que s’han fet en l’aplicacióson correctes entra en aquest estat, que inclou l’actualització master-esclaud’entrades/sortides i la gestió de diagnosis.

Page 78: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

72

4.2.1.2 Diagrama General del Software

INICI

RESET DEL SPC3

INHABILITARINTERRUPCIONS

RESET DE MEMÓRIA RAMD’USUARI

CONFIGURACIÓWATCHDOG

IDENTITAT DE L’ESCLAU

ADRESSA DE L’ESCLAU

CONFIGURACIÓHARDWARE

INICIALITZACIÓ BUFFERS

CÍCLIC

Page 79: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

73

INICI CÍCLIC

RESET DELUSER_WATCHDOG

TRACTAMENT DESORTIDES

TRACTAMENTD’ENTRADES

TRACTAMENT DE LADIAGNOSIS

Page 80: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

74

Borra el contingut de RAM a onapunta

inici

Posem el valor 20000 al WDdel SPC3

Execució funcióuser_dps_reset()

Activem/desactivem possibilitat de canvi@ de l’esclau per part del master

Asigna un @ de RAM al punterd’I/O

Introdueix valors de:-@ esclau -Num. Identitat esclau

Activem les funcionsd’indicació

Borrem RAM interna del SPC3

Inhibim interrupcions

Disparem WD hardware

Reset micro

4.2.1.3 Diagrama Funcional del Codi

Page 81: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

75

SI

NO

--------------------------------------------------------------------------------------- TRACTAMENT DE LA DIAGNOSI

NO

Confirmem la rebuda

Obtenim el punter a l’actual dadade sortida

Copiem les dades a la I/O

Nova dada desortida?

Agafem estat actual del WD i del profibusDP per informació

Disparem WD del SPC3 i redisparem el WD hardware del IM183

Escribim dades entrada desde laperiferia a la ASIC

Actual punter a dades al SPC3 i obtenimnou punter on escriurem les noves dades

Agafem contingut 1er byte dadaentrada

buffer diag.disp.?

Page 82: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

76

NO

SI

NO

SI

Guardem els 3 últims bits

Escribim longitud de dades dediagnosi al SPC3

Selecciona búffer de diagnosi i guarda el seu estat

Byte de servei vell agafa el valor del nou per la propera comparació

Emmagatzema una variable ambcontingut «No buffer diagnosidisponible »

Actualització de la diagnosi al SPC3

Canvi en bytede servei ?

Bits 2..0 byteservei. Canvi?

Comprovem si tenim búffer dediagnosi

Page 83: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

77

4.2.1.4 Diagrama Concret del Codi

mod_rg1_s=#20hacumulador = @ int_req_h

acumuladorbit 5 = 1?

INICI

a = @ int_ack_ha = a OR #20h

@ int_ack_h = a

cnt_i = 0da = @ nt_do_bf_ca = a AND #03h

acumuladorbit 0 = 1?

acumuladorbit 1 = 1?

SI

acumulador = @ do_buf_pt1b = #8d

acumulador = @ do_buf_pt3b = #8d

acumulador = @ do_buf_pt2b = #8d

SINO

NO

(instr. ) mul abdptr =@ do_buf_pt2 +1000h

(instr. ) mul abdptr = u_inp_buf +1000h

(instr.) mul abdptr = u_inp_buf +1000h

acumulador = @ dptrio_punter+cnt_i=acumulador

cnt_ i = cnt_i + 1

var. cnt_ibit 2 = 1?

I

NO

SI

I

Page 84: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

78

r0 = 0r1 = 4

acumulador = r1

acumulador = 0?

acumulador = u_input_bufb = #8d

( instr .) mul abdptr = u_inp_buf +1000h

acumulador = io_punter + r0

@dptr = acumuladorr1 = r1 - 1

acumulador = r1r0 = r0 + 1

NO

acumulador = n_di_bufcmd(instr.) anl a,#03h

acumulador=acumulador-1

acumulador = 0?

acumulador = #di_buf_pt1

acumulador = #di_buf_pt0

SI

acumuladorbit 0 = 1?

u_inp_buf = acumuladoracumulador = #di_buf_pt2

u_inp_buf = acumuladoru_inp_buf = acumulador

I

diag_new = io_punteracumulador = user_flag

acumulador = 0?

diag_new=

diag_old?

NO

a = diag_new AND #07hr0 = a

a = diag_old AND #07h a = a - r0

asign_long = #6d

acumulador = 0?

X

diag_longbit 0 = 1?

asign_long = #16d

B

D

SINO

NO SI

NO

B

SI

SI

Page 85: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

79

BUF1_2( )

acumuladorBit 0=1?

D

registre LEN_DG_BF2=asign_long

registre LEN_DG_BF1=asign_long

SI

acumuladorBit 1=1?

acumulador=@us_diag_b

NO

SI

NO

r0 = asign_longr0=r0-1

@us_diag_b=diag_code

r0=0?

inc dptr

@dptr=#FFh

r0=r0-1

NO

F

SI

Page 86: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

80

F

acumulador=int_req_h

acumuladorbit 4 = 1?

acumulador=int_ack_h

acumulador=acumula dor+

#10h

int_ack_h=acumulador

BUF1_2( )

acumuladorbit 0 = 1?

us_ diag_b=dg_buf_ pt1us_diag_ b=dg_buf_pt2

user_fla g=#1d

ret

user_fla g=#0ddiag_old=diag_new

B

SI

NO

SI

NO

Page 87: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

81

INICI

acumulador=diag_buf_s m

acumulador=acumuladorAND#03h

acumulador=acumulador-1

acumulador=0?

acumulador=#1dacumulador=diag_buf_sm

SI NO

acumulador=acumuladorAND#0Ch

(instr.) rr ac umulador(instr.) rr ac umulador

acumulador=acumulador-1

acumulador=0?

RET

acumulador=#2d

RET

SI

NO

FUNCIÓ BUF1_2 ( )

Page 88: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

82

4.2.2 Codi

;###################################################################;#### ####;#### LOADER_M (EMU51) ####;###################################################################;*******************************************************************; versi¢ per a Philips P89C51RC2;*******************************************************************;___________________________________________________________________

;###( MEMORY MAP ) #################################################; ---- IRAM ----------------------------------------------; LocalRAM 00h-14h (21 bytes lliures); DebiRAM 15h-1Fh (11 bytes llibreria DEBUG_M); --- bits ------------; >> APP 20h-29h (10 bytes); BASE_T0 2Ah-2Ch (3 bytes); RS232 2Dh-2Eh (2 bytes); BUS 2Fh-59h (43 bytes Rdbus); >> APP 5Ah-FFh (166 bytes);; ---- XRAM (external 89C51RC2) --------------------------; RS232 000h-067h (104 bytes); DLC232 068h-088h (37 bytes); DEBX232 08Dh-09Fh (19 bytes); >> APLI 0A0h-3FFh (864 bytes); 2691 400h-4FFh (256 bytes); >> APLI 0500h-FEFFh (63kbytes); REG.EMU FF00h-FFFFh (256 bytes);___________________________________________________________________

;###( BASE_T0 )##################################################### ;---( iRAM )-------------------------------------------BASE_T0: .equ 2ah ;3 bytes;___________________________________________________________________

;###( BUS )######################################################### ;---( constants )--------------------------------------------BUS_bufLen: .equ 2+31+1 ; longitud buffer= 34 = 22h ;---( address variables )------------------------------------BUS_BIT: .equ Fh*8 ; es fan servir 8 bitsBUS_BYTE: .equ 30h ;(bufLen+7)es fan servir= 31+3+7

;=41=29h bytes

;---( pins)--------------------------------------------BUS_DEpin: .reg p1.7TimeAdjPin: .reg 20h.0 ; p3.5 only for RDbus adjust

; in the end of the project can be a; bit 20h.?

Page 89: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

83

;___________________________________________________________________

;###( RS232XS )##################################################### ;***( bits )*******************************************DIR_BITS232: .equ Dh*8 ; ocupa 10 bits ;***( RAM ext )****************************************DIR_2691: .equ 0400h ; Si es tracta de placa DCSemuDIR_EXT232: .equ 0000h ; ocupa 104(68h) bytes

;(comenca per xx00h) ;***( constants )**************************************XON: .equ 11h ; (cte byte) caracter XONXOFF: .equ 13h ; (cte byte) caracter XOFFINT232: .equ 04h ; (cte byte) caracter INT232ESC: .equ 1bh ; (cte byte) caracter ESCXON_X: .equ ffh ; (cte byte) caracter de sustitucio

; de XONXOFF_X: .equ feh ; (cte byte) caracter de sustitucio

; de XOFFINT232_X: .equ fdh ; (cte byte) caracter de sustitucio

; de INT232ESC_X: .equ fch ; (cte byte) caracter de sustitucio

; de ESC;___________________________________________________________________

;###( RS232DLC )####################################################;***( External RAM )******************************************DLC232addr: .equ 0068h ; len=37 bytes (25h) ;***( constants )************************************** ; error codesER232_FRM: .equ 21hER232_LONG: .equ 22hER232_SUM: .equ 23hER232_CODE: .equ 24hER232_EXE: .equ 25h ; basic charactersACK232: .equ 06hNACK232: .equ 15hSOH232: .equ 01hEOT232: .equ 04h

EOTrec: .reg 27h.7

;___________________________________________________________________

;###( DEBUG_M )##################################################### ;***( bits )*************************************************

;***( RAM int )**********************************************DebIRAM: .equ 15h ; 11 bytes

Page 90: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

84

DebXRAM: .equ 8Dh ; 24 bytesDEB_REGISTER: .equ FF00h ;***( constants )**************************************Deb_SPini: .equ 70h;___________________________________________________________________

;###################################################################;********************* ( RAM externa ) **************************;################### REGISTRES PROFIBUS ########################

SPC3: .equ 1000h ;Inici posicions de memoria de;l’SPC3

;***( Definici¢ dels registres del procesador )**************int_req_l: .EQU SPC3+00h ;IRR byte baixint_req_h: .EQU SPC3+01h ;IRR byte altint_reg_l: .EQU SPC3+02h ;lectura del IR(byte baix)int_reg_h: .EQU SPC3+03h ;lectura del IR(byte alt)int_ack_l: .EQU SPC3+02h ;escritura del IACK byte baixint_ack_h: .EQU SPC3+03h ;escritura del IACK byte altis_reg: .EQU SPC3+04h ;lect/escr del IMR i del Status

;Registerint_mask: .EQU SPC3+04h ;Status Register (son 2 bytes)mode_reg0: .EQU SPC3+06h ;Reservatdin_buf_sm: .EQU SPC3+08h ;Asignament buffer maquina

;d'estatsn_di_bufcm: .EQU SPC3+09h ;user assigna buffer DP en

;l'estat Ndo_buf_sm: .EQU SPC3+0Ah ;buffer de sortida d'estat de

;la maquinant_do_bf_c: .EQU SPC3+0Bh ;user llegeix buffer sortida

;d'estat Nmod_rg1_s: .EQU SPC3+08h ;ajust parametres per bits

;individualsmod_rg1_r: .EQU SPC3+09h ;ajust parametres per bits

;individualswdbd_ctva: .EQU SPC3+0Ah ;valor d'origen de baudratemintsd_val: .EQU SPC3+0Bh ;temps minim Tsdrdig_buf_sm: .EQU SPC3+0Ch ;Asignament al buffer de la

;diagnosi de SMn_dg_buf_cm: .EQU SPC3+0Dh ;L’usuari crea nou buffer DP de

;diagnosiu_pm_datok: .EQU SPC3+0Eh ;reconeix dels parametres

;set_param_telegramu_pm_datno: .EQU SPC3+0Fh ;no reconeix parametres

;set_param_telegramu_cf_datok: .EQU SPC3+10h ;Confirmació de les dades de

;configuracióu_cf_datno: .EQU SPC3+11h ;No es confirmen les dades de

;configuracióu_ddb_dok: .EQU SPC3+12h ;Reservat

Page 91: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

85

u_ddb_dnok: .EQU SPC3+13h ;Reservatsa_bf_fr_c: .EQU SPC3+14h ;Canvi de l’@ de l’esclaures_15: .EQU SPC3+15h ;Reservat ;***( Parametres organitzatius )*****************************r_ts_adr: .EQU SPC3+16h ;l'@ del SPC3sap_lst_pt: .EQU SPC3+17h ;Punter a la RAM (defecte=0ffh)usr_wd_val: .EQU SPC3+18h ;Visualitzaci¢ del WD (16bit)len_do_buf: .EQU SPC3+1ah ;Longitud buffers sortidado_buf_pt1: .EQU SPC3+1bh ;@ del segment base del dout 1do_buf_pt2: .EQU SPC3+1ch ;@ del segment base del dout 2do_buf_pt3: .EQU SPC3+1dh ;@ del segment base del dout 3len_di_buf: .EQU SPC3+1eh ;Longitud buffers entradadi_buf_pt1: .EQU SPC3+1fh ;@ del segment base del din 1di_buf_pt2: .EQU SPC3+20h ;@ del segment base del din 2di_buf_pt3: .EQU SPC3+21h ;@ del segment base del din 3len_dbo_bf: .EQU SPC3+22h ;a 0hdbo_buf_pt: .EQU SPC3+23h ;a 0hlen_dg_bf1: .EQU SPC3+24h ;Long. buffer diag 1len_dg_bf2: .EQU SPC3+25h ;Long. buffer diag 2dg_buf_pt1: .EQU SPC3+26h ;@ segment base buffer diag1dg_buf_pt2: .EQU SPC3+27h ;@ segment base buffer diag2len_ct_bf1: .EQU SPC3+28h ;Longitud buffer control i

;auxiliar 1len_ct_bf2: .EQU SPC3+29h ;Longitud buffer control i

;auxiliar 2aux_bf_sel: .EQU SPC3+2ah ;Vector de bits auxiliar

;(control)aux_bf_pt1: .EQU SPC3+2bh ;@ segment base del buffer aux1aux_bf_pt2: .EQU SPC3+2ch ;@ segment base del buffer aux2len_ssa_bf: .EQU SPC3+2dh ;Longitud dades

;Set_Slave_adress_bufferssa_bf_pt: .EQU SPC3+2eh ;@ segment base del

;Set_Slave_adress_bufferlen_pm_bf: .EQU SPC3+2fh ;Longitud dades

;Set_Param_Bufferpm_bf_pt: .EQU SPC3+30h ;@ segment base del

;Set_Param_Bufferlen_cf_bf: .EQU SPC3+31h ;Longitud dades

;Check_Config_Buffercf_bf_pt: .EQU SPC3+32h ;@ segment base del

;Check_Config_Bufferln_r_cf_bf: .EQU SPC3+33h ;Longitud dades

;Get_Config_Bufferr_cf_bf_pt: .EQU SPC3+34h ;@ segment base del

;Get_Config_Bufferln_db_pm_b: .EQU SPC3+35h ;a 00hdb_pm_b_pt: .EQU SPC3+36h ;a 00hscore_e: .EQU SPC3+37h ;a 00hscore_err: .EQU SPC3+38h ;a 00hrea_noad_ch: .EQU SPC3+39h ;Si @ del esclau pot canviarr_ident_l: .EQU SPC3+3ah ;Valor d'identitat (part baixa)

Page 92: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

86

r_ident_h: .EQU SPC3+3bh ;Valor d'identitat (part alta)gc_cmd: .EQU SPC3+3ch ;ultim Global_Control_Command

;rebutln_s_pm_bf: .EQU SPC3+3dh ;definicio long dels buffers de

;parametresres_3e_3f1: .EQU SPC3+3eh ;RESERVADESres_3e_3f2: .EQU SPC3+3fh ;RESERVADESuser_1472: .EQU SPC3+40h ;RESERVADES

;###################################################################;********************* ( RAM interna ) **************************;######################## PROFIBUS ##############################

;***( RAM interna )**********************************************iFreeRAM: .EQU 60h ; inici posició RAMinici_ram: .EQU iFreeRAM+0cnt_i: .EQU iFreeRAM+1io_punter: .EQU iFreeRAM+2 ;5Eh tb estaocupada.Imatge

;i/os RAMu_diag_b: .EQU iFreeRAM+18 ;variable auxiliar per

;diagnosiu_inp_buf: .EQU iFreeRAM+19 ;variable auxiliar per

;entradesuser_flag: .EQU iFreeRAM+20 ;bandereta per saber on

;estadiag_new: .EQU iFreeRAM+21diag_old: .EQU iFreeRAM+22diag_code: .EQU iFreeRAM+23 ;codi de servei de

;diagnosiasign_long: .EQU iFreeRAM+24

;###################################################################;********************* ( INCLUDES ) ***************************;######################## MACROS ##############################

;--- byte* punters --------------------------------P8_inc: .macro pH,pL ;--- (byte *p) p++ mov dph,pH ;INCREMENTA PUNTER 1

;BYTE mov dpl,pL inc dptr mov pL,dpl mov pH,dph .endm

P8_inc8: .macro pH,pL,inc8 ;--- (byte *p) p += ;=inc8

mov a,pL add a,inc8

Page 93: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

87

mov pL,a mov a,pH addc a,#0 mov pH,a .endm

P8_ld: .macro pH,pL,dat ;--- (byte *p) dat = ;=*p

mov dph,pH mov dpl,pL movx a,@dptr mov dat,a .endm

P8_st: .macro pH,pL,dat ;--- (byte *p) *p = ;=dat

mov dph,pH mov dpl,pL mov a,dat movx @dptr,a .endm

P8_ld_inc: .macro pH,pL,dat ;--- (byte *p) dat = ;=*p

mov dph,pH ; p++ mov dpl,pL movx a,@dptr mov dat,a inc dptr mov pL,dpl mov pH,dph .endm

P8_st_inc: .macro pH,pL,dat ;--- (byte *p) *p = ;=dat

mov dph,pH ; p++ mov dpl,pL mov a,dat movx @dptr,a inc dptr mov pL,dpl mov pH,dph .endm

;--- word* punters --------------------------------P16_ld: .macro pH,pL,datH,datL ;--- (word *p) dat =

;=*p mov dph,pH mov dpl,pL clr a

Page 94: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

88

movc a,@a+dptr mov datH,a inc dptr clr a movc a,@a+dptr mov datL,a .endm

P16_ld_inc: .macro pH,pL,datH,datL ;--- (word *p) dat = ;=*p

mov dph,pH ;p++ mov dpl,pL movx a,@dptr mov datH,a inc dptr movx a,@dptr mov datL,a inc dptr mov pL,dpl mov pH,dph .endm

;--- word* matriu ---------------------------------M16_ld: .macro m,indexH,indexL,datH,datL ;--- (word *m) dat =

;=m[index] mov a,indexL clr c rlc a push a mov a,indexH rlc a mov dph,a pop a add a,#m.mod.256 mov dpl,a mov a,dph addc a,#m/256 mov dph,a ; dptr = & m[index]

movx a,@dptr mov datH,a inc dptr movx a,@dptr mov datL,a

.endm

;--- FORs (x=xini ; x < xmax ; x++) -----------------FORs: .macro x,xmin,xmax,forSnext

Page 95: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

89

; x = iRAM ; xmin,xmax = #val or iRAM ; modifica a,psw

mov x,xmin ; 3 bytes clr c mov a,x subb a,xmax jc 3 ljmp forSnext+5 .endm

NEXTs: .macro x,forSini ; x = iRAM , forSini = Code inc x ; 2 bytes ljmp forSini+3 ; 3 bytes .endm

;--- FORl (x=xini ; x < xmax ; x++) -----------------FORl: .macro xH,xL,xminH,xminL,xmaxH,xmaxL,forLnext ; xH,xL = iRAM ; xminH,xminL,xmaxH,xmaxL = #val

or iRAM ; modifica a,psw mov xH,xminH ; 3 bytes mov xL,xminL ; 3 bytes clr c mov a,xL subb a,xmaxL mov a,xH subb a,xmaxH jc 3 ljmp forLnext+15 .endm

NEXTl: .macro xH,xL,forLini ; x = iRAM , forSini = Code mov a,xL ; 2 bytes add a,#1 ; 2 bytes mov xL,a ; 2 bytes mov a,xH ; 2 bytes addc a,#0 ; 2 bytes mov xH,a ; 2 bytes ljmp forLini+6 ; 3 bytes .endm

;--- Push_regA --------------------------------------PUSHregA: .macro push b

Page 96: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

90

push dph push dpl push psw .endm

;--- Pop_regA, return c=1 ---------------------------POP_RET1A: .macro pop psw setb c pop dpl pop dph pop b ret .endm

;--- Pop_regA, return c=0 ---------------------------POP_RET0A: .macro pop psw clr c pop dpl pop dph pop b ret .endm

;--- Push_reg ---------------------------------------PUSHreg: .macro push a push b push dph push dpl push psw .endm

;--- Pop_reg, return c=1 ----------------------------POP_RET1: .macro pop psw setb c pop dpl pop dph pop b pop a ret .endm

;--- Pop_reg, return c=0 ----------------------------POP_RET0: .macro pop psw clr c pop dpl pop dph

Page 97: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

91

pop b pop a ret .endm

;--- Pop_reg ----------------------------------------POP_RET: .macro pop psw pop dpl pop dph pop b pop a ret .endm

;--- Push_RAM [0h,3h] -------------------------------PUSH4: .macro push 0h push 1h push 2h push 3h .endm

;--- Pop_RAM [0h,3h] --------------------------------POP4: .macro pop 3h pop 2h pop 1h pop 0h .endm

;--- Push_RAM [0h,7h] -------------------------------PUSH8: .macro push 0h push 1h push 2h push 3h push 4h push 5h push 6h push 7h .endm

;--- Pop_RAM [0h,7h] --------------------------------POP8: .macro pop 7h pop 6h pop 5h pop 4h pop 3h pop 2h

Page 98: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

92

pop 1h pop 0h .endm

;--- Push_RAM [0h,fh] -------------------------------PUSH16: .macro push 0h push 1h push 2h push 3h

push 4h push 5h push 6h push 7h push 8h push 9h push ah push bh push ch push dh push eh push fh .endm

;--- Pop_RAM [0h,fh] --------------------------------POP16: .macro pop fh pop eh pop dh pop ch pop bh pop ah pop 9h pop 8h pop 7h pop 6h pop 5h pop 4h pop 3h pop 2h pop 1h pop 0h .endm

;___________________________________________________________________

;################################( include )########################;#### ####;#### Ampliacio de 8051 a 8052 ####;#### ####

Page 99: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

93

;###################################################################

.ramchk off ; 8052;***( variables byte )**********************************************t2con: .reg c8hrcap2l: .reg cahrcap2h: .reg cbhtl2: .reg cchth2: .reg cdh;***( variables bit )***********************************************et2: .reg ie.5 ; registre iept2: .reg ip.5 ; registre ip

tf2: .reg t2con.7 ; registre t2conexf2: .reg t2con.6rclk: .reg t2con.5tclk: .reg t2con.4exen2: .reg t2con.3tr2: .reg t2con.2ct2: .reg t2con.1cprl2: .reg t2con.0;*******************************************************************;################################( include )########################;#### ####;#### Reset 8052 ####;#### ####;###################################################################

;***( Funcions i adreces )******************************************

.extern RES8052 ; Reset software;(es crida amb LJMP RES_8051)

; torna a la direcci¢ FI_RES8051 .global FI_RES8052

;*******************************************************************

;#############################( INCLUDE )###########################;## BASE DE TEMPS (Timer 0) ##;## 2 milisegons , 100 milisegons , 1 segon ##;###################################################################

;***( adreces )*****************************************************

.global EXE_2MS_T0 ; Aquesta subrutina ext. ; s'exec. cada 2 ms

.global EXE_01S_T0 ; Aquesta subrutina ext. ; s'exec. cada 0,1s

.global EXE_1S_T0 ; Aquesta subrutina ext.; s'exec. cada 1s

.extern V_BASE2_T0 ; El vector del T0 ha d'apuntar

Page 100: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

94

; aqui

;***( funcions )****************************************************

.extern BASE2_INI ; Per iniciar la base de temps

;***( variables / constants )***************************************

BASE1_T0: .var BASE_T0+0BASE2_T0: .var BASE_T0+1BASE3_T0: .var BASE_T0+2 .global BASE1_T0 ; registre divisor .global BASE2_T0 ; registre divisor .global BASE3_T0 ; registre divisor

;*******************************************************************

;############################( include )############################;#### ####;#### Rdbus ####;#### (using timer 2) ####;#### versio 1.00 ####;###################################################################

;***( BUS system information )**************************************;; RAM registers: 7 bytes + bufferLength; RAM bits 8 bits;;*******************************************************************

;***( Functions )*************************************************** .extern BUS_mode ; Bus initialization .extern BUSR_en ; enable Receiver (disable

; transmissor) .extern BUSR_dis ; disable Receiver .extern BUSR_nBuf ; return (A) bytes received .extern BUST_send ; Send buffer without interruption

; methode .extern BUST_sndChar ; Send char (mp=0) without

; interruption methode .extern BUST_empty ; return (c=1) if bytes have been

; sent already .extern BUS_status ; return (A) the status of the bus .extern BUS_onInt ; Active bus interrupt ; (will be detect by polling from

; master) .extern BUS_offInt ; DeActive bus interrupt .extern BUSR_waitRec ; Wait Frame reception .extern BUSR_waitChar ; Wait char reception

Page 101: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

95

;****** MASTER *********** .extern BUS_rstBus ; Reset all slave bus interface of

; the bus .extern BUS_rstCpu ; Reset all cpu of the slaves .extern BUS_EP ; Event polling on the bus .extern BUS_AP ; Address polling on the bus

;***( Vectors call/inter. / address)******************************** .extern V_BUS ; bus interrupt vector .global BUSRatt ; soft interrupt vector (frame

; received) .global BUSTatt ; soft interrupt vector (frame sent)

;***( registers & bits of internal ram )****************************BUFini: .equ BUS_BYTE+0BUFend: .equ BUFini+BUS_bufLen-1BUFini_1: .equ BUFini-1

BUFptr: .var BUFend+1BUSchk: .var BUFend+2BUSaddr: .var BUFend+3BUSTbyte: .var BUFend+4BUFTptrLast: .var BUFend+5BUSstatus: .var BUFend+6BUSrate: .var BUFend+7

.global BUSaddr .global BUSTbyte .global BUSchk .global BUFptr .global BUFTptrLast .global BUFini .global BUFini_1 .global BUFend .global BUSstatus .global BUSrate

BUSRoverf: .var BUS_BIT+0 ; buffer overflow flagBUSRact: .var BUS_BIT+1 ; reception frame in courseBUSTact: .var BUS_BIT+2 ; transmission in course (only if

; BUST_sendI)BUSTnorm: .var BUS_BIT+3 ; next byte to send is "normal byte"BUSTaddr: .var BUS_BIT+4 ; next byte to send is "addr byte"BUSTchk: .var BUS_BIT+5 ; next byte to send is "chk byte"BUSTeot: .var BUS_BIT+6 ; next byte to send is "eot byte"BUSinter: .var BUS_BIT+7 ; flag of interrupt request

.global BUSRoverf

.global BUSRact

.global BUSTact

.global BUSTnorm ; next byte to send is "normal byte"

Page 102: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

96

.global BUSTaddr ; next byte to send is "addr byte"

.global BUSTchk ; next byte to send is "chk byte"

.global BUSTeot ; next byte to send is "eot byte"

.global BUSinter ; flag of interrupt request

;--- Commands ---------------------------------------.extern CMD_RSTCPU.extern CMD_RSTBUS.extern CMD_ACK.extern CMD_NACK.extern CMD_1.extern CMD_2.extern CMD_3.extern CMD_DEBUG ;--- Global address ---------------------------------.extern BUSaddrGlobal ;--- data chars -------------------------------------.extern ACK.extern NACK.extern YES.extern NO

;***( pins )********************************************************.global BUS_DEpin ; (pin) driver.global TimeAdjPin;*******************************************************************

;#############################( include )###########################;## ##;## RETARDS ##;## versio 1.00 ##;###################################################################

;***( funcions )****************************************************

.extern R_10US ; Ret. 10 us .extern R_100US ; Ret. 100 us .extern R_1MS ; Ret. 1 ms .extern R_5MS ; Ret. 5 ms (exac 5.008 ms) .extern R_10MS ; Ret. 10 ms (exac 10.006 ms) .extern R_15MS ; Ret. 15 ms (exac 15.004 ms) .extern R_AX100US ; Ret. (A)*100 us

; (exac. (A)*100+12us) .extern R_AX1MS ; Ret. (A)*1 ms (exac. (A)*1002+8 us) .extern R_AX10MS ; Ret. (A)*10 ms

; (exac. (A)*10032+8 us)

;*******************************************************************;#############################( include )###########################;#### ####

Page 103: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

97

;#### RS-232XS ####;#### ####;#### (XON-XOFF amb control de caracters) ####;#### ####;#### versio 1.00 ####;###################################################################

;***( A incloure en APLI.ASM)*************************************** .comment & ;***( RS232X )*************************************** ;--- Direccions -------------------------------------DIR_2691: .equ 0400h ; per compatibilitat amb EMU51DIR_BYTE232: .equ qualsevol direccio XX00h ; ocupa 64+32+5 bytesDIR_BITS232: .equ qualsevol direccio ; ocupa 10 bits

;--- Vectors d'interrupcio SOFTWARE GENERATS -------- DIR_INT232 ; Vector inter. per recepcio

; d'un byte INT232 DIR_ERR232 ; Vector inter. per deteccio d’ERROR &;***( Funcions )**************************************************** .extern V_RS232 ; Atencio a la interrupcio

; deguda a RS-232 .extern RS232_INI ; Inicialitzacio RS-232 .extern RS232R ; Torna (a) el byte mes

; antic del buffer rec .extern RS232T ; Escr. byte(a) en el buffer RS232 .extern RS232TNSUS ; Escr. byte(a) sense sustitucio

; de caracter .extern RS232T_XON ; Envia XON al transmissor remot. .extern RS232T_XOFF ; Envia XOFF al transmissor remot. .extern RS232_STATUS ; Torna en (a) el contingut

; del registre SR .extern RS232R_NBUF ; Torna (A) el numero de bytes

; del buffer rec .extern RS232_FI ; Finalitza la comunic. RS-232.

; No toca buffers .extern RS232R_RESBUF ; Reset buffer Recepcio RS232 .extern RS232T_RESBUF ; Reset buffer Transmissio RS232

;***( constants DIR inicials )************************************** .global DIR_EXT232 ; Dir. inici (6)bytes control

; com232 (ram ext) .global DIR_BITS232 ; Dir. inici (12)bits control

; com232 (ram int)

;***( Vectors d'interrupcio )*************************************** .global DIR_INT232 ; Vector inter. per recepcio

; d'un byte INT232 .global DIR_ERR232 ; Vector inter. per deteccio

; d'un ERROR

Page 104: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

98

;***( constants 8 bits )******************************************** .global XON ; (cte byte) caracter XON .global XOFF ; (cte byte) caracter XOFF .global INT232 ; (cte byte) caracter INT232 .global ESC ; (cte byte) caracter Escape .global XON_X ; (cte byte) caracter de canvi de XON .global XOFF_X ; (cte byte) caracter de

; canvi de XOFF .global INT232_X ; (cte byte) caracter de

; canvi de INT232 .global ESC_X ; (cte byte) caracter de canvi de ESC

;***( RAM externa )************************************************* .global BUF232T_D ; Dir. inici (ram ext) buf

; trans.(mult de 100h) .global BUF232R_D ; Dir. inici (ram ext) buf rec.

; (mult de 100h) .global BUF232T_P1 ; 1§ byte valid buffer trans. .global BUF232T_P2 ; 1§ byte lliure buffer tran. .global BUF232R_P1 ; 1§ byte valid buffer recep. .global BUF232R_P2 ; 1§ byte lliure buffer rece. .global C2691_IMR ; copia del reg. IMR del 2691 .global DIR_2691 ; Dir. de memoria externa del

; xip SCC2691

;--- registres SCC2691 ------------------------------ ; registres d'escritura .global DIR_MR ; aquest MR tambe es de lectura .global DIR_CSR .global DIR_CR .global DIR_THR .global DIR_ACR .global DIR_IMR .global DIR_CTUR .global DIR_CTLR ; registres de lectura .global DIR_SR .global DIR_BRG .global DIR_RHR .global DIR_16X .global DIR_ISR .global DIR_CTU .global DIR_CTL

;***( bits ram interna )******************************************** .global RS232R_OV ; indic. de overflow fifo rec. .global RS232R_HAB ; indic. de recep. hab.(XON enviat) .global RS232T_HAB ; indic. de transm. hab.(XON rebut) .global RS232T_ACT ; indic. de transm. en curs .global RS232T_P ; indic. de transmissio pendent

Page 105: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

99

.global PET_XON ; indic. de peticio de trans. XON .global PET_XOFF ; indic. de peticio de trans. XOFF .global RS232INT_H ; hab(1) inter. per rec. byte INT232 .global RS232ERR_H ; hab(1) inter. per detc. ERROR 2691 .global ESC_ANT ; indic. de caracter Escape

; rebut anteriorment

;***( Calcul d'adreces )********************************************

;--- Direccions de bytes (ram externa) --------------BUF232T_D: .var DIR_EXT232BUF232R_D: .var BUF232T_D+64BUF232T_P1: .var BUF232R_D+32+0 ; 1§ byte valid buffer trans.BUF232T_P2: .var BUF232R_D+32+1 ; 1§ byte lliure buffer tran.BUF232R_P1: .var BUF232R_D+32+2 ; 1§ byte valid buffer recep.BUF232R_P2: .var BUF232R_D+32+3 ; 1§ byte lliure buffer rece.C2691_IMR: .var BUF232R_D+32+4 ; copia del reg. IMR del 2691

;--- Direccions de bits (ram interna) ---------------RS232R_OV: .var DIR_BITS232+0 ; indic. de overflow fifo rec.RS232R_HAB: .var DIR_BITS232+1 ; indic. de recep. hab.

; (XON enviat)RS232T_HAB: .var DIR_BITS232+2 ; indic. de transm. hab.

; (XON rebut)RS232T_ACT: .var DIR_BITS232+3 ; indic. de transm. en cursRS232T_P: .var DIR_BITS232+4 ; indic. de transmissio pendentPET_XON: .var DIR_BITS232+5 ; indic. de peticio de

; trans. XONPET_XOFF: .var DIR_BITS232+6 ; indic. de peticio de

; trans. XOFFRS232INT_H: .var DIR_BITS232+7 ; hab(1) inter. per rec.

; byte INT232RS232ERR_H: .var DIR_BITS232+8 ; hab(1) inter. per detc.

; ERROR 2691ESC_ANT: .var DIR_BITS232+9 ; indic. de caracter Escape

; rebut anter.

;--- registres SCC2691 ------------------------------ ; registres d'escrituraDIR_MR: .var DIR_2691+0 ; aquest MR tambe es de lecturaDIR_CSR: .var DIR_2691+1DIR_CR: .var DIR_2691+2DIR_THR: .var DIR_2691+3DIR_ACR: .var DIR_2691+4DIR_IMR: .var DIR_2691+5DIR_CTUR: .var DIR_2691+6DIR_CTLR: .var DIR_2691+7 ; registres de lecturaDIR_SR: .var DIR_2691+1DIR_BRG: .var DIR_2691+2DIR_RHR: .var DIR_2691+3

Page 106: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

100

DIR_16X: .var DIR_2691+4DIR_ISR: .var DIR_2691+5DIR_CTU: .var DIR_2691+6DIR_CTL: .var DIR_2691+7

;*******************************************************************

;#############################( include )###########################;#### ####;#### RS-232 ####;#### DLC sublayer ####;#### versio 1.00 ####;###################################################################

.comment &To include in APLI.ASM;___________________________________________________________________;###( RS232DLC )#################################################### ;***( External RAM )*********************************DLC232addr: .equ address ; len=256 bytes ;***( constants )************************************ ; error codesER232_FRM: .equ ...ER232_LONG: .equ ...ER232_SUM: .equ ...ER232_CODE: .equ ...ER232_EXE: .equ ... ; basic charactersACK232: .equ ...NACK232: .equ ...SOH232: .equ ...EOT232: .equ ...;___________________________________________________________________;################################################################### & ;---( External RAM )--------------------------------- .global DLC232addr ;---( Vectors )-------------------------------------- .extern RS232DLC ; DLC layer routine

; (att. soft. interrupt) .global V_RS232APP ; Application layer routine ;---( Services )------------------------------------- .extern DLC232_ACK ; Send a ACK frame to RS232 .extern DLC232_NACK ; Send a NACK frame to RS232 .extern DLC232_DAT ; Send a data frame to RS232 from

; internal RAM .extern DLC232_XDAT ; Send a data frame to RS232 from

; external RAM

Page 107: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

101

;---( constants )------------------------------------ .global ER232_FRM .global ER232_LONG .global ER232_SUM .global ER232_CODE .global ER232_EXE .global ACK232 .global NACK232 .global SOH232 .global EOT232 ;--- (addresses)------------------------------------- DLC232_dBuf: .equ DLC232addr+0 DLC232_nSeq: .equ DLC232addr+32 DLC232_fLen: .equ DLC232addr+33 DLC232_ord: .equ DLC232addr+34 DLC232_dLen: .equ DLC232addr+35 .global DLC232_dBuf .global DLC232_nSeq .global DLC232_fLen .global DLC232_ord .global DLC232_dLen;*******************************************************************

;###################################################################;#### DCS_debugger ####;#### (MASTER) ####;###################################################################

.comment &

;******************************************************************* ;***( bits )***************************************** ;***( RAM int )**************************************DebIRAM: .equ 15h ; 11 bytesDebXRAM: .equ 008Dh ; 24 bytesDEB_REGISTER: .equ FF00h ;***( constants )************************************Deb_SPini: .equ 70h;******************************************************************* &

;***( Functions )*************************************************** .extern RDBUSdeb232 .extern Deb_vINT0;***( iRAM )******************************************************** .global DebIRAM ; DEBUG RAM not protected by stack

; (9 bytes)

BPh: .equ DebIRAM+0 ; BPh,BPh current addr brkBPl: .equ DebIRAM+1ByteSubs1: .equ DebIRAM+2 ; 3 bytes substituted

Page 108: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

102

ByteSubs2: .equ DebIRAM+3ByteSubs3: .equ DebIRAM+4ModeDeb: .equ DebIRAM+5PCh_app: .equ DebIRAM+6PCl_app: .equ DebIRAM+7SP_app: .equ DebIRAM+8stp_addrH: .equ DebIRAM+9stp_addrL: .equ DebIRAM+10

.global BPh,BPl,ByteSubs1,ByteSubs2,ByteSubs3,ModeDeb .global PCh_app,PCl_app,SP_app .global stp_addrH,stp_addrL

;***( xRAM )******************************************************** .global DEB_REGISTER ; debug register (emulator) .global DebXRAM ; DEBUG RAM not protected by stack

; (24 bytes);***( Constants )*************************************************** .global Deb_SPini;*******************************************************************

;###################################################################;## ATENCIO A INTERRUPCIONS ##;## ##;###################################################################;## TIMER0: BASE DE TEMPS T0 (2 milis, 100 milis, 1 seg) ##;###################################################################

.ramchk off ;8052 .org 0h jmp INICI

;***( Vectors d'interrupcio )*************************************** .org 03hinter_ie0: ljmp Deb_vINT0 reti

.org 0bhinter_t0: call V_BASE2_T0 reti

.org 13hinter_ie1: call V_RS232 reti

.org 1bhinter_t1: reti

.org 23hinter_rti: jmp V_BUS

Page 109: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

103

reti

.org 2bhinter_t2: reti

.org 30h; APLICACION;###################################################################;## PROFIBUS ##;###################################################################;*******************************************************************;***( Titol )******************************************************* ;------0123456789ABCDEF------.ascii ** Profibus ** ******.ascii Sergi Aluja & Xavier Pallas ******.ascii ** 27/mai/04 ** ******

;***( Inici Programa )**********************************************

INICI: clr ea ;Acces a la memoria externa

;---( Reset registres 8051 )---------------------- ljmp RES8052FI_RES8052:

clr amov r0,#7Fhinici2: mov @r0,adjnz r0,inici2

;---( SP )---------------------------------------- mov sp,#a0h ;inici dels 864 bytes ;---(89C51RC2 256 bytes eRAM)-------------- mov a,8eh anl a,#11111100b mov 8eh,a

;--- bases de temps ----------------- call BASE2_INI

;--- BUS ------------------- mov BUSaddr,#BUSaddrCte ; master address mov a,#0 ; 375000 bits/s call BUS_mode

;--- RS232 --------------- mov a,#8 ; (8)38400 bit/s, (7)19200

; bit/s mov b,#01010011b ; 1 bit stop, error char,

; no paritat call RS232_INI ; inicialitza + configura setb RS232INT_H ; habilitar interrup.

Page 110: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

104

; recepcio trama setb RS232ERR_H ; habilitar interrup.

; error chip serie setb RS232T_HAB ; habilitar la

; transmissio 232

;---( Habilitar interrupcions )------- setb ea

setb ps;*******************************************************************EXE_2MS_T0: ; Aquesta subrutina ext. s'exec. cada 2 ms ;---------------------------------------------------- ret;*******************************************************************EXE_01S_T0: ; Aquesta subrutina ext. s'exec. cada 0,1s ;---------------------------------------------------- ret;*******************************************************************EXE_1S_T0: ; Aquesta subrutina ext. s'exec. cada 1s ;---------------------------------------------------- cpl p1.3 ;indica que tenim carregada la nostra

;aplicacio ret;*******************************************************************.page;###################################################################;## port SERIE 8052 ##;###################################################################;*******************************************************************BUSTatt: ; Atencio inter. soft. per "trama enviada" ;---------------------------------------------------- ret;*******************************************************************BUSRatt: ; Atencio inter. soft. per "trama rebuda" ;---------------------------------------------------- ret;*******************************************************************

;###################################################################;## INT.EXT.1: (de moment a mes RS-232) ##;###################################################################;*******************************************************************DIR_INT232: ; S'ha rebut un byte "INT232" per el buffer RS232 ;---------------------------------------------------- call RS232DLC ret;*******************************************************************DIR_ERR232: ; S'ha detectat un error en les comunicacions RS232 ;----------------------------------------------------

Page 111: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

105

ret;*******************************************************************V_RS232APP: ; S'ha rebut una trama232 OK (capa RS232DLC) ;---------------------------------------------------- setb EOTrec ret;*******************************************************************

;###################################################################;## PROGRAMA PROFIBUS ##;## ##;###################################################################

;--- OB21 ----------------------------------------------------------call OB21 ; inicialitzacio de l’esclau

;--- OB1 -----------------------------------------------------------principal: call OB1 ; programa ciclic jmp principal

;###################################################################;## PARAMETRITZACIO I CONFIGURACIO SPC3 ##;###################################################################OB21:;---RESET SPC3------------------------------------

setb p3.5 ;pin de reset del SPC3comensa: FORl dph,dpl,#00h,#00h,#00h,#64h,acabaacaba: call NEXTl dph,dpl,comensa clr p3.5 ;inhabilitem el reset

;---TRACTAMENT INTERRUPCIONS----------------------;Reconeixem interrupcions que puguin estar pendents

mov a,#1Fh mov dptr,#int_reg_l movx @dptr,a mov a,#3Fh inc dptr movx @dptr,a ;Fi reconeixements

;Enmascaraments d'interrupcions mov a,#1Fh mov dptr,#int_mask movx @dptr,a mov a,#3Fh inc dptr movx @dptr,a ;Fi enmascaraments

;---BORRAR RAM SPC3------------------------------- ; Borra espai memoria dels parametres

; organitzatius

Page 112: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

106

pincipi: FORl dph,dpl,#10h,#16h,#15h,#ffh,fidel clr a movx @dptr,afidel: call NEXTl dph,dpl,pincipi

;---CONFIG DEL WATCHDOG--------------------------- ;Posem valor del WD del SPC3 ;check del micro(20000 q es 4e20h) mov a,#20h mov dptr,#usr_wd_val ;byte baix movx @dptr,a mov a,#4eh inc dptr ;byte alt movx @dptr,a

;---FREERAM A 00---------------------------------- ;Posem les posicions de copia de I/Os a RAM a 00h mov io_punter,#00h mov io_punter+1,#00h mov io_punter+2,#00h mov io_punter+3,#00h mov io_punter+4,#00h mov io_punter+5,#00h mov io_punter+6,#00h mov io_punter+7,#00h mov io_punter+8,#00h mov io_punter+9,#00h

;---IDENTITAT------------------------------------- ;numeros d'identitat de l’esclau mov a,#00h mov dptr,#r_ident_h ;identitat alta movx @dptr,a mov a,#08h mov dptr,#r_ident_l ;identitat baixa movx @dptr,a

;---ADRESSA ESCLAU-------------------------------- ;adressa de l'esclau mov a,#03h mov dptr,#r_ts_adr movx @dptr,a

;---MODES DE HARDWARE----------------------------- ;No configutrem un buffer especial pels

;parametres ;Modes de HW, activem sincronitzacio, freeze,

;IRs a nivell baix (encara que no tenim IRs) ;User_time_base=10ms

Page 113: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

107

mov a,#08h mov dptr,#mode_reg0 ;modifiquem byte baix movx @dptr,a inc dptr mov a,#05h ;modifiquem byte alt movx @dptr,a

;---PERMISIVITAT CANVI @-------------------------- ;no es pot modificar l’@ de l’esclau mov a,#FFh mov dptr,#rea_noad_ch movx @dptr,a

;---COMPROVACIO SPC3 OFFLINE----------------------mov dptr,#is_reg

movx a,@dptr anl a,#1h jz OFFLINE ;al final de OB21 ljmp SEGUIRME

;BUCLE INFINIT PER QUAN HI HA UN FALLO A L'INICIALITZACIO

OFFLINE: mov r0,#FFjmp OFFLINE

;---INICIALITZEM PUNTERS DELS BUFFERS(@ d'inici)--;Els buffers han de ser multiples de 8, ja que;per poder mapejar els 1k5B i emmagatzemals al; buffer hem de discriminar els 3 primers bits

SEGUIREM: mov dptr,#do_buf_pt1 ;punter al primer buffer;de sortides

mov a,#08h ;@40h len=128d movx @dptr,a

mov dptr,#do_buf_pt2 ;punter al segon buffer de;sortides

mov a,#18h ;@C0h len=128d movx @dptr,a

mov dptr,#do_buf_pt3 ;punter al tercer buffer;de sortides

mov a,#28h ;@140h len=128d movx @dptr,a

mov dptr,#di_buf_pt1 ;punter al primer buffer;d’entrades

mov a,#38h ;@1C0h len=128d movx @dptr,a

mov dptr,#di_buf_pt2 ;punter al segon buffer

Page 114: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

108

;d’entrades mov a,#48h ;@240h len=128d movx @dptr,a

mov dptr,#di_buf_pt3 ;punter al tercer buffer;d’entrades

mov a,#58h ;@2C0h len=128d movx @dptr,a

mov dptr,#dg_buf_pt1 ;punter al primer buffer;de diagnossis

mov a,#68h ;@340h len=32d movx @dptr,a

mov dptr,#dg_buf_pt2 ;punter al segon buffer de;diagnossis

mov a,#6Ch ;@360h len=32d movx @dptr,a

mov dptr,#aux_bf_pt1 ;punter al primer buffer;auxiliar

mov a,#70h ;@380h len=32d movx @dptr,a

mov dptr,#aux_bf_sel ;nomes utilitzem un buffer;auxiliar

mov a,#00h movx @dptr,a

mov dptr,#ssa_bf_pt ;buffer per canvi d’@ de;l’esclau

mov a,#00h ;@00 len=0d NO PERMETEM;CANVI @ SLAVE

movx @dptr,a

mov dptr,#pm_bf_pt ;punter de buffer de;parametritzacio

mov a,#74h ;@3A0h len=32d movx @dptr,a

mov dptr,#cf_bf_pt ;punter de buffer de;config

mov a,#78h ;@3C0h len=32dmovx @dptr,a

mov dptr,#r_cf_bf_pt ;punter al buffer de;lectura config

mov a,#7Ch ;@3E0h len=32d movx @dptr,a

;---INICIALITZEM PUNTERS (@ d'inici)--------------

Page 115: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

109

;---INICIALITZACIO DE LA LONGITUD DELS BUFFERS----;inicialitzem la llargada dels buffers per, posem;el maxim que es pot segons la posicio del buffer

mov a,#128d ;long. buffers de sortida mov dptr,#len_do_buf ;128d=80h

movx @dptr,a

mov a,#128d ;long. buffers d’entradamov dptr,#len_di_buf ;128d=80hmovx @dptr,a

mov a,#32d ;long. bufer de diagnosismov dptr,#len_dg_bf1 ;32d=20hmovx @dptr,amov dptr,#len_dg_bf2movx @dptr,a

mov a,#32d ;long. buffer dels param.mov dptr,#len_pm_bf ;32d=20hmovx @dptr,a

mov a,#32d ;long. buffer config.mov dptr,#len_cf_bf ;32d=20hmovx @dptr,a

mov a,#32d ;long. Buf. lectura configmov dptr,#ln_r_cf_bf ;32d=20hmovx @dptr,a

mov a,#0d ;anulem buffer canvi d’@;de l’esclau

mov dptr,#len_ssa_bfmovx @dptr,a

;---BUFFER PER OBTENIR PRIMERA CONFIG-------------

;Actualitzem longitud mov dptr,#ln_r_cf_bf ;posicio del registre

mov a,#2dmovx @dptr,a

;Obtenim posicio real del punter mov dptr,#r_cf_bf_pt ;posici¢ del registre

movx a,@dptr ;contingut @/8 mov b,#8d

mul ab ;obtenim per separat @mov dph,bmov dpl,a ;ho tenim al dptrmov a,#10h ;sumem @ base del SPC3

Page 116: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

110

add a,dphmov dph,a

;Posem config d'entrada i sortidamov a,13h ;4 bytes d'entradamovx @dptr,ainc dptrmov a,23h ;4 bytes de sortidamovx @dptr,a

;---CARREGUEM BUFFERS I/O amb longituds actuals---

mov a,#4d ;4 bytes de sortidamov dptr,#len_do_bufmovx @dptr,a

mov a,#4d ;4 bytes d’entradamov dptr,#len_di_bufmovx @dptr,a

;---BUSQUEDA DEL PRIMER BUFFER D'ENTRADA----------

mov dptr,#din_buf_smmovx a,@dptr

rr a ;rotem 4 bits a la dretarr a ;per tenir elsrr a ;2 bits on ens interessarr aanl a,#03h ;mascara i decrement perdec a ;passar a triar bufferjz IN1dec ajz IN2

IN3: mov dptr,#di_buf_pt3movx a,@dptrljmp JA_IN

IN1: mov dptr,#di_buf_pt1movx a,@dptrljmp JA_IN

IN2: mov dptr,#di_buf_pt2movx a,@dptr

JA_IN: mov u_inp_buf,a ;guarda en RAM posicio;buffer d’INPUTS

Page 117: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

111

;---BUSQUEDA DEL PRIMER BUFFER DE DIAGNOSIS-------mov dptr,#dig_buf_smmovx a,@dptranl a,#03h ;mascara i decrement perdec a ;passar a triar bufferjz DIG1

rr a ;rotem 2 vegades cap a larr a ;dreta per tenir els 2

;bits on ens interessaanl a,#03hdec ajz DIG2

DIG1: mov dptr,#dg_buf_pt1movx a,@dptrljmp JA_DIG

DIG2: mov dptr,#dg_buf_pt2movx a,@dptr

JA_DIG: mov u_diag_b,a ;guarda RAM posici¢ buffer;DIAGNOSIS

mov user_flag,#1h ;marca flag per consultes;posteriors

;---VALOR PER EL WATCHDOG QUE CONTROLA BAUDRATE---mov dptr,#wdbd_ctvamov a,#1eh ;valor temps de controlmovx @dptr,a

;---POSTA EN START EL SPC3------------------------mov dptr,#mod_rg1_s ;carrega @ reg. de modemovx a,@dptrorl a,#01h ;máscara per STARTmovx @dptr,a ;posem valor al registre

;---VARIABLE PER TRACTAR DIAGNOSSIS AL CICLIC-----mov a,io_puntermov diag_old,a

ret

;*******************************************************************OB1:; ------------------------------------------------------------------;|programa ciclic |; ------------------------------------------------------------------

Page 118: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

112

;---AGAFA ESTAT WD I MODE DP----------------------------------------;reset del user_watchdog. Ho fem mitjançant un;acces a un registre de mode.mov dptr,#mod_rg1_s ;carrega @ registre de

;modemovx a,@dptrorl a,#20h ;máscara per activar el

;reset

movx @dptr,a ;posem valor al registre

;---ARA VINDRIA TRIGGER WD HARDWARE PERO NO EN TENIM----------------

;---COMPROVACIO SI DADES DE SORTIDA---------------------------------; aquí comprovem en el registre d’interrupcions; si hi ha dades de sortida

mov dptr,#int_req_h movx a,@dptr ;polling al

;reg.d’interrup.jb a.5,DX_OUT ;tenim una nova dada de

;sortida disponible????

;Si no hi han noves dades de sortida, fem el; tractament de les d'entrada. Si n'hi ha, fara;1er les de sortida.

;---TRACTAMENT DADES D'ENTRADA--------------------;Processament de les dades d’entrada a enviar;dels sensors, transductors, etc...

INICIAL: mov r0,#0 mov r1,#4 ;Configuració per 4bytes

;input/output mov a,r1INPUTS: jz FI_INPUTS

mov a,u_inp_buf ;el 1er valor de u_inp_buf;ve de la inicialitzacio

mov b,#8d mul ab ;multipliquem per 8 mov dph,b mov dpl,a mov a,r0 add a,dpl mov dpl,a mov a,#10h add a,dph mov dph,a ;dptr = dptr + 1000h

;---NO SE SI ESTA BE------------------------------

Page 119: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

113

mov r0,io_punter ;@ RAM que conté les;entrades a enviar

mov a,@r0 ;carrega byte dades a;acumulador

mov @dptr,a dec r1 mov a,r1 inc r0 jmp INPUTS

FI_INPUTS: mov dptr,#n_di_bufcm ;Busquem nou punter a

;dades d’entrada movx a,@dptr ;al reg. de param. de

;processament i anl a,#03h ;ens quedem els 3 últims

;bits per discriminar dec a jz PTR_0 ;si es punter 0 jb a.0,PTR_1 ;punter 1, oPTR_2: mov dptr,#di_buf_pt1 ;punter 2. movx a,@dptr mov u_inp_buf,a ;Obtenim una nova @ on ;s'escriuran les noves

;dades ljmp DIAGNOSI

;---PUNTER 0--------------------------------------

PTR_0: mov dptr,#di_buf_pt1 ;punter 0 movx a,@dptr mov u_inp_buf,a ;obtenim una nova @ on ;s'escriuran les noves

;dades ljmp DIAGNOSI ;Saltem a la diagnosi

;---PUNTER 1-------------------------------------

PTR_1: mov dptr,#di_buf_pt1 ;punter 1 movx a,@dptr mov u_inp_buf,a ;obtenim una nova @ on ;s'escriuran les noves

;dades ljmp DIAGNOSI

;-------------------------------------------------------------------

;---TRACTAMENT DADES DE SORTIDA------------------; Aquí es procesen les dades de sortida una; vegada rebudes del master

Page 120: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

114

DX_OUT: mov dptr,#int_ack_h movx a,@dptr orl a,#20h ;Reconeixem la

;interrup. posant el movx @dptr,a ;bit 5 a '1'.

mov cnt_i,#0 ;Inicialitzem variable;per comptador

mov dptr,#nt_do_bf_c ;Agafem punter al buffer;de sortida

movx a,@dptr anl a,#03h jb a.0,BUF1_3

;Si arriva aqui es el buffer 2. Llavors hem de;trobar l’@ a la qual es troba aquest buffer

BUF2_OUT: mov dptr,#do_buf_pt2 movx a,@dptr mov b,#8 mul ab ;multipliquem per 8 mov dph,b mov dpl,a mov a,#10h add a,dph mov dph,a ;dptr=dptr+1000h ljmp WR_OUTPUT

BUF1_3: jb a.1,BUF3_OUT ;Discriminem si es buffer;1 o el 3

BUF1_OUT: mov dptr,#do_buf_pt1 ;Carrega @ del registre

;al dptr. movx a,@dptr ;Carreguem contingut del

;registre a A. mov b,#8 mul ab ;Multiplic. per 8 per

;accedir a 1,5k. mov dph,b ;Carreguem valors al dptr mov dpl,a ;Tindrem una @ de 11 bits

;al dptr mov a,#10h add a,dph mov dph,a ;dptr=dptr+1000h

ljmp WR_OUTPUT ;Anem a escriure sortides

Page 121: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

115

BUF3_OUT: mov dptr,#do_buf_pt3 movx a,@dptr mov b,#8 mul ab ;Multipliquem per 8 mov dph,b mov dpl,a mov a,#10h add a,dph mov dph,a ;dptr=dptr+1000h

;Aquí tenim el dptr carregat amb l'@ del buffer1;o 2 o 3.

WR_OUTPUT:jb cnt_i.2,SALT ;Comparem si cnt_i=4.

;(4bytes input/output) movx a,@dptr ;Movem contingut iRAM a

;l'acumulador. mov io_punter+cnt_i,a ;Copiem dades de sortida

;a la I/O. inc cnt_i ljmp WR_OUTPUT

SALT: ljmp INICIAL

;---TRACTAMENT DE LA DIAGNOSI---------------------

DIAGNOSI: mov a,io_punter ;Ultim byte de sortides mov diag_new,a ;com a byte de diagnosi. mov a,user_flag ;Mirem si nou buffer de

;diagnosi disponible.

jz BUFER_DISP mov a,diag_new cjne a,diag_old,TRACT_DIAG ;Si byte vell igual

;al byte nou ljmp BUFER_DISP ;no hi ha peticio de

;diagnosi.

TRACT_DIAG: mov a,diag_new anl a,#07h mov r0,a mov a,diag_old anl a,#07h subb a,r0 ;comparem si els 3 £ltims

;bits dels

Page 122: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

116

jz ASIGN_BYTE ;Els 2 bytes iguals o no. mov diag_code,r0 ;Tres bits com a codi de

;diagnosi. jb diag_new.0,DIAG_16

DIAG_6: mov asign_long,#6d ;Longitud de diagnosi de;6 bytes

ljmp CONTINUE

DIAG_16: mov asign_long,#16d ;Longitud de diagnosi de;16 bytes

CONTINUE: acall BUF1_2 ;Ens torna num.punter a;l'acumulador.

jb a.0,BUF1_LEN ;Assignem una longitud al;buffer 1/2

jb a.1,BUF2_LEN ;de diagnosi que toqui ljmp WRITE_DIAG

;assignació de longitud al buffer de diagnosi 1BUF1_LEN: mov dptr,#len_dg_bf1 mov a,asign_long movx @dptr,a ljmp WRITE_DIAG

;assignació de longitud al buffer de diagnosi 2BUF2_LEN: mov dptr,#len_dg_bf2 mov a,asign_long movx @dptr,a

;---ESCRIBIM DIAGNOSI----------------------------

WRITE_DIAG: mov a,u_diag_b mov b,#8d mul ab ;Multipliquem per 8 mov dph,b ;Carreguem part alta dptr mov dpl,a ;Carreguem part baixa dptr mov a,#10h add a,dph mov dph,a ;dptr=dptr+1000h

;CREEM 6/16 BYTES CONSECUTIUS A LA MEMORIA RAM ON;L'SPC3 ANIRA A BUSCAR LA DIAGNOSI.

mov r0,asign_long ;Pasem longitud a reg0 per;comparar.

dec r0 mov a,diag_code movx @dptr,a ;Assignem codi de

Page 123: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

117

;diagnosi al 1er byte. mov a,r0

OMPLE_DIAG: jz FI_OMPLE ;Fi del bucle si a=0. inc dptr mov a,#FFh movx @dptr,a ;Posem FFh als 5 bytes

;restants dec r0 mov a,r0

ljmp OMPLE_DIAG ;Fa el bucle 5 o 15;vegades

mov user_flag,#0d ;Posem el flag de diagnosi;a FALS

ASIGN_BYTE:

mov diag_old,diag_new ;Assignem el nou byte al;vell

;---CANVI DE BUFFER DE DIAGNOSIS-----------------BUFER_DISP: mov dptr,#int_req_h movx a,@dptr jb a.4,ACKNOW ;Hi ha un nou buffer de

;diag disp? ljmp FI_OB1 ;Tornem al principi.Bucle

;infinit

ACKNOW: mov dptr,#int_ack_h movx a,@dptr orl a,#10h ;Reconeixem interrupci¢

;posant bit 4 a '1'. movx @dptr,a

acall BUF1_2 jb a.0,BUF1_DIAG jb a.1,BUF2_DIAG

BUF1_DIAG: mov dptr,#dg_buf_pt1 ;Buffer1 nou buffer

;disponible. movx a,@dptr mov u_diag_b,a ;U_diag_b conte adreça de

;nou buffer

Page 124: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Desenvolupament de la Placa Prototipus Xavier Pallàs i Sergi Aluja

118

ljmp SET_FLAG

BUF2_DIAG: mov dptr,#dg_buf_pt2 ;Buffer2 nou buffer

;disponible movx a,@dptr mov u_diag_b,a ;u_diag_b conte adreça de

;nou buffer

SET_FLAG: mov user_flag,#1d ;posem el flag a TRUE

FI_OB1: ret ;Tornem al principi.;Bucle infinit

;CRIDA A LA SUBRUTINA DE DISCRIMINACIO DEL BUFFER DE DIAGNOSI

;La subrutina discrimina entre els dos buffer de diagnosi.;Carregael valor a l’acumulador

BUF1_2: mov dptr,#dig_buf_sm ;Acces al registre;d’estat dels;buffers de diagnosi.

movx a,@dptr anl a,#03h ;Mascara.Bits 7..3=‘0’. dec a jz BUF1 ;Si a=0 buffer 1 pertany a

;l’usuari.

movx a,@dptr anl a,#0ch ;Interessen bits 2,3 rr a rr a dec a jz BUF2 ;Si a=0 buffer 2 pertany

;a l’usuari. ;Sino cap buffer per

;usuariljmp ERROR

BUF1: mov a,#1d ljmp FINALBUF2: mov a,#2d

ljmp FINALERROR: mov a,#FFhFINAL: ret ;Fi de la subrutina .end

Page 125: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Entorn de Desenvolupament del Ensamblador Xavier Pallàs i Sergi Aluja

119

5 Entorn de Desenvolupament del Ensamblador

5.1 Introducció

Per a la realització del nostre projecte necessitem un microcontrolador per portar lagestió de l’aplicació i anar proveint de les dades necessàries al SPC3 per a la comunicacióPROFIBUS DP. El microcontrolador que anàvem a posar era un 80C32, però s’ensplantejaven varis problemes alhora de dissenyar i depurar la nostra aplicació.

El primer es el tipus de memòria a utilitzar. Necessitem una memòria no volàtilperquè quan trèiem tensió de la targeta, volem que s’ens reinici amb una parametrització iconfiguració establerta. Això ens porta a la implantació de una memòria EPROM oEEPROM però aquesta possible solució ens porta nous inconvenients.

Si la memòria es EPROM necessitem gravar-la i programar-la fora de la nostraplaca. Si la memòria es una EEPROM necessitem 2 tipus d’alimentacions a la nostra placaprototip (una alimentació només per borrar aquesta EEPROM)

Com veiem, aquestes solucions seran vàlides un cop tinguem clar el funcionament ihaguem depurat el software. Durant l’etapa de desenvolupament trobem una solució moltmés encertada, l’emulador DCSemu (Emulador de Sistemes de Control Distribuït)

Aquest sistema ens permet carregar el programa (una vegada ensamblat ambl’X8051), podent així simular el microcontrolador (80C32), l’EPROM i la RAM de latargeta prototipus. Les connexions entre emulador i SPC3 son les mateixes que hi hauriaentre un 80C32 i l’SPC3. Un inconvenient es que es complica una mica el mapa dememòria.

5.2 Funcionament bàsic del emulador

El sistema DCSemu te com a objectiu emular els SCD (Sistemes de ControlDistribuïts) que es basen en el protocol RDbus i família de microcontroladors 80C52. Laconnexió amb el PC es fa mitjançant una comunicació RS232 i el SO ha de ser DOS o Wxx.

Els programes que s’executen al DCSemu han d’haver sortit del ensambladorX8051 i necessitem els fitxers *.tsk i *.lst.

A part tenim un programa d’exemple (TEST), facilitat pel nostre ponent, on tenimles llibreries que porten la gestió de comunicacions (suports RS232 i RS485) i elscomandaments de depuració.

La targeta emuladora sempre arranca amb aquest programa TEST per defecte, otenim la possibilitat de resetejarla i posarla amb el programa de test en qualsevol momentmitjançant un jumper.

SOFT PC

Des de l’aplicació del DCSemu que tenim al PC podem carregar el nostre fitxer*.tsk a la targeta. A continuació de l’enviament el fitxer s’executa de forma automàtica.

Mentre el nostre fitxer s’està executant tenim un munt d’eines per realitzar ladepuració. Això es:

Page 126: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Entorn de Desenvolupament del Ensamblador Xavier Pallàs i Sergi Aluja

120

- Visualitzar i modificar variables internes (registers, iRAM,xRAM)

- Parar/arrancar l’execució

- Iniciar execució des de una posició escollida

- Punts de ruptura

- Execució Pas a Pas

Tipus/Rang Tamany DescripcióCodi:

0000h-7EFFh

32Kbytes Lliure

Dades(iRAM)

00h-14h

15h-1Fh

20h-29h

2Ah-2Ch

2Dh-2Eh

2Fh-59h

5Bh-FFh

21 bytes

11 bytes

10 bytes

3 bytes

2 bytes

43 bytes

165 bytes

Lliure

Debugger (llibrera DEBUG_M)

Lliure

Base de temps (BASE2_T0)

Gestió RS232

RDbus (per nosaltres lliure)

Lliure

Dades(xRAM)

0000h-009Fh

00A0h-03FFh

0400h-04FFh

0500h-FEFFh

FF00-FFFFh

160 bytes

864 bytes

256 bytes

?63kbytes

256 bytes

Llibreries (RS232xs, RS232dlc iDEBUG_M)

No es fa servir

UART externa pel RS232

Lliure

Registre del emulador

Taula 45. Mapeig de memòria del emulador

5.3 Integració del emulador a la placa prototipus

El disseny de la placa gira entorn al ASIC proporcionat per SIEMENS (l’SPC3) i ales seves necessitats, ja que es el que gestionarà la comunicació PROFIBUS DP. Elfabricant ens facilita el següent esquema de connexions per un microcontrolador com el80C32:

Page 127: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Entorn de Desenvolupament del Ensamblador Xavier Pallàs i Sergi Aluja

121

Figura 23. Connexionat del SPC3 amb un uC 80C32

Fem el disseny de la placa pensant també amb l’alimentació, clocks pels micros,senyalització i aïllament de les entrades/sortides i comunicació.

L’esquema que integra l’emulador amb el xip SPC3 es el següent:

I el mapa de memòria:

Tipus/Rang Tamany Descripció

Codi:

0000h-7EFFh

32Kbytes Lliure

Dades(iRAM)

00h-14h

15h-1Fh

20h-29h

2Ah-2Ch

2Dh-2Eh

2Fh-59h

5Ah-FFh

21 bytes

11 bytes

10 bytes

3 bytes

2 bytes

43 bytes

166 bytes

Lliure

Debugger (llibrera DEBUG_M)

Lliure

Base de temps (BASE2_T0)

Gestió RS232

RDbus (per nosaltres lliure)

Lliure

Dades(xRAM) Llibreries (RS232xs, RS232dlc i

Page 128: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Entorn de Desenvolupament del Ensamblador Xavier Pallàs i Sergi Aluja

122

0000h-009Fh

00A0h-03FFh

0400h-04FFh

0500h-7FFFh

8000h-FEFFh

FF00h-FFFFh

160 bytes

864 bytes

256 bytes

?63kbytes

?32kbytes

256 bytes

DEBUG_M)

No es fa servir

UART externa pel RS232

Lliure

Àrea del SPC3

Registre del emulador

Taula 46. Mapeig de memòria del emulador i del SPC3 integrats

Page 129: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Conclusions Xavier Pallàs i Sergi Aluja

123

6 Conclusions

Els sistemes d’automatització que incorporen perifèrics descentralitzats son el futuren l’automatització i el control de les indústries d’avui en dia. Durant el muntatge l’estalvien coure es molt important quan les distàncies comencen a ser considerables. En quan afuncionament, les velocitats de transmissió que s’estan aconseguint fan que la diferència detemps de reacció en sistemes descentralitzats i els muntatges amb cablejat convencionalsigui imperceptible en la majoria de processos. A part, el cablejat simple de la xarxaProfibus, fa que la detecció de les possibles avaries sigui senzill.

L’estandarització del sistema Profibus i la col·laboració i acceptació dels fabricantsfan d’aquest un dels sistemes amb projecció de cara al futur.

Malgrat això, ens hem trobat amb molts problemes durant el desenvolupamentd’aquest projecte, i hem tingut que modificar moltes vegades la nostra estratègia de treball.

SIEMENS defineix bastant de quina manera ha de treballar el professional. Aixídoncs, per realitzar el firmware d’una placa prototipus, ho plantegen des d’un punt de vistasenzill. Comparteixen el codi font en C tant de les llibreries com del programa principal, il’usuari només ha de modificar la part de l’aplicació i una mínima configuració per adaptarel seu aparell a la xarxa Profibus, sense haver-se de ficar amb gestió de buffers,parametritzacions, temps de watchdog, interrupcions, etc.. El problema de funcionar així esla poca facilitat que queda per a la depuració, ja que si funcionem amb els recursosfacilitats per SIEMENS (targeta IM-183), hem de jugar amb la EPROM, el programador iels UV cada vegada que volem fer una modificació en el programa. A part es necessaritenir el compilador en C per la família de uC 8051, per tant hauríem de comprar la sevallicència.

L’opció de fer-ho en ensamblador es molt atractiva des del punt de vista de podergestionar de manera molt diferent de l’original diferents parts del procés (polling en lloc deinterrupcions, reacció davant errades de comunicació...) Per altra banda, el codi a depurares molt mes extens i el coneixement del xip de comunicació (SPC3) ha de ser molt mésconcret.

Es en la documentació d’aquest xip SPC3 on hem trobat mes barreres per a larealització del nostre projecte, l’única informació facilitada es un manual d’usuari quedescriu els registres, el mapeig de memòria i les funcions del xip. Hem buscat un esquemaelèctric o de blocs per comprendre millor funcions com la detecció automàtica de lafreqüència de comunicació (baudrate) però no l’hem trobat i la normativa de PROFIBUStampoc ens ha ajudat a entendre quin pot ser el problema.

Acadèmicament ens ha servit per iniciar-nos en el camp de les comunicacionsindustrials, veure i experimentar el procés de disseny d’una placa, codi ensamblador,emulació, recerca de documentació i estàndaritzacions. Durant la realització d’aquesttreball hem pogut posar en pràctica molts dels coneixements adquirits durant la carrera iveure com la teoria passa a la pràctica.

Al final d’haver treballat en la placa prototipus i d’haver revisat tota la informació dela que disposem, no hem pogut solucionar el problema de la detecció del “baudrate”

Com que hem excedit el temps que hi havia programat per a la realització d’aquestprojecte i no es veu pròxima una possible solució, es decideix presentar com a estudiperquè s’aprofiti la feina realitzada i a partir d’aquí es pugui arribar a un fi pràctic.

Page 130: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Bibliografia Xavier Pallàs i Sergi Aluja

124

7 ANNEX

7.1 Firmware de la Targeta IM-183

7.1.1 Diagrama General

inici

inicialització

Tractament dades de sortida

Tractament dades d’entrada

Tractament de la diagnosi

Dada d’entrada ? dades provinents de sensors,etc… cap al master.Dada de sortida ? dades desde master a slave

Page 131: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

125

7.1.2 Diagrama de les Interrupcions

Page 132: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

126

Page 133: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

127

Page 134: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

128

7.1.3 Codi Font

7.1.3.1 Programa principal/*+------------------------------------------------------------------------+| Project:DPS2 w i t h S P C 3 || ||File:USERSPC3.C ||Date:24-Mar-1997 ||Version:V1.30 ||InitialEditor:Schmid Xaver |+------------------------------------------------------------------------+|Description: || This module contains the main routine and some supporting || routines. || || In this example the input and output bytes are transfered to the || IO area, which is addressed by the io_byte_ptr. || In the case of the IM183-1 there is RAM. || The first byte of the input data is used as a service byte || for the change diag function. || The received user parameter data were copied to an interim buffer || and from this to the user diagnosis data. |+------------------------------------------------------------------------+| following environments are supported || Processor: SAB C165 || Compiler: BSO Tasking 80166 C Cross-Compiler, V 4.0 || Processor: iNTEL 8032 || Compiler: Keil || || |+------------------------------------------------------------------------+| Copyright (C) SIEMENS AG, 1994 || All Rights reserved |+------------------------------------------------------------------------+| History: || V0.9,SX,24-Oct-1995, Pilot verion || V1.0,SX,02-Nov-1995, 1st version || V1.1,SX,09-Nov-1995, Delete RAM from 0x16H, not from 16d || no initialization of the interrupt 1 level/egde || V1.2,SX,05-Aug-1996, changes for Keil-C51 V5 || V1.2,SX,09-Aug-1996, IM182 support added || V1.3,MM,25-Mar-1997, IM182 support extracted || |+------------------------------------------------------------------------+| Technical support: Siemens Schnittstellencenter || AUT7 WKF B1 TDL2 || || Schmidt Xaver Mittelberger Martin || Tel.: 0911/750-2079 Tel.: 0911/750-2072 || || Fax.: -2100 || Mailbox: 0911/737972 || |+------------------------------------------------------------------------+*/

#define SPC3_INTEL_MODE TRUE#define SPC3_FAR

Page 135: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

129

#define SPC3_DPS2#define SPC3_DATA_XDATA

#define SPC3_INTEL_MODE !=1 /*Intel interface mode (ho hem posat naltres*/

#include <spc3dps2.h>

#if defined __C51__

#include <reg52.h>

#define huge#define global#define public

/* Defines for the IM183-1 */sbit HW_WATCHDOG_TRIGGER = P1^0; /* trigger input of the HW-WD */sbit SPC3_RESET = P3^4; /* SPC3-reset-Pin */#define SPC3_RESET_SET 1 /* reset-polarity */#define SPC3_INTERRUPT_ENABLE EX0 /* external interrupt of SPC3 */#define I_ENABLE 1 /* enable interrupt */#define SPC3_INTERRUPT_PRIOR PX0 /* ext Interrupt SPC3 polarity */#define P_HIGH 1 /* ext Interrupt SPC3 prio high */#define GLOBAL_INTERRUPT_ENABLE EA /* global interrupt */

#elif _C166/* C166 */#include "reg.h"

#pragma global#pragma class hb=SPC3_CLASS#pragma default_attributes#pragma public#pragma class hb=DIN_CLASS#pragma default_attributes

#endif

/*----------------------------------------------------------------------*//* STRUCTURES AND TYPEDEFS *//*----------------------------------------------------------------------*/

/* This is an example for a structure of a diagnosis with user data */struct diag_data_blk { UBYTE stationstatus_1; UBYTE stationstatus_2; UBYTE stationstatus_3; UBYTE master_add; UBYTE ident_high; UBYTE ident_low;

/*------------------ extern diag data -----------------*/ UBYTE header; UBYTE ext_diag_0; UBYTE ext_diag_1; UBYTE ext_diag_2; UBYTE ext_diag_3; UBYTE ext_diag_4; UBYTE ext_diag_5; UBYTE ext_diag_6;

Page 136: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

130

UBYTE ext_diag_7; UBYTE ext_diag_8; UBYTE ext_diag_9; UBYTE ext_diag_10; UBYTE ext_diag_11; UBYTE ext_diag_12; UBYTE ext_diag_13; UBYTE ext_diag_14; UBYTE ext_diag_15; UBYTE ext_diag_16; UBYTE ext_diag_17; };

enum ERRORCODES {IO_LENGTH_ERROR,INIT_ERROR,UNUSED};

/*----------------------------------------------------------------------*//* EXTERNAL FUNCTIONS *//*----------------------------------------------------------------------*/

/*----------------------------------------------------------------------*//* INTERNAL FUNCTIONS *//*----------------------------------------------------------------------*/void main (void);

void user_dps_reset (void);void build_diag_data_blk (struct diag_data_blk*);void user_error_function (enum ERRORCODES);/*----------------------------------------------------------------------*//* LITERALS *//*----------------------------------------------------------------------*/

#define TSDRMIN 11

#define OWN_ADDRESS 3#define IDENT_HIGH 0x00#define IDENT_LOW 0x08

#define DPS2_DISI() IEN = 0#define DPS2_ENI() IEN = 1

#define CFG_LEN 2#define CONFIG_DATA_INP 0x13#define CONFIG_DATA_OUTP 0x23

/*----------------------------------------------------------------------*//* MACROS *//*----------------------------------------------------------------------*/

/*----------------------------------------------------------------------*//* GLOBAL VARIABLES *//*----------------------------------------------------------------------*/

#pragma global

UBYTE real_no_add_chg;UBYTE this_station;UBYTE cfg_akt [20];UBYTE cfg_len_akt;DPS2_IO_DATA_LEN SPC3_PTR_ATTR *user_io_data_len_ptr;#pragma public

Page 137: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

131

struct diag_data_blk *diag_ptr;DPS2_BUFINIT dps2_buf;

UBYTE SPC3_PTR_ATTR *user_output_buffer_ptr;

UBYTE SPC3_PTR_ATTR *user_input_buffer_ptr;UBYTE SPC3_PTR_ATTR *real_config_data_ptr;void SPC3_PTR_ATTR *user_diag_buffer_ptr;

UBYTE ident_numb_high;UBYTE ident_numb_low;UBYTE dps_chg_diag_srvc_byte_new;UBYTE dps_chg_diag_srvc_byte_old;UBYTE diag_service_code;UBYTE diag_len;UWORD user_baud_value;UBYTE user_diag_flag;UBYTE *io_byte_ptr;UBYTE i;UBYTE zyk_wd_state;UBYTE zyk_dps_state;UBYTE prm_tst_buf[32]= {0,0,0,0,0,0,0,0,0,0,

0,0,0,0,0,0,0,0,0,0,

0,0,0,0,0,0,0,0,0,0,0,0};enum ERRORCODES error_code;

/* Locate the structure of the SPC3 in the address space */

SPC3 xdata spc3 _at_ 0x1000;

/************************************************************************//* D e s c r i p t i o n : *//* *//* USER-TASK *//************************************************************************/

void main (){

#if defined __C51__UBYTE xdata * xdata loesch;UWORD zaehl;

SPC3_RESET = SPC3_RESET_SET; /* force the Reset Pin */for(i = 100; i ; i--);SPC3_RESET = !SPC3_RESET_SET;

HW_WATCHDOG_TRIGGER = 1; /* Retrigger the HW Watchdog */HW_WATCHDOG_TRIGGER = 0;

SPC3_INTERRUPT_ENABLE = !I_ENABLE; /* Set the interrupt parameters */SPC3_INTERRUPT_PRIOR = P_HIGH; /* of the microprocessor */

loesch = &spc3.int_req.b[0]; /* Delete the SPC3 internal RAM */for (zaehl=0x16; zaehl<=0x05ff; zaehl++)

{*(loesch + zaehl) = 00;

Page 138: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

132

}

#elif _C166T3OUT = 1; /* force the SPC3 reset pin (P3.3) */for(i = 100; i ; i--);T3OUT = 0;CC11IC = 0x18; /* SPC3-Interrupt: ILVL = 6, GLVL = 0 */

#elseUBYTE * loesch;UWORD zaehl;

outp(SPC3_RESET,0x21);outp(SPC3_RESET,0x00);loesch = &spc3.int_req.b[0]; /* Delete the SPC3 internal RAM */for (zaehl=0x16; zaehl<=0x05ff; zaehl++){

*(loesch + zaehl) = 00;}

#endif

/* activate the indication functions */SPC3_SET_IND(GO_LEAVE_DATA_EX | WD_DP_MODE_TIMEOUT | NEW_GC_COMMAND |\

NEW_SSA_DATA | NEW_CFG_DATA | NEW_PRM_DATA | BAUDRATE_DETECT);

/* set the watchdog value in the SPC3, which checks the microprocessor */DPS2_SET_USER_WD_VALUE(20000);

/* In this example the input and output bytes are transfered to the IO area, which is addressed by the io_byte_ptr. In the case of the IM183 there is RAM. */

io_byte_ptr = ((UBYTE*) 0x2E000L);

for (i=0; i<2; i++){(*(io_byte_ptr + i)) = 0;}

/* fetch the station address, in this case the station address is fixed in EPROM*/this_station = OWN_ADDRESS;

/* get the Identnumber */ident_numb_high = IDENT_HIGH;ident_numb_low = IDENT_LOW;

/* Allow not the change of the slave address by the PROFIBUS DP *//* Attention: The set_slave_address service is not blocked by this */real_no_add_chg = TRUE;

/* Reset the User und DPS */user_dps_reset();

/* Enable the SPC3 interrupt in the interupt controller of the microprocessor */#if defined __C51__ SPC3_INTERRUPT_ENABLE = I_ENABLE; GLOBAL_INTERRUPT_ENABLE = I_ENABLE;

Page 139: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

133

#elif _C166 CC11IE = 1;#endif

for (;;){ /*=== Begin of the endless loop ===*/zyk_wd_state = SPC3_GET_WD_STATE(); /*for info.: the actuall WD State*/

zyk_dps_state = DPS2_GET_DP_STATE(); /*for info.: the actuall PROFIBUS DP State*/

DPS2_RESET_USER_WD(); /* Trigger the user watchdog of the SPC3 */

#ifdef __C51__HW_WATCHDOG_TRIGGER = 1; /* Retrigger the HW Watchdog of the IM183*/HW_WATCHDOG_TRIGGER = 0;

#endif

/*============ Handling of the output data =================*/

if (DPS2_POLL_IND_DX_OUT()) /* are new output date available? */{/* Confirm the receiving */DPS2_CON_IND_DX_OUT();

/* Get the pointer to the actual output data */user_output_buffer_ptr = DPS2_OUTPUT_UPDATE();

/* Example: Copy the output data to the IO */for (i=0; i<user_io_data_len_ptr->outp_data_len; i++) { (*((io_byte_ptr)+i)) = (*(((UBYTE SPC3_PTR_ATTR*) user_output_buffer_ptr)

+ i)); }}

/*============ Handling of the input data =================*/

/* Write the input data from the periphery to the ASIC */for (i=0; i<user_io_data_len_ptr->inp_data_len; i++)

{*(((UBYTE SPC3_PTR_ATTR*) user_input_buffer_ptr) + i) = *((io_byte_ptr) +

i);}

/* Give the actuall pointer / data to the SPC3/DPS2 an get a new pointer, where the next input data can be written */

user_input_buffer_ptr = DPS2_INPUT_UPDATE();

/*== Handling of the external diagnosis and other user defined actions =====*//* ATTENTION: this is only an example */

/* Use the first Byte of the Input data as a service byte *//* for the change diag function */

dps_chg_diag_srvc_byte_new = *((UBYTE*)(io_byte_ptr));

if (user_diag_flag) /* is a diagnosis buffer available? */

Page 140: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

134

{/* Is there a change in the service byte (1.input byte) */if (dps_chg_diag_srvc_byte_new == dps_chg_diag_srvc_byte_old)

{ /* no action */ }

else{/*== Handling of the external diagnosis =====*//* only the least significant 3 byte are used */if ((dps_chg_diag_srvc_byte_new & 0x07) !=

(dps_chg_diag_srvc_byte_old & 0x07)){/* Mask the 3 bits */diag_service_code = dps_chg_diag_srvc_byte_new & 0x07;

/* Write the length of the diagnosis data to the SPC3 */if (dps_chg_diag_srvc_byte_new & 0x01)

diag_len = 16; /* max. value of the IM308B */else

diag_len = 6;diag_len = DPS2_SET_DIAG_LEN(diag_len);

/* Write the external diagnosis data to the SPC3 */build_diag_data_blk ((struct diag_data_blk

*)user_diag_buffer_ptr);

/* Set the service code *//* 0x01 External diagnosis *//* 0x02 Static diagnosis *//* 0x04 External diagnosis Overflow */DPS2_SET_DIAG_STATE(diag_service_code);

/* Trigger the diagnosis update in the SPC3*/DPS2_DIAG_UPDATE();

/* Store "no diagnosis buffer available" */user_diag_flag = FALSE;

}

dps_chg_diag_srvc_byte_old = dps_chg_diag_srvc_byte_new;

}}

/*================ Check the buffers and the state =================*/

/* Is a new diagnosis buffer available */ if (DPS2_POLL_IND_DIAG_BUFFER_CHANGED())

{DPS2_CON_IND_DIAG_BUFFER_CHANGED(); /* Confirm the indication */user_diag_buffer_ptr = DPS2_GET_DIAG_BUF_PTR(); /* Fetch the pointer */user_diag_flag = TRUE; /* Set the Notice "Diag. buffer availble */}

} /*=== endless loop ===*/

return;

Page 141: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

135

}

/* #pragma public */

/************************************************************************//* D e s c r i p t i o n : *//* *//* Reset the USER and DPS *//************************************************************************/

void user_dps_reset (void){enum SPC3_INIT_RET dps2_init_result; /* result of the initial. */

DPS2_SET_IDENT_NUMBER_HIGH(ident_numb_high); /* Set the Identnumber */DPS2_SET_IDENT_NUMBER_LOW(ident_numb_low);

SPC3_SET_STATION_ADDRESS(this_station); /* Set the station address*/

SPC3_SET_HW_MODE(SYNC_SUPPORTED | FREEZE_SUPPORTED | INT_POL_LOW | USER_TIMEBASE_10m);/* Set div. modes of the *//* SPC3 */

if (!real_no_add_chg){DPS2_SET_ADD_CHG_ENABLE(); /* Allow or allow not the */} /* address change */

else{DPS2_SET_ADD_CHG_DISABLE();}

/* initialize the length of the buffers for DPS2_INIT() */dps2_buf.din_dout_buf_len = 244;dps2_buf.diag_buf_len = sizeof(struct diag_data_blk);dps2_buf.prm_buf_len = 20;dps2_buf.cfg_buf_len = 10;

/* dps2_buf.ssa_buf_len = 5; reserve buffer if address change is possible */dps2_buf.ssa_buf_len = 0; /* Suspend the address change service */

/* No storage in the IM183 ispossible */

/* initialize the buffers in the SPC3 */dps2_init_result = SPC3_INIT(&dps2_buf);if(dps2_init_result != SPC3_INIT_OK)

{ /* Failure */for(;;)

{error_code = INIT_ERROR;user_error_function(error_code);}

}

/* Get a buffer for the first configuration */real_config_data_ptr = (UBYTE SPC3_PTR_ATTR*) DPS2_GET_READ_CFG_BUF_PTR();

/* Set the length of the configuration data */

Page 142: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

136

DPS2_SET_READ_CFG_LEN(CFG_LEN);

/* Write the configuration bytes in the buffer */*(real_config_data_ptr) = CONFIG_DATA_INP; /* Example 0x13 */*(real_config_data_ptr + 1) = CONFIG_DATA_OUTP; /* Example 0x23 */

/* Store the actuall configuration in RAM for the check in the check_configuration sequence (see the modul intspc3.c) */cfg_akt[0] = CONFIG_DATA_INP;cfg_akt[1] = CONFIG_DATA_OUTP;cfg_len_akt = 2;

/* Calculate the length of the input and output using the configuration bytes*/user_io_data_len_ptr = dps2_calculate_inp_outp_len (real_config_data_ptr,(UWORD)CFG_LEN);if (user_io_data_len_ptr != (DPS2_IO_DATA_LEN *)0)

{/* Write the IO data length in the init block */DPS2_SET_IO_DATA_LEN(user_io_data_len_ptr);}

else{for(;;)

{error_code =IO_LENGTH_ERROR;user_error_function(error_code);}

}

/* Fetch the first input buffer */user_input_buffer_ptr = DPS2_GET_DIN_BUF_PTR();

/* Fetch the first diagnosis buffer, initialize service bytes */dps_chg_diag_srvc_byte_new = dps_chg_diag_srvc_byte_old = 0;user_diag_buffer_ptr = DPS2_GET_DIAG_BUF_PTR();user_diag_flag = TRUE;

/* for info: get the baudrate */user_baud_value = SPC3_GET_BAUD();

/* Set the Watchdog for the baudrate control */SPC3_SET_BAUD_CNTRL(0x1E);

/* and finally, at last, los geht's start the SPC3 */SPC3_START();

}

/************************************************************************//* D e s c r i p t i o n : *//* *//* user_error_function *//************************************************************************/void user_error_function(enum ERRORCODES errors){

char ch;/* An error has occured -> user defined actions *//* you can check the error_code */

Page 143: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

137

ch=errors;while (1);

}

/************************************************************************//* D e s c r i p t i o n : *//* *//* build diagnostics datablock *//* *//* In this EXAMPLE the received user parameter data are copied to *//* the user diagnosis data! *//************************************************************************/

void build_diag_data_blk (struct diag_data_blk * diag_ptr) { diag_ptr -> header = (diag_len - 6); /* subtract the fixed */ diag_ptr -> ext_diag_0 = prm_tst_buf[0]; /* DP diagnosis */ diag_ptr -> ext_diag_1 = prm_tst_buf[1]; diag_ptr -> ext_diag_2 = prm_tst_buf[2]; diag_ptr -> ext_diag_3 = prm_tst_buf[3]; diag_ptr -> ext_diag_4 = prm_tst_buf[4]; diag_ptr -> ext_diag_5 = prm_tst_buf[5]; diag_ptr -> ext_diag_6 = prm_tst_buf[6]; diag_ptr -> ext_diag_7 = prm_tst_buf[7]; diag_ptr -> ext_diag_8 = prm_tst_buf[8]; diag_ptr -> ext_diag_9 = prm_tst_buf[9]; diag_ptr -> ext_diag_10 = prm_tst_buf[10]; diag_ptr -> ext_diag_11 = prm_tst_buf[11]; diag_ptr -> ext_diag_12 = prm_tst_buf[12]; diag_ptr -> ext_diag_13 = 0; diag_ptr -> ext_diag_14 = 0; diag_ptr -> ext_diag_15 = 0; diag_ptr -> ext_diag_16 = 0; diag_ptr -> ext_diag_17 = 0; }

7.1.3.2 Adjunt

/*+-----------------------------------------------------------------------------+| Project: D P S 2 w i t h S P C 3 || || File: SPC3DPS2.C || Date: 24-Mar-1997 || Version: V 1.4 || Initial Editor: Thomas Lang |+-----------------------------------------------------------------------------+| Description: || This file contains the declarations, required for use of the SPC3 with || DPS2-Interface. || || Before #include "SPC3DPS2.H" must be defined: || #define SPC3_INTEL_MODE !=0: Intel-Interface || ==0: Motorola-Interface || || ======================== for SAB C165: ================================ || #define SPC3_FAR if the SPC3 is located in FAR-address space |

Page 144: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

138

| #define SPC3_NEAR if the SPC3 is located in NEAR-address space || || ======================= for iNTEL 8032: =============================== || #define SPC3_DATA_XDATA if user-data in xdata-space || #define SPC3_DATA_IDATA if user-data in idata-space || else generic pointers are used || || =========================== general =================================== || Before #include "SPC3DPS2.H" may be defined: || #define SPC3_NO_BASE_TYPES: The types UBYTE, UWORD, BYTE and WORD will || not be declared || |+-----------------------------------------------------------------------------+| following environments are supported || Processor: SAB C165 || Compiler: BSO Tasking 80166 C Cross-Compiler, V 4.0 || Processor: iNTEL 8032 || Compiler: Keil |+-----------------------------------------------------------------------------+| Copyright (C) SIEMENS AG, 1994 || all rights reserved |+-----------------------------------------------------------------------------+| History: || V1.0,LT, first official version || V1.3,MM,25-Mar-1997, translation || |+-----------------------------------------------------------------------------+| Technical support: Siemens Schnittstellencenter || AUT7 WKF B1 TDL2 || || Schmidt Xaver Mittelberger Martin || Tel.: 0911/750-2079 Tel.: 0911/750-2072 || || Fax.: -2100 || Mailbox: 0911/737972 || |+-----------------------------------------------------------------------------+*/

#ifndef SPC3_H__ /* include only once */#define SPC3_H__ /* Se suposa que fa: si no esta definit SPC3_H_ defineix-lo*/

#ifndef TRUE #define TRUE 1 /*defineix el TRUE si no estava definit*/#endif#ifndef FALSE #define FALSE 0 /*Idem que amb el TRUE*/#endif

#ifndef SPC3_INTEL_MODE /*el defineix UserSpc3.c-->No error*/ #error !!! FEHLER !!! SPC3_INTEL_MODE wurde nicht deklariert !!!#endif /* Ende fuer SPC3_INTEL_MODE */

/*+-------------------------------------------------------------------------+ | C o m p i l e r - d e p e n d e n d D e f i n i t i o n s | +-------------------------------------------------------------------------+*/

/*------------------------ BSO Tasking C166-Compiler ------------------------*/#ifdef _C166 /*aquí no entra*/ #define _INTEL_COMP /* iNTEL-mode */ #define SPC3_DATA_ATTR

Page 145: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

139

#ifndef SPC3_NO_BASE_TYPES /*no entra*/#ifndef SPC3_BASE_TYPES_DEF__ typedef unsigned char UBYTE; typedef unsigned int UWORD; typedef char BYTE; typedef int WORD; #define SPC3_BASE_TYPES_DEF__#endif /* end SPC3_BASE_TYPES_DEF__ */

#endif /* end SPC3_NO_BASE_TYPES */ #ifdef SPC3_FAR /*esta definit SPC3_FAR al userspc3.c-->entra*/

#define SPC3_PTR_ATTR fartypedef unsigned long SPC3_ADTYP;

#else#ifdef SPC3_NEAR /*no entra*/ #define SPC3_PTR_ATTR near typedef unsigned int SPC3_ADTYP; typedef unsigned short SPC3_OFFS;#else #error !!! ERROR !!! neither SPC3_FAR nor SPC3_NEAR defined !!!#endif /* end SPC3_NEAR */

#endif /* end SPC3_FAR *//*--------------------- end BSO Tasking C166-Compiler ----------------------*//*--------------------------- Keil 80C32-Compiler ---------------------------*/#elif defined __C51__ /* Motorola-mode -->Se suposa que aquest es el que ens toca*/ #ifndef SPC3_NO_BASE_TYPES

#ifndef SPC3_BASE_TYPES_DEF__ typedef unsigned char UBYTE; typedef unsigned int UWORD; typedef char BYTE; typedef int WORD; #define SPC3_BASE_TYPES_DEF__#endif /* end SPC3_BASE_TYPES_DEF__ */

#endif /* end SPC3_NO_BASE_TYPES */ #define SPC3_PTR_ATTR xdata #ifdef SPC3_DATA_XDATA /*Entrem aquí*/

#define SPC3_DATA_ATTR xdata #else

#ifdef SPC3_DATA_IDATA #define SPC3_DATA_ATTR idata#else #define SPC3_DATA_ATTR#endif

#endif typedef unsigned int SPC3_ADTYP; typedef unsigned short SPC3_OFFS; typedef unsigned int SPC3_PTR;/*------------------------ end Keil 80C32-Compiler -------------------------*/#else /* no supported compiler found */ #error !!! ERROR !!! Unknown compiler !!!#endif /*-- end Compiler-dependent Declarations */

/*---------------------------- helpmakros ----------------------------------*//*-- byte-swapping --*/#if SPC3_INTEL_MODE /*-- SPC3 with iNTEL-interface --*/ #define _IML 0 /* Interface-Motorola, Low-Byte */ #define _IMH 1 /* Interface-Motorola, High-Byte */ #ifndef _INTEL_COMP

/*-- iNTEL-interface, but no iNTEL-Compiler */#define _SWAP_WORDS /* words must be swapped */

#endif#else

Page 146: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

140

/*-- SPC3 with Motorola-interface --*/ #define _IML 1 /* Interface-Motorola, High-Byte */ #define _IMH 0 /* Interface-Motorola, Low-Byte */ #ifdef _INTEL_COMP

/*-- Motorola-interface, but iNTEL-Compiler */#define _SWAP_WORDS /* words must be swapped */

#endif#endif

#ifdef _SWAP_WORDS #define SWAP_W(WX) (((WX)<<8) | (((WX)>>8)&0xff))#else #define SWAP_W(WX) (WX)#endif

/*-- use of spec prm buf (for dps2_buf_init) --*/#ifdef DPS2_USE_SPEC_PRM_BUF #define _USE_SPEC_PRM_BUF__ TRUE#else #define _USE_SPEC_PRM_BUF__ FALSE#endif

/*-- NULL-pointer in SPC3-compatible memory-model --*/#define SPC3_NIL ((void SPC3_PTR_ATTR*)0)

/*+-------------------------------------------------------------------------+ | T y p e d e f s a n d S t r u c t u r e s | +-------------------------------------------------------------------------+*/

/*-- returncodes of SPC3_INIT() --*/enum SPC3_INIT_RET {SPC3_INIT_OK, SPC3_INITF_LESS_MEM, SPC3_INITF_NOFF,

DPS2_INITF_DIN_DOUT_LEN, DPS2_INITF_DIAG_LEN,DPS2_INITF_PRM_LEN, DPS2_INITF_CFG_LEN,

DPS2_INITF_SSA_LEN,FDL_INITF_IVP, FDL_INITF_SCNT };

/*-- struktur of the SPC3 --*/typedef struct { /*-- start of the processor-registers --*/ union { /* 0x00: Int.-Request-Register */

UWORD w;UBYTE b[2];} int_req;

union { /* 0x02: */union { /* Int.-Register (read) */ UWORD w; UBYTE b[2]; } com;union { /* Int.-Acknowledge-Reg. (write) */ UWORD w; UBYTE b[2]; } ack;} int_reg;

union { /* 0x04: Interrupt-Mask- and Status-Reg. */UWORD mask; /* Interrupt-Mask-Register (write) */UBYTE status[2]; /* Status-Register (read) */} is_reg;

UWORD mode_reg0; /* 0x06 */ union { /*-- union x1 is for R/W */

struct { /*-- read-area */ UBYTE din_buffer_sm; /* 0x08 */ UBYTE new_din_buf_cmd; /* 0x09 */

Page 147: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

141

UBYTE dout_buffer_sm; /* 0x0a */ UBYTE next_dout_buf_cmd; /* 0x0b */ } r;struct { /*-- write-area */ UBYTE mode_reg1_s; /* 0x08 */ UBYTE mode_reg1_r; /* 0x09 */ UBYTE wd_baud_ctrl_val; /* 0x0a */ UBYTE mintsdr_val; /* 0x0b */ } w;} x1;

UBYTE diag_buffer_sm; /* 0x0c */ UBYTE new_diag_buffer_cmd; /* 0x0d */ UBYTE user_prm_data_ok; /* 0x0e */ UBYTE user_prm_data_nok; /* 0x0f */ UBYTE user_cfg_data_ok; /* 0x10 */ UBYTE user_cfg_data_nok; /* 0x11 */ UBYTE user_ddb_prm_data_ok; /* 0x12 */ UBYTE user_ddb_prm_data_nok; /* 0x13 */ UBYTE ssa_buffer_free_cmd; /* 0x14 */ UBYTE reserved_15; /* 0x15 */ /*-- start of theorganizational parameters --*/ UBYTE r_ts_adr; /* 0x16 */ UBYTE r_fdl_sap_list_ptr; /* 0x17 */ UWORD r_user_wd_value; /* 0x18 */ UBYTE r_len_dout_buf; /* 0x1a */ UBYTE r_dout_buf_ptr[3]; /* 0x1b */ UBYTE r_len_din_buf; /* 0x1e */ UBYTE r_din_buf_ptr[3]; /* 0x1f */ UBYTE r_len_ddbout_buf; /* 0x22 */ UBYTE r_ddbout_buf_ptr; /* 0x23 */ UBYTE r_len_diag_buf[2]; /* 0x24 */ UBYTE r_diag_buf_ptr[2]; /* 0x26 */ UBYTE r_len_cntrl_buf[2]; /* 0x28 */ UBYTE r_aux_buf_sel; /* 0x2a */ UBYTE r_aux_buf_ptr[2]; /* 0x2b */ UBYTE r_len_ssa_buf; /* 0x2d */ UBYTE r_ssa_buf_ptr; /* 0x2e */ UBYTE r_len_prm_buf; /* 0x2f */ UBYTE r_prm_buf_ptr; /* 0x30 */ UBYTE r_len_cfg_buf; /* 0x31 */ UBYTE r_cfg_buf_ptr; /* 0x32 */ UBYTE r_len_read_cfg_buf; /* 0x33 */ UBYTE r_read_cfg_buf_ptr; /* 0x34 */ UBYTE r_len_ddb_prm_buf; /* 0x35 */ UBYTE r_ddb_prm_buf_ptr; /* 0x36 */ UBYTE r_score_exp; /* 0x37 */ UBYTE r_score_error; /* 0x38 */ UBYTE r_real_no_add_change; /* 0x39 */ UBYTE r_ident_low; /* 0x3a */ UBYTE r_ident_high; /* 0x3b */ UBYTE r_gc_command; /* 0x3c */ UBYTE r_len_spec_prm_buf; /* 0x3d */ UBYTE reserved_3e_3f[2]; /* 0x3e - 0x3f */ UBYTE user[1472]; /* 0x40: Speicherbereich fuer User */} SPC3;

/*-- structure for DPS2-Buffer-Initialization --*/typedef struct { UWORD din_dout_buf_len; /* total len of I/O data */ UBYTE diag_buf_len; /* len of diagnosticdatabuffer */ UBYTE prm_buf_len; /* len of parameterbuffer */ UBYTE cfg_buf_len; /* len of config-databuffer */

Page 148: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

142

UBYTE ssa_buf_len; /* len of set-slave-address-buffer */ } DPS2_BUFINIT;

/*============= DPS2-specific Typedefs and Structures =============*/

/*-- structure for I/O-len calculation --*/typedef struct { UBYTE inp_data_len; UBYTE outp_data_len; } DPS2_IO_DATA_LEN;

/*-- structure for Diagstic-data-telegramms --*/struct dps_diag_state_def{ UBYTE state_1; UBYTE state_2; UBYTE state_3; UBYTE master_add; UBYTE ident_number_high; UBYTE ident_number_low; UBYTE first_header_byte;};

/*-- structure for parameter-telegramms --*/struct dps_prm_state_def{ UBYTE state; UBYTE wd_fact_1; UBYTE wd_fact_2; UBYTE t_sdr_min; UBYTE ident_number_high; UBYTE ident_number_low; UBYTE group_ident; UBYTE first_user_prm_byte;};

/*-- structure for Set-Slave-Address-telegramms --*/struct dps_address_data{ UBYTE new_address; UBYTE ident_number_high; UBYTE ident_number_low; UBYTE no_add_chg; UBYTE first_rem_data_byte;};

/*+-------------------------------------------------------------------------+ | L i t e r a l s | +-------------------------------------------------------------------------+*/

/*--------------------- Mode-Register 0 ----------------------*/ #define DIS_START_CONTROL ((UWORD)0x0001) #define DIS_STOP_CONTROL ((UWORD)0x0002) #define EN_FDL_DDB ((UWORD)0x0004) #define ENABLE_DEF_MINTSDR ((UWORD)0x0008) #define INT_POL_LOW ((UWORD)0x0000) #define INT_POL_HIGH ((UWORD)0x0010) #define EARLY_RDY ((UWORD)0x0020) #define SYNC_SUPPORTED ((UWORD)0x0040) #define FREEZE_SUPPORTED ((UWORD)0x0080) #define DP_MODE ((UWORD)0x0100)

Page 149: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

143

#define EOI_TIMEBASE_1u ((UWORD)0x0000) #define EOI_TIMEBASE_1m ((UWORD)0x0200) #define USER_TIMEBASE_1m ((UWORD)0x0000) #define USER_TIMEBASE_10m ((UWORD)0x0400) #define SPEC_PRM_BUF ((UWORD)0x1000) #define SPEC_CLEAR ((UWORD)0x2000)

/*--------------------- Mode-Register 1 ----------------------*/ #define START_SPC3 0x01 #define EOI_SPC3 0x02 #define GO_OFFLINE_SPC3 0x04 #define USER_LEAVE_MASTER 0x08 #define EN_CHG_CFG_BUFFER 0x10 #define RES_USER_WD 0x20

/*-------------------- Status-Register 0 ---------------------*/ #define SPC3_OFFLINE_PASS 0x01 #define FDL_IND_ST 0x02 #define DPS2_DIAG_FLAG 0x04 #define ACCESS_VIOLATION 0x08

/*------------------ diagnostic-control -------------------*/ #define DPS2_EXT_DIAG 0x01 #define DPS2_STAT_DIAG 0x02 #define DPS2_EXT_DIAG_OVF 0x04

/*----------------- Global-Control-command ------------------*/ #define DPS2_CLEAR_DATA 0x02 #define DPS2_UNFREEZE 0x04 #define DPS2_FREEZE 0x08 #define DPS2_UNSYNC 0x10 #define DPS2_SYNC 0x20

/*----------------- indications (IR-Register) -----------------*/ /*-- indications as bytes --*/ #define MAC_RESET_B 0x01 /* Offline; DPS2 */ #define GO_LEAVE_DATA_EX_B 0x02 /* Leave DataExcahnge; DPS2 */ #define BAUDRATE_DETECT_B 0x04 /* Baudrate found; DPS2 */ #define WD_DP_MODE_TIMEOUT_B 0x08 /* DP-Watchdog expired; DPS2 */ #define USER_TIMER_CLOCK_B 0x10 /* Timer-Interval; DPS2 */ #define DDB_SCORE_ERROR_B 0x20 /* reserved */ #define NEW_DDB_PRM_DATA_B 0x40 /* reserved */ #define DDB_OUT_B 0x80 /* reserved */ #define NEW_GC_COMMAND_B 0x01 /* Global Control; DPS2 */ #define NEW_SSA_DATA_B 0x02 /* Set Slave Address; DPS2 */ #define NEW_CFG_DATA_B 0x04 /* Config Data; DPS2 */ #define NEW_PRM_DATA_B 0x08 /* Param. Data; DPS2 */ #define DIAG_BUFFER_CHANGED_B 0x10 /* Diagnostic-Buffer changed; DPS2 */ #define DX_OUT_B 0x20 /* new output-data; DPS2 */ #define POLL_END_IND_B 0x40 /* reserved */ #define REQ_PDU_IND_B 0x80 /* reserved */

/*-- indications as words --*/ #define MAC_RESET (SWAP_W(((UWORD)MAC_RESET_B))) #define GO_LEAVE_DATA_EX (SWAP_W(((UWORD)GO_LEAVE_DATA_EX_B))) #define BAUDRATE_DETECT (SWAP_W(((UWORD)BAUDRATE_DETECT_B))) #define WD_DP_MODE_TIMEOUT (SWAP_W(((UWORD)WD_DP_MODE_TIMEOUT_B))) #define USER_TIMER_CLOCK (SWAP_W(((UWORD)USER_TIMER_CLOCK_B))) #define DDB_SCORE_ERROR (SWAP_W(((UWORD)DDB_SCORE_ERROR_B))) #define NEW_DDB_PRM_DATA (SWAP_W(((UWORD)NEW_DDB_PRM_DATA_B))) #define DDB_OUT (SWAP_W(((UWORD)DDB_OUT_B))) #define NEW_GC_COMMAND (SWAP_W((((UWORD)NEW_GC_COMMAND_B) << 8)))

Page 150: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

144

#define NEW_SSA_DATA (SWAP_W((((UWORD)NEW_SSA_DATA_B) << 8))) #define NEW_CFG_DATA (SWAP_W((((UWORD)NEW_CFG_DATA_B) << 8))) #define NEW_PRM_DATA (SWAP_W((((UWORD)NEW_PRM_DATA_B) << 8))) #define DIAG_BUFFER_CHANGED (SWAP_W((((UWORD)DIAG_BUFFER_CHANGED_B) << 8))) #define DX_OUT (SWAP_W((((UWORD)DX_OUT_B) << 8))) #define POLL_END_IND (SWAP_W((((UWORD)POLL_END_IND_B) << 8))) #define REQ_PDU_IND (SWAP_W((((UWORD)REQ_PDU_IND_B) << 8)))

/*-- indications as bit numbers --*/ #define MAC_RESET_NR 0 #define GO_LEAVE_DATA_EX_NR 1 #define BAUDRATE_DETECT_NR 2 #define WD_DP_MODE_TIMEOUT_NR 3 #define USER_TIMER_CLOCK_NR 4 #define DDB_SCORE_ERROR_NR 5 #define NEW_DDB_PRM_DATA_NR 6 #define DDB_OUT_NR 7 #define NEW_GC_COMMAND_NR 8 #define NEW_SSA_DATA_NR 9 #define NEW_CFG_DATA_NR 10 #define NEW_PRM_DATA_NR 11 #define DIAG_BUFFER_CHANGED_NR 12 #define DX_OUT_NR 13 #define POLL_END_IND_NR 14 #define REQ_PDU_IND_NR 15

/*-------------- Returncodes of DPS2_SET_CFG_DATA.. ---------------*/ #define DPS2_CFG_FINISHED 0x00 #define DPS2_CFG_CONFLICT 0x01 #define DPS2_CFG_NOT_ALLOWED 0x03

/*--------------- Returncodes of DPS2_SET_PRM_DATA.. ---------------*/ #define DPS2_PRM_FINISHED 0x00 #define DPS2_PRM_CONFLICT 0x01 #define DPS2_PRM_NOT_ALLOWED 0x03

/*---------------------- states of the DP-Statemachine ----------------------*/ #define DPS2_DP_STATE_WAIT_PRM 0x00 #define DPS2_DP_STATE_WAIT_CFG 0x01 #define DPS2_DP_STATE_DATA_EX 0x02 #define DPS2_DP_STATE_ERROR 0x03

/*---------------------- states of the WD-Statemachine ----------------------*/ #define SPC3_WD_STATE_BAUD_SEARCH 0x00 #define SPC3_WD_STATE_BAUD_CONTROL 0x01 #define SPC3_WD_STATE_DP_MODE 0x02 #define SPC3_WD_STATE_ERROR 0x03

/*------------------------ Codes for Baud-Rate -----------------------*/ #define BD_12M 0 /* 12 MBd */ #define BD_6M 1 /* 6 MBd */ #define BD_3M 2 /* 3 MBd */ #define BD_1_5M 3 /* 1.5 MBd */ #define BD_500k 4 /* 500 kBd */ #define BD_187_5k 5 /* 187.5 kBd */ #define BD_93_75k 6 /* 93.75 kBd */ #define BD_45_45k 7 /* 45.45 kBd */ #define BD_19_2k 8 /* 19.2 kBd */ #define BD_9_6k 9 /* 9.6 kBd */

/*-------------------- States of outputdata-buffer ---------------------*/ #define NEW_DOUT_BUF 0x04

Page 151: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

145

#define DOUT_BUF_CLEARED 0x08

/*+-------------------------------------------------------------------------+ | M a c r o s | +-------------------------------------------------------------------------+*/

/************ initializations and hardware-dependent settings **************/

#ifdef DPS2_USE_SPEC_PRM_BUF /* with spec_prm_buf */ #define SPC3_SET_HW_MODE(MODE)\

spc3.mode_reg0 = SWAP_W((MODE) | DP_MODE | SPEC_PRM_BUF & (~EN_FDL_DDB));#else /* without spec_prm_buf */ #define SPC3_SET_HW_MODE(MODE)\

spc3.mode_reg0 = SWAP_W((MODE) | DP_MODE & (~EN_FDL_DDB));#endif #define SPC3_SET_IND(INDS) spc3.is_reg.mask = ~(INDS); #define SPC3_SET_STATION_ADDRESS(ADDRESS) spc3.r_ts_adr = ADDRESS; #define SPC3_SET_MINTSDR(MINTSDR) spc3.x1.w.mintsdr_val = MINTSDR; #define SPC3_START() spc3.x1.w.mode_reg1_s = START_SPC3; #define SPC3_GO_OFFLINE() spc3.x1.w.mode_reg1_s = GO_OFFLINE_SPC3; #define SPC3_INIT(DPS2_IBUF_PTR)\

dps2_buf_init(&spc3.user, DPS2_IBUF_PTR, TRUE, _USE_SPEC_PRM_BUF__) #define DPS2_SET_IDENT_NUMBER_LOW(NR) spc3.r_ident_low = NR; #define DPS2_SET_IDENT_NUMBER_HIGH(NR) spc3.r_ident_high = NR; #define DPS2_SET_ADD_CHG_DISABLE() spc3.r_real_no_add_change = 0xff; #define DPS2_SET_ADD_CHG_ENABLE() spc3.r_real_no_add_change = 0x0; #define DPS2_USER_LEAVE_MASTER() spc3.x1.w.mode_reg1_s = USER_LEAVE_MASTER;

/***************** macros for Indications *******************/

#define SPC3_GET_INDICATION() spc3.int_reg.com.w #define SPC3_GET_IND_MAC_RESET() (spc3.int_reg.com.b[_IML] & MAC_RESET_EX_B) #define SPC3_GET_IND_BAUDRATE_DETECT() (spc3.int_reg.com.b[_IML] & BAUDRATE_DETECT_B) #define SPC3_GET_IND_USER_TIMER_CLOCK() (spc3.int_reg.com.b[_IML] & USER_TIMER_CLOCK_B) #define DPS2_GET_IND_GO_LEAVE_DATA_EX() (spc3.int_reg.com.b[_IML] & GO_LEAVE_DATA_EX_B) #define DPS2_GET_IND_WD_DP_MODE_TIMEOUT() (spc3.int_reg.com.b[_IML] &WD_DP_MODE_TIMEOUT_B) #define DPS2_GET_IND_NEW_GC_COMMAND() (spc3.int_reg.com.b[_IMH] & NEW_GC_COMMAND_B) #define DPS2_GET_IND_NEW_SSA_DATA() (spc3.int_reg.com.b[_IMH] & NEW_SSA_DATA_B) #define DPS2_GET_IND_NEW_CFG_DATA() (spc3.int_reg.com.b[_IMH] & NEW_CFG_DATA_B) #define DPS2_GET_IND_NEW_PRM_DATA() (spc3.int_reg.com.b[_IMH] & NEW_PRM_DATA_B) #define DPS2_GET_IND_DIAG_BUFFER_CHANGED() (spc3.int_reg.com.b[_IMH] &DIAG_BUFFER_CHANGED_B) #define DPS2_GET_IND_DX_OUT() (spc3.int_reg.com.b[_IMH] & DX_OUT_B)

#define SPC3_IND_CONFIRM(CON) spc3.int_reg.ack.w = (CON); #define SPC3_CON_IND_MAC_RESET() spc3.int_reg.ack.b[_IML] = (UBYTE)MAC_RESET_B; #define SPC3_CON_IND_BAUDRATE_DETECT() spc3.int_reg.ack.b[_IML] =(UBYTE)BAUDRATE_DETECT_B; #define SPC3_CON_IND_USER_TIMER_CLOCK() spc3.int_reg.ack.b[_IML] =(UBYTE)USER_TIMER_CLOCK_B; #define DPS2_CON_IND_GO_LEAVE_DATA_EX() spc3.int_reg.ack.b[_IML] =(UBYTE)GO_LEAVE_DATA_EX_B; #define DPS2_CON_IND_WD_DP_MODE_TIMEOUT() spc3.int_reg.ack.b[_IML] =(UBYTE)WD_DP_MODE_TIMEOUT_B; #define DPS2_CON_IND_NEW_GC_COMMAND() spc3.int_reg.ack.b[_IMH] = (UBYTE)NEW_GC_COMMAND_B; #define DPS2_CON_IND_NEW_SSA_DATA() spc3.int_reg.ack.b[_IMH] = (UBYTE)NEW_SSA_DATA_B; #define DPS2_CON_IND_DIAG_BUFFER_CHANGED() spc3.int_reg.ack.b[_IMH] =(UBYTE)DIAG_BUFFER_CHANGED_B; #define DPS2_CON_IND_DX_OUT() spc3.int_reg.ack.b[_IMH] = (UBYTE)DX_OUT_B;

Page 152: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

146

#define SPC3_SET_EOI() spc3.x1.w.mode_reg1_s = EOI_SPC3;

#define SPC3_POLL_INDICATION() spc3.int_req.w #define SPC3_POLL_IND_MAC_RESET() (spc3.int_req.b[_IML] & MAC_RESET_B) #define SPC3_POLL_IND_BAUDRATE_DETECT() (spc3.int_req.b[_IML] & BAUDRATE_DETECT_B) #define SPC3_POLL_IND_USER_TIMER_CLOCK() (spc3.int_req.b[_IML] & USER_TIMER_CLOCK_B) #define DPS2_POLL_IND_GO_LEAVE_DATA_EX() (spc3.int_req.b[_IML] & GO_LEAVE_DATA_EX_B) #define DPS2_POLL_IND_WD_DP_MODE_TIMEOUT() (spc3.int_req.b[_IML] & WD_DP_MODE_TIMEOUT_B) #define DPS2_POLL_IND_NEW_GC_COMMAND() (spc3.int_req.b[_IMH] & NEW_GC_COMMAND_B) #define DPS2_POLL_IND_NEW_SSA_DATA() (spc3.int_req.b[_IMH] & NEW_SSA_DATA_B) #define DPS2_POLL_IND_NEW_CFG_DATA() (spc3.int_req.b[_IMH] & NEW_CFG_DATA_B) #define DPS2_POLL_IND_NEW_PRM_DATA() (spc3.int_req.b[_IMH] & NEW_PRM_DATA_B) #define DPS2_POLL_IND_DIAG_BUFFER_CHANGED() (spc3.int_req.b[_IMH] &DIAG_BUFFER_CHANGED_B) #define DPS2_POLL_IND_DX_OUT() (spc3.int_req.b[_IMH] & DX_OUT_B)

/*=============== DPS2-specific services for datahandling ================*//********************** configuration services *********************/

#define DPS2_GET_CFG_LEN() spc3.r_len_cfg_buf #define DPS2_GET_CFG_BUF_PTR()\

( (void SPC3_PTR_ATTR*)((SPC3_PTR) &spc3 +\ (SPC3_OFFS)((((UWORD)spc3.r_cfg_buf_ptr)<<3))))

#define DPS2_SET_CFG_DATA_OK() dps2_cfg_data_ok() #define DPS2_SET_CFG_DATA_UPDATE() dps2_cfg_data_update() #define DPS2_SET_CFG_DATA_NOT_OK() dps2_cfg_data_not_ok() #define DPS2_SET_READ_CFG_LEN(LEN) spc3.r_len_read_cfg_buf = LEN; #define DPS2_GET_READ_CFG_BUF_PTR()\

( (voidSPC3_PTR_ATTR*)((SPC3_OFFS)((((UWORD)spc3.r_read_cfg_buf_ptr)<<3))\

+ (SPC3_PTR) &spc3) )

/********************** parametrization services **************************/

#define DPS2_GET_PRM_LEN() spc3.r_len_prm_buf #define DPS2_GET_PRM_BUF_PTR()\

((void SPC3_PTR_ATTR*)((SPC3_OFFS)((((UWORD)spc3.r_prm_buf_ptr)<<3))\

+ (SPC3_PTR) &spc3) ) #define DPS2_SET_PRM_DATA_OK() spc3.user_prm_data_ok #define DPS2_SET_PRM_DATA_NOT_OK() spc3.user_prm_data_nok

/********************** diagnosis servives ***************************/

#define DPS2_GET_DIAG_BUF_PTR()\( ((spc3.diag_buffer_sm & 0x03) == 0x01) ? \ (void

SPC3_PTR_ATTR*)((SPC3_OFFS)(((UWORD)spc3.r_diag_buf_ptr[0])<<3) +(SPC3_PTR)&spc3)\ :(((spc3.diag_buffer_sm & 0x0c) == 0x04) ? \ (void

SPC3_PTR_ATTR*)((SPC3_OFFS)(((UWORD)spc3.r_diag_buf_ptr[1])<<3) +(SPC3_PTR)&spc3)\ : SPC3_NIL) )

#define DPS2_SET_DIAG_LEN(LEN)\( ((spc3.diag_buffer_sm & 0x03) == 0x01) ? \ (spc3.r_len_diag_buf[0] = LEN) \ : (((spc3.diag_buffer_sm & 0x0c) == 0x04) ? \

(spc3.r_len_diag_buf[1] = LEN) \: 0xff) )

#define DPS2_SET_DIAG_STATE(STATE)\( ((spc3.diag_buffer_sm & 0x03) == 0x01) ? \

Page 153: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

147

(*((UBYTESPC3_PTR_ATTR*)((SPC3_OFFS)(((UWORD)spc3.r_diag_buf_ptr[0])<<3) +(SPC3_PTR)&spc3)) =(UBYTE)STATE) \

:(((spc3.diag_buffer_sm & 0x0c) == 0x04) ? \ (*((UBYTE

SPC3_PTR_ATTR*)((SPC3_OFFS)(((UWORD)spc3.r_diag_buf_ptr[1])<<3) +(SPC3_PTR)&spc3)) =(UBYTE)STATE) \

: ~((UBYTE)STATE)) ) #define DPS2_DIAG_UPDATE() dps2_diag_update() #define DPS2_GET_DIAG_FLAG() (spc3.is_reg.status[_IML] & DPS2_DIAG_FLAG)

/********************** Set-Slave-Address services ***********************/

#define DPS2_GET_SSA_LEN() spc3.r_len_ssa_buf #define DPS2_GET_SSA_BUF_PTR()\

( (void SPC3_PTR_ATTR*) ((SPC3_OFFS)((((UWORD)spc3.r_ssa_buf_ptr)<<3))\+ (SPC3_PTR) &spc3) )

#define DPS2_FREE_SSA_BUF() _dps2_x = spc3.ssa_buffer_free_cmd;

/************** IO services ***************/

#define DPS2_SET_IO_DATA_LEN(LEN_PTR) dps2_set_io_data_len(LEN_PTR)

/************************ outputdata services *************************/

#define DPS2_OUTPUT_UPDATE_STATE(STATE) dps2_output_update_state(STATE)#ifdef _MSC_VERINLINE SPC3_PTR DPS2_OUTPUT_UPDATE(){

UWORD uwIndex;uwIndex=(spc3.x1.r.next_dout_buf_cmd & 0x03)-1;return (void SPC3_PTR_ATTR*)

((SPC3_OFFS)(((UWORD)(spc3.r_dout_buf_ptr[uwIndex]))<<3)+ (SPC3_PTR)&spc3);

}#else #define DPS2_OUTPUT_UPDATE()\

( (void SPC3_PTR_ATTR*) ((SPC3_OFFS)\ (((UWORD)(spc3.r_dout_buf_ptr[(spc3.x1.r.next_dout_buf_cmd & 0x03)-

1]))<<3)\ + (SPC3_ADTYP)(SPC3_PTR)&spc3) )

#endif/************************ inputdata services *************************/

#ifdef _MSC_VERINLINE SPC3_PTR DPS2_GET_DIN_BUF_PTR(void){

UWORD uwIndex;uwIndex=(spc3.x1.r.din_buffer_sm >> 4) & 0x03;if(uwIndex){

return (void SPC3_PTR_ATTR*)((SPC3_OFFS)(((UWORD)(spc3.r_din_buf_ptr[uwIndex-1]))<<3)+ (SPC3_PTR)&spc3);

}else{

return SPC3_NIL;}

}#else #define DPS2_GET_DIN_BUF_PTR()\

Page 154: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

148

( ((spc3.x1.r.din_buffer_sm >> 4) & 0x03) ?\ ((void SPC3_PTR_ATTR*)((SPC3_OFFS)\ (((UWORD)(spc3.r_din_buf_ptr[((spc3.x1.r.din_buffer_sm>>4) & 0x03)-

1]))<<3)\ + (SPC3_ADTYP)(SPC3_PTR)&spc3))\ : SPC3_NIL)

#endif

#ifdef _MSC_VERINLINE SPC3_PTR DPS2_INPUT_UPDATE(void){

UWORD uwIndex;uwIndex=(spc3.x1.r.new_din_buf_cmd & 0x03)-1;return (void SPC3_PTR_ATTR*)

((SPC3_OFFS)(((UWORD)(spc3.r_din_buf_ptr[uwIndex]))<<3) + (SPC3_PTR)&spc3);

}#else #define DPS2_INPUT_UPDATE()\

( (void SPC3_PTR_ATTR*) ((SPC3_OFFS)\ (((UWORD)(spc3.r_din_buf_ptr[(spc3.x1.r.new_din_buf_cmd & 0x03)-

1]))<<3)\ + (SPC3_PTR)&spc3) )

#endif

/************************** Global-Control-command **************************/

#define DPS2_GET_GC_COMMAND() spc3.r_gc_command

/******************************* User-Watchdog *******************************/

#define DPS2_SET_USER_WD_VALUE(VALUE) spc3.r_user_wd_value = SWAP_W(VALUE); #define DPS2_RESET_USER_WD() spc3.x1.w.mode_reg1_s = RES_USER_WD;

/***************************** general macros *****************************/

#define SPC3_GET_WD_STATE() ((spc3.is_reg.status[_IML] >> 6) & 0x03) #define SPC3_GET_BAUD() (spc3.is_reg.status[_IMH] & 0x0f) #define SPC3_GET_OFF_PASS() (spc3.is_reg.status[_IML] & SPC3_OFFLINE_PASS) #define SPC3_GET_ACCESS_VIOLATION() (spc3.is_reg.status[_IML] & ACCESS_VIOLATION) #define SPC3_SET_BAUD_CNTRL(VAL) spc3.x1.w.wd_baud_ctrl_val = VAL; #define SPC3_GET_FREE_MEM(FREE_MEM) dps2_get_free_mem(FREE_MEM) #define DPS2_GET_DP_STATE() ((spc3.is_reg.status[_IML] >> 4) & 0x03)

/*+-------------------------------------------------------------------------+ | f u n c t i o n p r o t o t y p e s | +-------------------------------------------------------------------------+*/

/* functions of module dps2spc3.c */ extern enum SPC3_INIT_RET dps2_buf_init(UBYTE SPC3_PTR_ATTR *b_ptr,\

DPS2_BUFINIT SPC3_DATA_ATTR *dps2_bptr, UBYTE fdl_init, UBYTEspec_prm); extern UBYTE SPC3_PTR_ATTR *dps2_get_free_mem(WORD SPC3_DATA_ATTR *buf_len); extern DPS2_IO_DATA_LEN SPC3_DATA_ATTR *dps2_calculate_inp_outp_len\

(UBYTE SPC3_PTR_ATTR *cfg_ptr, UWORD cfg_len); extern UBYTE dps2_set_io_data_len(DPS2_IO_DATA_LEN SPC3_DATA_ATTR *len_ptr); extern UBYTE dps2_cfg_data_ok(void); extern UBYTE dps2_cfg_data_update(void); extern UBYTE dps2_cfg_data_not_ok(void); extern void SPC3_PTR_ATTR *dps2_output_update_state(UBYTE SPC3_DATA_ATTR *state_ptr); extern void SPC3_PTR_ATTR *dps2_diag_update(void);

Page 155: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

149

/*+-------------------------------------------------------------------------+ | e x t e r n a l v a r i a b l e s | +-------------------------------------------------------------------------+*/

/*-- dummybyte for DPS2 --*/extern UBYTE _dps2_x;

#endif

7.1.3.3 Arxiu de funcions/*+------------------------------------------------------------------------+| Project: D P S 2 w i t h S P C 3 || || File: DPS2SPC3.C || Date: 24-Mar-1997 || Version: V 1.30 || Initial Editor: Thomas Lang |+------------------------------------------------------------------------+| Description: || This File contains the functions for DPS2 with SPC3. || || |+------------------------------------------------------------------------+| following environments are supported || Processor: SAB C165 || Compiler: BSO Tasking 80166 C Cross-Compiler, V 4.0 || Processor: iNTEL 8032 || Compiler: Keil |+------------------------------------------------------------------------+| Copyright (C) SIEMENS AG, 1994 || All Rights reserved |+------------------------------------------------------------------------+| History:

|| V1.0,LT, first official version

|| V1.1,LT, error in calculation of the FDL-SAP-List-Pointer fixed || (dps2_buf_len was not divided by)

|| V1.3,MM,12-Feb-1997, I/O-len calculation corrected || V1.3,MM,24-Mar-1997, translation

|| |+------------------------------------------------------------------------+| Technical support: Siemens Schnittstellencenter || AUT7 WKF B1 TDL2 || || Schmidt Xaver Mittelberger Martin || Tel.: 0911/750-2079 Tel.: 0911/750-2072 || || Fax.: -2100 || Mailbox: 0911/737972 || |+------------------------------------------------------------------------+*/

/*~includes and declarations

Page 156: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

150

~*/ /* formal declaratios for spc3dps2.h */#define SPC3_DPS2 1#define SPC3_INTEL_MODE 1#define SPC3_DATA_XDATA#define SPC3_FAR

#include "..\user\spc3dps2.h"

/*~literals and macros~*/ /* +------------------------------------------------------------------------+ | L i t e r a l s | +------------------------------------------------------------------------+ */ /*-- cout of buffers assigned to AUX-buffer --*/#define ASS_AUX_BUF 3 /*-- masks for config-data --*/#define DPS_CFG_IS_BYTE_FORMAT (UBYTE)0x30#define DPS_CFG_BF_LENGTH (UBYTE)0x0f#define DPS_CFG_LENGTH_IS_WORD_FORMAT (UBYTE)0x40#define DPS_CFG_BF_INP_EXIST (UBYTE)0x10#define DPS_CFG_BF_OUTP_EXIST (UBYTE)0x20#define DPS_CFG_SF_OUTP_EXIST (UBYTE)0x80#define DPS_CFG_SF_INP_EXIST (UBYTE)0x40#define DPS_CFG_SF_LENGTH (UBYTE)0x3f

/* +------------------------------------------------------------------------+ | M a c r o s | +------------------------------------------------------------------------+ */ /*-- startaddress of user-area in the SPC3 in SPC3-format --*/#define SPC3_BUF_START ((UBYTE)(((UWORD)(dps2_base_ptr -\

(UBYTE SPC3_PTR_ATTR*)&spc3)) >> 3))

/*~Variables~*/ /* +------------------------------------------------------------------------+ | g l o b a l V a r i a b l e s | +------------------------------------------------------------------------+ */#ifdef _C166

#pragma global#endif

UBYTE _dps2_x; /* dummy-byte */

#ifdef _C166 #pragma public

#endif

/* +------------------------------------------------------------------------+ | "M o d u l" - g l o b a l V a r i a b l e s | +------------------------------------------------------------------------+ */ static DPS2_BUFINIT dps2_binit; /* storeage for initialization data */

Page 157: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

151

static WORD dps2_buf_len = 0; /* used bufferspace */ static UBYTE SPC3_PTR_ATTR *dps2_base_ptr =\

(UBYTE SPC3_PTR_ATTR*)0; /* buffer base address */ static DPS2_IO_DATA_LEN io_data_len; /* Struct. f. IO-lens */

/* +------------------------------------------------------------------------+ | e x t e r n a l D e c l a r a t i o n s | +------------------------------------------------------------------------+ */#ifndef _IM182 extern SPC3 SPC3_PTR_ATTR spc3;#endif

/*~assign_aux_buf()~*/ /* +------------------------------------------------------------------------+ | Function: a s s i g n _ a u x _ b u f ( ) | +------------------------------------------------------------------------+ | Description: | | Based on a list of bufferlens the best len of the aux-buffers is | | calculated. The list's lens will be adjusted, the assignment-list | | will be calculated. | +------------------------------------------------------------------------+ | Parameters: | | -lens: Pointer to a list of buffer-lens | | The calculated lens are inserted in this list. | | -count: length of list (2 to ASS_AUX_BUF) | | -assign: pointer to an assignment-byte | | For each len there is a corresponding bit for the | | assignment to AUX-buffer 1 or 2. 0 means AUX-buffer 1, | | 1 means AUX-Buffer 2. Bit 0 ist for the first, Bit 7 | | for the 8th length. | | -aux_len: pointer to a 2-byte-array for AUX-buffer-lens | | The calculated lens of AUX-buffer 1 and 2 are stored here. | | | | Returnvalue: UWORD: total amount of used bytes (0 = error) | +------------------------------------------------------------------------+ */

UWORD assign_aux_buf(UBYTE SPC3_DATA_ATTR *lens, UBYTE count, UBYTE SPC3_DATA_ATTR *assign, WORD SPC3_DATA_ATTR *aux_len) {

UBYTE pos[ASS_AUX_BUF]; /* storage for former position of lens */ UBYTE lensx[ASS_AUX_BUF]; /* working-array for calculated lens */ UBYTE step; /* counter for done step */ UBYTE lx; /* temp-var for lenarray-sorting */ UBYTE px; /* temp-var dor position-sorting */ UWORD min_len = 0xffff; /* calculated min-len */ UBYTE min_step = 0; /* step at reached min-len */ BYTE i,j;

if((count < 2) || (count > ASS_AUX_BUF)) {

return 0; } /* init position-array */ for(i = 0; i < count; i++) {

pos[i] = i;

Page 158: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

152

} /* init working-array */ for(i = 0; i < count; i++) {

lensx[i] = lens[i]; } /* round up lens to SPC3-lens (8-byte-granularity) */ for(i = 0; i < count; i++) {

lensx[i] = (lensx[i] + 7) & 0xf8; } /* sorting of lens: gratest len to index 0 */ for(i = 0; i < count-1; i++) {

for(j = i+1; j < count; j++) {

if(lensx[i] < lensx[j]){ /* greater len found */ lx = lensx[i]; /* xchg lens */ lensx[i] = lensx[j]; lensx[j] = lx; px = pos[i]; /* xchg position */ pos[i] = pos[j]; pos[j] = px;}

} } /* remove NULL-lens of list */ for(i = count-1; i >= 0; i--) {

if(lensx[i] == 0) {

count--; }

} if(count == 0) {

min_len = 0; /* error: no lens specified */ } /* stepwise assignment to the AUX-buffers */ for(step = 0; step < count; step++) {

/* determine total len for AUX-buffer 1 */ aux_len[0] = 0;

for(i = step; i < count; i++) {

if(aux_len[0] < lensx[i]){ aux_len[0] = lensx[i];}

} aux_len[0] = aux_len[0] * (count - step + 1); /* determine total len for AUX-buffer 2 */ aux_len[1] = 0;

for(i = 0; i < step; i++) {

if(aux_len[1] < lensx[i]){ aux_len[1] = lensx[i];

Page 159: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

153

} } aux_len[1] = aux_len[1] * (step + 1);

if((aux_len[0] + aux_len[1]) < min_len) {

/* neue Minimal-Laenge gefunden */min_len = aux_len[0] + aux_len[1];min_step = step;

} }

/* calculation of len for AUX-buffer 1 */ aux_len[0] = 0;

for(i = min_step; i < count; i++) {

if(aux_len[0] < lensx[i]) {

aux_len[0] = lensx[i]; }

} /* setup lens for AUX-buffer 1 */ for(i = min_step; i < count; i++) {

lens[pos[i]] = aux_len[0]; } /* calculation of len for AUX-buffer 2 */ aux_len[1] = 0;

for(i = 0; i < min_step; i++) {

if(aux_len[1] < lensx[i]) {

aux_len[1] = lensx[i]; }

} /* setup lens for AUX-buffer 2 */ /* setup assignment-list */ *assign = 0; /* initial all buffers assigned to AUX-buffer 1 */

for(i = 0; i < min_step; i++) {

lens[pos[i]] = aux_len[1]; *assign |= 0x1 << pos[i];

} return min_len;

} /* Ende assign_aux_buf */

#ifdef _C166 #pragma global#endif

/*~dps2_calculate_inp_outp_len()~*/ /* +------------------------------------------------------------------------+ | Funktion: d p s 2 _ c a l c u l a t e _ i n p _ o u t p _ l e n | +------------------------------------------------------------------------+ | Description: |

Page 160: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

154

| This function calculates the Input/Outputdata-lens based on the | | specified config-data and returns a pointer to the calculated lens. | | (original from DPS). | +------------------------------------------------------------------------+ | parameters: | | -cfg_ptr: pointer to config-data | | -cfg_len: config-data len | | | | returnvalue: | | -pointer to lens | +------------------------------------------------------------------------+ */ DPS2_IO_DATA_LEN SPC3_DATA_ATTR *dps2_calculate_inp_outp_len (UBYTE SPC3_PTR_ATTR* cfg_ptr, UWORD cfg_len) {

UBYTE temp_inp_data_len; UBYTE temp_outp_data_len; UBYTE length; UBYTE count; UBYTE specific_data_length; UBYTE result_ok;

result_ok = TRUE; temp_inp_data_len = 0; temp_outp_data_len = 0;

if ((cfg_len > 0) && (cfg_len <= dps2_binit.cfg_buf_len)) {

for ( ; (cfg_len > 0) && result_ok; cfg_len -= count) {

count = 0;

if (*cfg_ptr & DPS_CFG_IS_BYTE_FORMAT){ count++;

/* cfg_ptr points to ID-byte, CFG_BF means "CFG_IS_BYTE_FORMAT" */ length = (UBYTE)( (*cfg_ptr & DPS_CFG_BF_LENGTH) + 1);

if (*cfg_ptr & DPS_CFG_LENGTH_IS_WORD_FORMAT) {

length *= 2; } if (*cfg_ptr & DPS_CFG_BF_OUTP_EXIST) {

temp_outp_data_len = temp_outp_data_len + length; } if (*cfg_ptr & DPS_CFG_BF_INP_EXIST) {

temp_inp_data_len = temp_inp_data_len + length; } cfg_ptr++;}else{ /* cfg_ptr points to the headerbyte of special ID-format */ /* CFG_SF means "CFG_IS_SPECIAL_FORMAT" */ if (*cfg_ptr & DPS_CFG_SF_OUTP_EXIST) {

count++; /* next byte contains the length ofou

tp_data */

Page 161: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

155

length = (UBYTE)((*(cfg_ptr + count) & DPS_CFG_SF_LENGTH) +1 );

if (*(cfg_ptr + count) & DPS_CFG_LENGTH_IS_WORD_FORMAT) {

temp_outp_data_len = temp_outp_data_len +(UBYTE)(2*length

); } else {

temp_outp_data_len = temp_outp_data_len + length; }

} if (*cfg_ptr & DPS_CFG_SF_INP_EXIST) {

count++; /* next byte contains the length ofin

p_data */ length = (UBYTE)((*(cfg_ptr + count) & DPS_CFG_SF_LENGTH) +1 );

if (*(cfg_ptr + count) & DPS_CFG_LENGTH_IS_WORD_FORMAT) {

temp_inp_data_len = temp_inp_data_len +(UBYTE)(2*length);

} else {

temp_inp_data_len = temp_inp_data_len + length; }

} specific_data_length = (UBYTE)(*cfg_ptr & DPS_CFG_BF_LENGTH);

if (specific_data_length != 15) {

count = (UBYTE)(count + 1 + specific_data_length); cfg_ptr = cfg_ptr + count;

} else {

result_ok = FALSE; }}

}

if ( (cfg_len != 0) ||((((UWORD)temp_inp_data_len + 7) & 0xfff8 +((UWORD)temp_outp_data_len + 7) & 0xfff8)> dps2_binit.din_dout_buf_len) )

{result_ok = FALSE;

} } else {

result_ok = FALSE; } if (result_ok) {

io_data_len.inp_data_len = temp_inp_data_len;

Page 162: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

156

io_data_len.outp_data_len = temp_outp_data_len; return (&io_data_len);

} else {

return ((DPS2_IO_DATA_LEN *) 0); }

}

/*~dps2_buf_init()~*/ /* +------------------------------------------------------------------------+ | Function: d p s 2 _ b u f _ i n i t ( ) | +------------------------------------------------------------------------+ | Description: | | The specified lens arechecked. If they are ok, the neccesarry | | memory is calculated. If there is enough memory, the buffers are | | armed. | | In dps2_buf_len the amount of used Memory is stored. | | The buffers are armed at the begin of the user-area in the following | | way: | | Outputdata | total len of the | | Inputdata | Input-/Outputbuffers * 3 | | Diagnosticbuffer (2*) | | Config-buffer | | Read-Config-buffer | | Parameterbuffer | | Aux-buffer 0 | | Aux-buffer 1 (if used) | | Set-Slave-Address-buffer (if used) | +------------------------------------------------------------------------+ | parameters: | | -b_ptr: Pointer to start of buffer-area | | -dps2_bptr: Pointer to initialisierungs-structure | | -fdl_init: TRUE, if FDL is used | | -spec_prm: TRUE, if spec param-buffer is used | | | | returncode: | | SPC3_INIT_OK: SPC3 initialized correctly | | SPC3_INITF_LESS_MEM: not enough memory | | SPC3_INITF_NOFF: SPC3 is not offline | | DPS2_INITF_DIN_DOUT_LEN: allowed: 0 - 488 | | DPS2_INITF_DIAG_LEN: - " - : 6 - 244 | | DPS2_INITF_PRM_LEN: - " - : 7 - 244 | | DPS2_INITF_CFG_LEN: - " - : 1 - 244 | | DPS2_INITF_SSA_LEN: - " - : 0 bzw. 4 - 244 | +------------------------------------------------------------------------+ */ /*------------------------------ Literals ------------------------------*/ /* position of bits in AUX-buffer-assignment */#define RBL_PRM 0#define RBL_CFG 1#define RBL_SSA 2

enum SPC3_INIT_RET dps2_buf_init(UBYTE SPC3_PTR_ATTR* b_ptr, DPS2_BUFINIT SPC3_DATA_ATTR *dps2_bptr, UBYTE fdl_init, UBYTE spec_prm) {

UBYTE real_buf_len[ASS_AUX_BUF]; WORD aux_buf_len[2]; /* calculated lens of AUX-buffers */

Page 163: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

157

UBYTE aux_ass; /* var. for AUX-buffer-assignment */ WORD r_din_dout_buf_len; /* var. for real IO-data-lens */ UBYTE SPC3_PTR_ATTR *spc_uptr; /* helppointer, 'cos of C166 compiler */ enum SPC3_INIT_RET ret = SPC3_INIT_OK;

dps2_buf_len = 0;

if (SPC3_GET_OFF_PASS()) {

return SPC3_INITF_NOFF; /*==== END: SPC3 is not Offline ====*/ } dps2_binit = *dps2_bptr; /* store init-data */ dps2_base_ptr = b_ptr; /* start of memory */

if(dps2_binit.din_dout_buf_len > 488) {

ret = DPS2_INITF_DIN_DOUT_LEN; } if((dps2_binit.diag_buf_len < 6) || (dps2_binit.diag_buf_len > 244)) {

ret = DPS2_INITF_DIAG_LEN; } if((dps2_binit.prm_buf_len < 7) || (dps2_binit.prm_buf_len > 244)) {

ret = DPS2_INITF_PRM_LEN; } if((dps2_binit.cfg_buf_len < 1) || (dps2_binit.cfg_buf_len > 244)) {

ret = DPS2_INITF_PRM_LEN; } if(dps2_binit.ssa_buf_len == 0) {

DPS2_SET_ADD_CHG_DISABLE() } else {

/* SSA-buffer is used */ if((dps2_binit.ssa_buf_len < 4) || (dps2_binit.ssa_buf_len > 244)) {

ret = DPS2_INITF_SSA_LEN; }

} if(ret != SPC3_INIT_OK) {

/* error occured */ dps2_buf_len = 0; /* no memory used */ return ret; /*===== T H E E N D =====*/

} /* Bufferlens seem to be ok --> calculate total amount of memory */ if(spec_prm) {

real_buf_len[RBL_PRM] = 0; /* Prm. via AUX */ } else {

real_buf_len[RBL_PRM] = dps2_binit.prm_buf_len; } real_buf_len[RBL_CFG] = dps2_binit.cfg_buf_len; real_buf_len[RBL_SSA] = dps2_binit.ssa_buf_len; dps2_buf_len = assign_aux_buf(real_buf_len, sizeof(real_buf_len), &aux_ass , aux_buf_len); dps2_buf_len += real_buf_len[RBL_CFG]; /* wg. Read-Config */

Page 164: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

158

/* amount for IO-data, diagnosticbuffer and spec.Prm.buffer */ r_din_dout_buf_len = (dps2_binit.din_dout_buf_len + 7) & 0xfff8; dps2_buf_len += ((dps2_binit.diag_buf_len + 7) & 0xf8) * 2;

if(spec_prm) {

/* spec_prm-buffer is used */ real_buf_len[RBL_PRM] = (dps2_binit.prm_buf_len + 7) & 0xf8; dps2_buf_len += real_buf_len[RBL_PRM]; spc3.r_len_spec_prm_buf = dps2_binit.prm_buf_len;

} else {

spc3.r_len_spec_prm_buf = 0; } dps2_buf_len += r_din_dout_buf_len * 3;

if(dps2_buf_len > sizeof(spc3.user)) {

/* not enough memory */ dps2_buf_len = 0; dps2_base_ptr = 0; return SPC3_INITF_LESS_MEM;

} /* arm the pointers */ spc3.r_aux_buf_sel = aux_ass; /* assign AUX-buffers */ spc3.r_diag_buf_ptr[0] = SPC3_BUF_START + ((r_din_dout_buf_len * 3)>>3); spc3.r_diag_buf_ptr[1] = spc3.r_diag_buf_ptr[0] + ((( dps2_binit.diag_buf_len + 7) & 0xf8)>>3); spc3.r_cfg_buf_ptr = spc3.r_diag_buf_ptr[1] + (((dps2_binit.diag_buf_len + 7) & 0xf8)>>3); spc3.r_read_cfg_buf_ptr = spc3.r_cfg_buf_ptr + (real_buf_len[RBL_CFG]>>3); spc3.r_prm_buf_ptr = spc3.r_read_cfg_buf_ptr + (real_buf_len[RBL_CFG]>>3); spc3.r_aux_buf_ptr[0] = spc3.r_prm_buf_ptr + (real_buf_len[RBL_PRM]>>3); spc3.r_aux_buf_ptr[1] = spc3.r_aux_buf_ptr[0] + (aux_buf_len[0]>>3);

if(real_buf_len[RBL_SSA] == 0) {

/* SSA not supported */ spc3.r_ssa_buf_ptr = 0;

} else {

/* SSA supported */ spc3.r_ssa_buf_ptr = spc3.r_aux_buf_ptr[1] + (aux_buf_len[1]>>3);

}

/* set buffer-lens */ spc3.r_len_diag_buf[0] = spc3.r_len_diag_buf[1] = 6; spc3.r_len_cfg_buf = dps2_binit.cfg_buf_len; spc3.r_len_prm_buf = dps2_binit.prm_buf_len; spc3.r_len_cntrl_buf[0] = aux_buf_len[0]; spc3.r_len_cntrl_buf[1] = aux_buf_len[1]; spc3.r_len_ssa_buf = dps2_binit.ssa_buf_len; spc3.r_len_din_buf = spc3.r_len_dout_buf = 0; /* init buffers */ spc_uptr = (UBYTE SPC3_PTR_ATTR*)&spc3.user;

for(r_din_dout_buf_len = 0; r_din_dout_buf_len <dps2_buf_len;r_din_dout_buf_len++)

{ *(spc_uptr + r_din_dout_buf_len) = 0;

Page 165: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

159

} if(fdl_init) {

/* no buffers for FDL */ spc3.r_fdl_sap_list_ptr = SPC3_BUF_START + (dps2_buf_len>>3); (*((UBYTE SPC3_PTR_ATTR*)((SPC3_ADTYP)(((UWORD)(spc3.r_fdl_sap_list_ptr ))<<3) + (SPC3_ADTYP)&spc3)) ) = 0xff; dps2_buf_len += 8; /* 8 Byte durch leere FDL-Liste verbraucht */ /* DDB not supported */ spc3.r_len_ddbout_buf = 0; spc3.r_ddbout_buf_ptr = 0; spc3.r_len_ddb_prm_buf = 0; spc3.r_ddb_prm_buf_ptr = 0;

} return ret;

} /* Ende dps2_buf_init() */

/*~dps2_get_free_mem()~*/ /* +------------------------------------------------------------------------+ | Function: d p s 2 _ g e t _ f r e e _ m e m ( ) | +------------------------------------------------------------------------+ | Description: | | This function returns a pointer to the first free byte above the | | DPS2-buffers. The count of free bytes is written to the pointer. | +------------------------------------------------------------------------+ | Parameters: | | -buf_len: pointer to len-variable | | | | Returncode: | | -Pointer to first free byte | +------------------------------------------------------------------------+ */ UBYTE SPC3_PTR_ATTR* dps2_get_free_mem(WORD SPC3_DATA_ATTR *buf_len) {

if(dps2_buf_len) {

/* pointer to first free byte */ *buf_len = sizeof(SPC3) - (dps2_base_ptr - (UBYTE SPC3_PTR_ATTR*)&spc3 ) - dps2_buf_len; return dps2_base_ptr + dps2_buf_len;

} else {

/* not correctly initialized: Error */ *buf_len = 0; return SPC3_NIL;

} } /* Ende dps2_free_mem() */

/*~dps2_set_io_data_len()~*/ /* +------------------------------------------------------------------------+ | Function: d p s 2 _ s e t _ i o _ d a t a _ l e n ( ) | +------------------------------------------------------------------------+ | Description: |

Page 166: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

160

| The lens are checked against the initialization-lens. If they are | | correct, the pointers and lens in the SPC3 are armed. | +------------------------------------------------------------------------+ | Parameters: | | -len_ptr: pointer to len-structure | | | | Returncode: | | TRUE: ok | | FALSE: len-mismatch | +------------------------------------------------------------------------+ */ UBYTE dps2_set_io_data_len(DPS2_IO_DATA_LEN SPC3_DATA_ATTR *len_ptr) {

UBYTE ri_len, ro_len; /* real lens */ UBYTE ri_off; /* input-buffer-offset */ UBYTE i;

if(len_ptr->outp_data_len > 244) {

return FALSE; } if(len_ptr->inp_data_len > 244) {

return FALSE; } if((UWORD)len_ptr->inp_data_len + (UWORD)len_ptr->outp_data_len > dps2_binit.din_dout_buf_len) {

return FALSE; } /*-- lens correkt, arm buffers --*/ spc3.r_len_dout_buf = len_ptr->outp_data_len; spc3.r_len_din_buf = len_ptr->inp_data_len; ro_len = ((len_ptr->outp_data_len) + 7) >> 3; ri_len = ((len_ptr->inp_data_len) + 7) >> 3;

for(i = 0; i < sizeof(spc3.r_dout_buf_ptr); i++) {

spc3.r_dout_buf_ptr[i] = SPC3_BUF_START + ro_len * i; } ri_off = ro_len * sizeof(spc3.r_dout_buf_ptr);

for(i = 0; i < sizeof(spc3.r_din_buf_ptr); i++) {

spc3.r_din_buf_ptr[i] = SPC3_BUF_START + ri_off + ri_len * i; } return TRUE;

} /* Ende dps2_set_io_data_len */

/*~dps2_cfg_data_ok()~*/ /* +------------------------------------------------------------------------+ | Function: d p s 2 _ c f g _ d a t a _ o k ( ) | +------------------------------------------------------------------------+ | Description: | | New config-data is marked as ok. | +------------------------------------------------------------------------+ | Parameters: - | | |

Page 167: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

161

| Returncode: | | UBYTE: DPS2_CFG_FINISHED: ok | | DPS2_CFG_CONFLICT: data overridden while check | +------------------------------------------------------------------------+ */ UBYTE dps2_cfg_data_ok(void) {

spc3.x1.w.mode_reg1_r = EN_CHG_CFG_BUFFER; return spc3.user_cfg_data_ok;

} /* Ende dps2_cfg_data_ok() */

/*~dps2_cfg_data_update()~*/ /* +------------------------------------------------------------------------+ | Function: d p s 2 _ c f g _ d a t a _ u p d a t e ( ) | +------------------------------------------------------------------------+ | Description: | | see dps2_cfg_data_ok(), additional there are new cfg-data. | +------------------------------------------------------------------------+ | Parameters: - | | | | Returncode: see dps2_cfg_data_ok() | +------------------------------------------------------------------------+ */ UBYTE dps2_cfg_data_update(void) {

spc3.x1.w.mode_reg1_s = EN_CHG_CFG_BUFFER; spc3.r_len_read_cfg_buf = spc3.r_len_cfg_buf; return spc3.user_cfg_data_ok;

} /* Ende dps2_cfg_data_update() */

/*~dps2_cfg_data_not_ok()~*/ /* +------------------------------------------------------------------------+ | Function: d p s 2 _ c f g _ d a t a _ n o t _ o k ( ) | +------------------------------------------------------------------------+ | Description: | | See dps2_cfg_data_ok(), but config-data is not correct. | +------------------------------------------------------------------------+ | Parameters: - | | | | Returncode: see dps2_cfg_data_ok() | +------------------------------------------------------------------------+ */ UBYTE dps2_cfg_data_not_ok(void) {

spc3.x1.w.mode_reg1_r = EN_CHG_CFG_BUFFER; return spc3.user_cfg_data_nok;

} /* Ende dps2_cfg_data_not_ok() */

/*~dps2_output_update_state()~*/ /* +------------------------------------------------------------------------+

Page 168: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

162

| Function: d p s 2 _ o u t p u t _ u p d a t e _ s t a t e ( ) | +------------------------------------------------------------------------+ | Description: | | This function causes the output-update. The state is returned. | +------------------------------------------------------------------------+ | Parameters: | | -state_ptr: pointer to state-value | | | | Returncode: | | void*: pointer to output-buffer | +------------------------------------------------------------------------+ */ void SPC3_PTR_ATTR* dps2_output_update_state(UBYTE SPC3_DATA_ATTR *state_ptr ) {

UBYTE temp;

temp = spc3.x1.r.next_dout_buf_cmd; *state_ptr = temp & (NEW_DOUT_BUF | DOUT_BUF_CLEARED); return (void SPC3_PTR_ATTR*)

((((SPC3_ADTYP)(spc3.r_dout_buf_ptr[(temp & 0x03)-1]))<<3)\ + (SPC3_ADTYP)&spc3);

} /* Ende dps2_output_update_state() */

/*~dps2_diag_update()~*/ /* +------------------------------------------------------------------------+ | Function: d p s 2 _ d i a g _ u p d a t e ( ) | +------------------------------------------------------------------------+ | Description: | | This function causes the diagnostic-update in the SPC3. | +------------------------------------------------------------------------+ | Parameter: | | | | Returncode: | | -pointer to new diagnostic-buffer, if available; else 0 | +------------------------------------------------------------------------+ */ void SPC3_PTR_ATTR* dps2_diag_update(void) {

UBYTE temp;

temp = spc3.new_diag_buffer_cmd & 0x03;

switch(temp) {

case 1: /* buffer with Index 0 */ {

return (void SPC3_PTR_ATTR*)((SPC3_ADTYP)(((UWORD)spc3.r_diag_buf_ptr[0])<<3) + (SPC3_ADTYP)&spc3);

} case 2: /* buffer with Index 1 */ {

return (void SPC3_PTR_ATTR*)((SPC3_ADTYP)(((UWORD)spc3.r_diag_buf_ptr[1])<<3) + (SPC3_ADTYP)&spc3);

} default: {

/* no buffer */

Page 169: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

163

return SPC3_NIL; }

} } /* Ende dps2_diag_update() */

#ifdef _C166 #pragma public#endif

7.1.3.4 Atenció a interrupcions/*+------------------------------------------------------------------------+| Project: D P S 2 w i t h S P C 3 || || File: INTSPC3.C || Date: 24-Mar-1997 || Version: V 1.30 || Initial Editor: Schmidt Xaver |+------------------------------------------------------------------------+| Description: || This module handles the interupts of the SPC3 |+------------------------------------------------------------------------+| following environments are supported || Processor: SAB C165 || Compiler: BSO Tasking 80166 C Cross-Compiler, V 4.0 || Processor: iNTEL 8032 || Compiler: Keil || || |+------------------------------------------------------------------------+| Copyright (C) SIEMENS AG, 1994 || All Rights reserved |+------------------------------------------------------------------------+| History:

|| V0.9,SX,24-Oct-1995, Pilot verion || V1.0,SX,02-Nov-1995, 1st version || V1.1,SX,14-Nov-1995, Addition of the attribute SPC3_PTR_ATTR || (= xdata) at *user_io_data_len_ptr || V1.3,MM,24-Mar-1997, & --> && in parameter-check-routine || |+------------------------------------------------------------------------+| Technical support: Siemens Schnittstellencenter || AUT7 WKF B1 TDL2 || || Schmidt Xaver Mittelberger Martin || Tel.: 0911/750-2079 Tel.: 0911/750-2072 || || Fax.: -2100 || Mailbox: 0911/737972 || |+------------------------------------------------------------------------+*/

Page 170: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

164

#define SPC3_INTEL_MODE TRUE#define SPC3_FAR

#define SPC3_DPS2#define SPC3_DATA_XDATA

#include "..\user\spc3dps2.h"

#if defined __C51__/* special defines for the 80166 processor *//* are set to nothing */

#define huge#define global#define public

#elif _C166#include "reg.h"

#else#include <dos.h>

#endif

/*----------------------------------------------------------------------*//* STRUCTURES AND TYPEDEFS *//*----------------------------------------------------------------------*/

/*----------------------------------------------------------------------*//* EXTERNAL FUNCTIONS *//*----------------------------------------------------------------------*/

/*----------------------------------------------------------------------*//* INTERNAL FUNCTIONS *//*----------------------------------------------------------------------*/void address_data_function (void SPC3_PTR_ATTR*, UBYTE);void wd_dp_mode_timeout_function (void);void global_ctrl_command_function (void);void go_leave_data_ex_function (void);

/*----------------------------------------------------------------------*//* LITERALLIES *//*----------------------------------------------------------------------*/

#define DPS_CFG_OK 0#define DPS_CFG_FAULT 1#define DPS_CFG_UPDATE 2

/*----------------------------------------------------------------------*//* MACROS *//*----------------------------------------------------------------------*/

/*----------------------------------------------------------------------*//* GLOBAL VARIABLES *//*----------------------------------------------------------------------*/

UBYTE user_dps_state;UBYTE user_global_ctrl_command;UBYTE user_wd_state;UBYTE store_mintsdr;

Page 171: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

165

extern UBYTE real_no_add_chg;extern UBYTE this_station;extern UBYTE cfg_akt [20];extern UBYTE cfg_len_akt;extern DPS2_IO_DATA_LEN SPC3_PTR_ATTR *user_io_data_len_ptr;/* Aenderung 14.11.95 */extern UBYTE prm_tst_buf[];#ifndef _IM182extern SPC3 SPC3_PTR_ATTR spc3;#endif

/************************************************************************//* D e s c r i p t i o n : *//* *//* dps2_ind *//* *//* This function is called by the hardware interrupt *//************************************************************************/

#if defined __C51__void dps2_ind(void) interrupt 0

#elif _C166interrupt (0x1b) void dps2_ind(void) /* CC11 = EX3IN */

#elsevoid dps2_ind(void)

#endif

{

if(DPS2_GET_IND_GO_LEAVE_DATA_EX()){ /*=== Start or the end of the Data-Exchange-State ===*/go_leave_data_ex_function();DPS2_CON_IND_GO_LEAVE_DATA_EX(); /* confirm this indication */}

if(DPS2_GET_IND_NEW_GC_COMMAND()){ /*=== New Global Control Command ===*/global_ctrl_command_function();DPS2_CON_IND_NEW_GC_COMMAND(); /* confirm this indication */}

if(DPS2_GET_IND_NEW_PRM_DATA()){ /*=== New parameter data ===*/UBYTE SPC3_PTR_ATTR * prm_ptr;UBYTE param_data_len, prm_result;UBYTE ii;

prm_result = DPS2_PRM_FINISHED;do

{ /* Check parameter until no conflict behavior */prm_ptr = DPS2_GET_PRM_BUF_PTR();param_data_len = DPS2_GET_PRM_LEN();

/* data_length_netto of parametration_telegram > 7 */if (param_data_len > 7)

{if (( *(prm_ptr+8) == 0xAA) && ( *(prm_ptr+9) == 0xAA))

prm_result = DPS2_SET_PRM_DATA_NOT_OK(); /* as example !!! */else

{for (ii= 0; ii<param_data_len && ii <10; ii++) /* store in

the interim buffer */

Page 172: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

166

prm_tst_buf[ii] = *(prm_ptr+ii+7); /* for thediagnostic */

/* !!!!!! as example !!!! */

prm_result = DPS2_SET_PRM_DATA_OK();}

}else

prm_result = DPS2_SET_PRM_DATA_OK();

} while(prm_result == DPS2_PRM_CONFLICT);

store_mintsdr = *(prm_ptr+3); /* store the mintsdr for restart after */ /* baudrate search */

}

if(DPS2_GET_IND_NEW_CFG_DATA()){ /*=== New Configuration data ===*/UBYTE SPC3_PTR_ATTR * cfg_ptr;UBYTE config_data_len, cfg_result, result;

cfg_result = DPS2_CFG_FINISHED;result = DPS_CFG_OK;

do{ /* check configuration data until no conflict behavior m*/cfg_ptr = DPS2_GET_CFG_BUF_PTR(); /* pointer to the*/

/*config_data_block */config_data_len = DPS2_GET_CFG_LEN();

/* In this example the only possible configurations are 0x13 and 0x23 (4 Byte I/O) or 0x11 and 0x21 (2 Byte I/O) are possible */

if ( config_data_len != 2)cfg_result = DPS2_SET_CFG_DATA_NOT_OK();

else{ /* Length of the configuration data o.k. */

/* check the configuratin bytes */

if ((cfg_akt[0] == cfg_ptr[0]) && (cfg_akt[1] == cfg_ptr[1]))result = DPS_CFG_OK;/* the desired conf. is equal the actuall configuration */

else{if (((cfg_ptr[0] == 0x13) && (cfg_ptr[1]) ==0x23) || ((cfg_ptr[0] == 0x11) && (cfg_ptr[1]) ==0x21))

{cfg_akt[0] = cfg_ptr[0];cfg_akt[1] = cfg_ptr[1];result = DPS_CFG_UPDATE;}

elseresult = DPS_CFG_FAULT; /* as example !!!!! */

if (result == DPS_CFG_UPDATE){user_io_data_len_ptr = dps2_calculate_inp_outp_len

(cfg_ptr,(UWORD)config_data_len);if (user_io_data_len_ptr != (DPS2_IO_DATA_LEN *)0)

Page 173: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

167

{DPS2_SET_IO_DATA_LEN(user_io_data_len_ptr);}

elseresult = DPS_CFG_FAULT;

}}

switch (result){case DPS_CFG_OK: cfg_result = DPS2_SET_CFG_DATA_OK();

break;

case DPS_CFG_FAULT: cfg_result = DPS2_SET_CFG_DATA_NOT_OK();break;

case DPS_CFG_UPDATE: cfg_result = DPS2_SET_CFG_DATA_UPDATE();break;

}}

} while(cfg_result == DPS2_CFG_CONFLICT);}

if(DPS2_GET_IND_NEW_SSA_DATA()){ /*=== New Slave address received ===*/address_data_function(DPS2_GET_SSA_BUF_PTR(), DPS2_GET_SSA_LEN());DPS2_CON_IND_NEW_SSA_DATA(); /* confirm this indication */}

if(DPS2_GET_IND_WD_DP_MODE_TIMEOUT()){ /*=== Watchdog is run out ===*/wd_dp_mode_timeout_function();DPS2_CON_IND_WD_DP_MODE_TIMEOUT(); /* confirm this indication */}

if(SPC3_GET_IND_USER_TIMER_CLOCK()){ /*==== Timer tick received ====*/SPC3_CON_IND_USER_TIMER_CLOCK();}

if(SPC3_GET_IND_BAUDRATE_DETECT()){ /*==== Baudrate found ====*/

/* If the baudrate has lost and again found in the state WAIT_CFG, *//* DATA_EX the SPC3 would answer to the next telegramms *//* with his default mintsdr. *//* But he should answer in the meantime parametrized mindstr */

if ((DPS2_GET_DP_STATE() == DPS2_DP_STATE_WAIT_CFG )|| (DPS2_GET_DP_STATE() == DPS2_DP_STATE_DATA_EX)) SPC3_SET_MINTSDR(store_mintsdr);

SPC3_CON_IND_BAUDRATE_DETECT();}

SPC3_SET_EOI(); /* */} /* End dps2_ind() */

/************************************************************************//* D e s c r i p t i o n : *//* *//* address data function */

Page 174: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

168

/************************************************************************/#pragma global

void address_data_function (void SPC3_PTR_ATTR*(address_data_ptr), UBYTE address_data_len){char ch;

/* change the slave-address */struct dps_address_data SPC3_PTR_ATTR * addr_ptr;

ch=address_data_len;

addr_ptr = address_data_ptr;

this_station = addr_ptr->new_address;real_no_add_chg = addr_ptr->no_add_chg;

/* store the new address and the bit real_no_add_chg for the next startup */

DPS2_FREE_SSA_BUF(); /* release the Set Slave Address buffer */}#pragma public

/************************************************************************//* D e s c r i p t i o n : *//* *//* restart_function *//************************************************************************/

#pragma global

void wd_dp_mode_timeout_function (void){UBYTE rueck;

/* Watchdog is run out. The SPC3 reset the PROFIBUS DP Statemachine */

user_wd_state = SPC3_GET_WD_STATE();

/*SX small weakness of the SPC3Update of the diagnosis with 00otherwise the bit "static diagnosis" would appear in thenext startup */

rueck = DPS2_SET_DIAG_LEN(6);rueck = DPS2_SET_DIAG_STATE(0x00);DPS2_DIAG_UPDATE();

}#pragma public

/************************************************************************//* D e s c r i p t i o n : *//* *//* global_ctrl_command_function *//************************************************************************/#pragma global

void global_ctrl_command_function (void){

Page 175: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Annex Xavier Pallàs i Sergi Aluja

169

user_global_ctrl_command = DPS2_GET_GC_COMMAND();

}#pragma public

/************************************************************************//* D e s c r i p t i o n : *//* *//* go_leave_data_ex_function *//************************************************************************/#pragma global

void go_leave_data_ex_function (void){

user_dps_state = DPS2_GET_DP_STATE();}

#pragma public

Page 176: Comunicació PROFIBUS - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/614pub.pdf · de qualsevol aparell i la transparència de la informació son característiques indispensables

Bibliografia Xavier Pallàs i Sergi Aluja

170

BIBLIOGRAFIA

GIL DOLCET, ERNEST

8051 Arquitectura i programació

Departament d’Enginyeria Electrònica, URV 1995

PHILIPS SEMICONDUCTORS

80C51-Based 8-bit Microcontrollers Data Handbook, cop. 1996

MANUALS

Order-No. 4002

PROFIBUS Technical Description

Profibus Brochure, 1999

GIL DOLCET, ERNEST

DCSemu, Emulador de Sistemas de Control Distribuido basados en el bus Rdbusv1.0

Departament d’Enginyeria Electrònica, URV 2002

SPC3 Hardware Description

(Siemens PROFIBUS Controller according to IEC 61158) v1.2

Siemens AG, 2002

COM PROFIBUS V5.1

No de referencia: 6ES5 895-6SE03

Simatic, 03/2002

IM 180 PROFIBUS Interface Module, User Description

Order Nº: 6ES7 180-0AA00-8BA0

Simatic Net, 20/10/1997

IM 183-1 PROFIBUS Interface Module, User Description

Order Nº: 6ES7 183-0AA01-8BA0

Simatic Net, 01/08/1996