gestió remota per línia telefònica de maquines dispensadores...
Post on 05-Oct-2020
5 Views
Preview:
TRANSCRIPT
Gestió Remota per Línia Telefònica de MaquinesDispensadores Automàtiques
AUTOR: José Antonio Agraz Millat .DIRECTOR: Jesús Brezmes Llecha .
DATA: Febrer / 2002.
Índex
i
1 Índex
Índex
ii
2 Memòria Descriptiva .................................................................................................... 1
2.1 Introducció .............................................................................................................. 2
2.1.1 Antecedents .................................................................................................. 2
2.1.2 Objectius ....................................................................................................... 2
2.2 Descripció Funcional .............................................................................................. 3
2.2.1 Visió General ................................................................................................ 3
2.2.2 Funcionament ............................................................................................... 4
2.2.3 Placa de Monitoritzacio per Col·locar a la Maquina Dispensadora ............. 4
2.2.4 Placa de Monitoritzacio per PC .................................................................... 6
2.2.5 Placa Interfície Telefònica ............................................................................ 8
2.2.6 Placa d’ Entrades per la Maquina Dispensadora ........................................ 10
2.3 Descripció Circuital .............................................................................................. 12
2.3.1 Placa de monitoritzacio per col·locar a la maquina dispensadora .............. 12
2.3.1.1 El Microcontrolador ........................................................................ 12
2.3.1.2 Latch d’ Adreces ............................................................................. 13
2.3.1.3 Memòria EPROM ........................................................................... 13
2.3.1.4 Entrades .......................................................................................... 14
2.3.1.5 Conversors D/A .............................................................................. 15
2.3.1.6 Etapa Moduladora ........................................................................... 16
2.3.1.7 Amplificador Sumador .................................................................... 18
2.3.1.8 Circuit de Recepció del Senyal Telefònic ....................................... 19
2.3.1.8.1 Etapa amplificadora .................................................................. 20
2.3.1.8.2 Etapa Demoduladora ................................................................ 21
2.3.1.9 Circuit de Visualització ................................................................... 22
2.3.1.10 Regulador de Tensió i Alimentació d’ Emergència ........................ 23
2.3.1.11 Circuit de Control del Mode de Baix Consum del µC .................... 24
2.3.1.12 Connector d’ Entrades ..................................................................... 26
2.3.1.13 Connector Placa Interfície Telefònica ............................................ 26
2.3.2 Placa de Monitoritzacio per PC .................................................................. 28
2.3.2.1 El Microcontrolador ........................................................................ 29
2.3.2.2 Latch d’ Adreces ............................................................................. 29
2.3.2.3 Memòria EPROM ........................................................................... 29
2.3.2.4 Circuit de Decodificacio d’ Adreces ............................................... 29
2.3.2.5 Conversors D/A .............................................................................. 31
2.3.2.6 Etapa Moduladora ........................................................................... 31
Índex
iii
2.3.2.7 Amplificador Sumador .................................................................... 32
2.3.2.8 Circuit de Recepció del Senyal Telefònic ....................................... 33
2.3.2.9 Connector per a la Placa Interfície Telefònica ................................ 34
2.3.3 Placa Interfície Telefònica ...................................................................... 35
2.3.4 Placa d’ Entrades per la Maquina Dispensadora ........................................ 36
2.4 Programa ASM de la Placa de Monitoritzacio ( Maquina Dispensadora ) .......... 37
2.4.1 Funció del Programa .................................................................................. 37
2.4.2 Estructura General del Programa ............................................................... 37
2.4.3 Estructura de la Rutina de Comunicacions Sèrie ....................................... 39
2.5 Programa ASM de la Placa de Monitoritzacio per PC ( Central ) ........................ 40
2.5.1 Funció del Programa .................................................................................. 40
2.5.2 Estructura General del Programa ............................................................... 41
2.5.3 Estructura de la Rutina de Comunicacions Sèrie ....................................... 42
2.6 Programa Visual Basic .......................................................................................... 43
2.6.1 Funció del Programa .................................................................................. 43
2.6.2 Estructura global del programa .................................................................. 44
2.7 Conclusions Finals ................................................................................................ 45
3 Manual d’ Usuari ........................................................................................................ 46
3.1 Introducció ............................................................................................................ 47
3.2 Requeriments del Sistema ..................................................................................... 47
3.3 Visió Global del Sistema ....................................................................................... 48
3.4 Instal·lació de les Plaques ..................................................................................... 50
3.4.1 Instal·lació de les Plaques que van a la Central .......................................... 50
3.4.2 Instal·lació de les Plaques que van a les Maquines Dispensadores ............ 53
3.5 Configuració del Hardware ................................................................................... 56
3.5.1 Configuració de les Plaques que van a la Central ..................................... 56
3.5.2 Configuració de les Plaques que van a les Maquines Dispensadores ........ 56
3.5.2.1 Configuració de la Placa de Monitoritzacio .................................... 56
3.5.2.2 Configuració de la Placa Interfície Telefònica ............................... 57
3.5.2.3 Configuració de la Placa d’ Entrades .............................................. 57
3.5.2.4 Introducció de les Dades a la Memòria del Microcontrolador ....... 58
3.6 Instal·lació del Software ........................................................................................ 60
3.7 Configuració del Software .................................................................................... 60
3.8 Posta en Marxa del Sistema .................................................................................. 61
Índex
iv
3.8.1 Quadre Resum de la Configuració de la Placa de Monitoritzacio ............... 66
3.8.2 Quadre Resum de la Configuració de la Placa de Monitoritzacio per PC .... 67
3.9 Descripció de l’ us del Software ........................................................................... 68
3.9.1 Explicació de l’ Interfície del Programa ..................................................... 68
3.9.1.1 Descripció dels Menús .................................................................... 69
3.9.1.2 Funcionament del Programa ........................................................... 71
3.9.2 Com Realitzar Operacions amb la Base de Dades ..................................... 73
3.9.2.1 Introducció d’ Informació a la Base de Dades ................................ 75
3.9.2.1.1 Introducció d’ un Tipus de Maquina a la Base de Dades ......... 75
3.9.2.1.2 Edició d’ un Tipus de Maquina ................................................ 76
3.9.2.1.3 Esborrar un Tipus de Maquina ................................................. 76
3.9.2.1.4 Introducció de l’ informació d’ una Maquina ........................... 76
3.9.2.1.5 Edició de l’ informació d’ una Maquina .................................. 78
3.9.2.1.6 Esborrar l’ informació d’ una Maquina .................................... 78
3.9.3 Com Comprovar si ha Trucat Alguna Maquina ......................................... 79
3.9.4 Com Interrogar a una o mes Maquines ...................................................... 80
4 Memòria de Càlcul ..................................................................................................... 83
4.1 Placa de Monitoritzacio ( Maquina Dispensadora ) .............................................. 84
4.1.1 Circuit del Regulador de Tensió ................................................................. 84
4.1.2 Circuit de Control del Mode de Baix Consum del µC ............................... 86
4.1.2.1 Càlcul de l’ Histèresi del Comparador ............................................ 86
4.1.2.2 Càlcul de la Polarització del Diode Zener .......................................88
4.1.2.3 Càlcul de la Xarxa de Retard .......................................................... 89
4.1.2.4 Càlcul de la Durada del Reset del Microcontrolador ..................... 90
4.1.3 Circuit de l’ Amplificador Sumador .......................................................... 91
4.1.4 Circuit Modulador ..................................................................................... 94
4.1.4.1 Càlcul de la freqüència del multivibrador ....................................... 94
4.1.4.2 Càlcul del filtre passa-baix .............................................................. 97
4.1.5 Circuit Demodulador .................................................................................. 97
4.2 Placa de Monitoritzacio per PC ............................................................................. 99
4.2.1 Amplificador Sumador ............................................................................... 99
4.2.1.1 Càlcul de la Polarització dels Optoacopladors .............................. 100
4.2.2 Circuit de Recepció del Senyal Telefònic ................................................ 101
Índex
v
4.2.2.1 Càlcul de la Polarització dels Optoacopladors ...................................101
4.3 Placa Interfície Telefònica .................................................................................. 103
4.3.1 Càlcul del Circuit Detector de Trucades .................................................. 103
4.3.2 Circuit de Control del Relé ....................................................................... 104
4.4 Placa d’ Entrades ................................................................................................. 105
4.4.1 Càlcul del Comparador amb Histèresi ...................................................... 105
4.5 Programació ........................................................................................................ 107
4.5.1 Subrutina de Marcacio DTMF ................................................................. 107
4.5.2 Comunicació Sèrie ................................................................................... 108
5 Plànols ........................................................................................................................ 110
5.1 Esquemes ............................................................................................................. 111
5.1.1 Placa de Monitoritzacio ............................................................................ 111
5.1.2 Placa de Monitoritzacio per PC ................................................................ 114
5.1.3 Placa d’ Entrades ...................................................................................... 116
5.1.4 Placa Interfície Telefònica ........................................................................ 117
5.2 Fotolits ................................................................................................................. 118
5.2.1 Placa de Monitoritzacio Cara Components .............................................. 118
5.2.2 Placa de Monitoritzacio Cara Soldadures ................................................ 119
5.2.3 Placa de Monitoritzacio per PC Cara Components .................................. 120
5.2.4 Placa de Monitoritzacio per PC Cara Soldadures .................................... 121
5.2.5 Placa d’ Entrades Cara Components ........................................................ 122
5.2.6 Placa d’ Entrades Cara Soldadures ........................................................... 123
5.2.7 Placa Interfície Telefònica Cara Components .......................................... 124
5.2.8 Placa Interfície Telefònica Cara Soldadures ............................................ 125
5.3 Serigrafia Components ........................................................................................ 126
5.3.1 Placa de Monitoritzacio ............................................................................ 126
5.3.2 Placa de Monitoritzacio per PC ................................................................ 127
5.3.3 Placa d’ Entrades ...................................................................................... 128
5.3.4 Placa Interfície Telefònica ........................................................................ 129
5.4 Cables de Connexió ............................................................................................. 130
5.4.1 Cables de Connexió de les Plaques que van a les Maquines Dispensadores ... 130
5.4.2 Cable de Connexió de les Plaques que van a la Central ........................... 131
Índex
vi
6 Pressupost .................................................................................................................. 132
6.1 Amidaments ........................................................................................................ 133
6.1.1 Amidaments Placa de Monitoritzacio ...................................................... 133
6.1.2 Amidaments Placa de Monitoritzacio per PC .......................................... 136
6.1.3 Amidaments Placa Interfície Telefònica .................................................. 138
6.1.4 Amidaments Placa d’ Entrades ................................................................. 140
6.1.5 Programa ASM per la Placa de Monitoritzacio ........................................ 141
6.1.6 Programa ASM per la Placa de Monitoritzacio per PC ............................ 141
6.1.7 Programa Visual Basic ............................................................................. 141
6.1.8 Disseny de Prototipus ...............................................................................141
6.2 Preus Elementals ................................................................................................. 142
6.2.1 Placa de Monitoritzacio ............................................................................ 142
6.2.2 Placa de Monitoritzacio per PC ................................................................ 144
6.2.3 Placa Interfície Telefònica ........................................................................ 146
6.2.4 Placa d’ Entrades ...................................................................................... 148
6.2.5 Programa ASM per la Placa de Monitoritzacio ........................................ 149
6.2.6 Programa ASM per la Placa de Monitoritzacio per PC ............................ 149
6.2.7 Programa Visual Basic ............................................................................. 149
6.2.8 Disseny de Prototipus ............................................................................... 149
6.3 Aplicació de Preus ............................................................................................... 150
6.3.1 Placa de Monitoritzacio ............................................................................ 150
6.3.2 Placa de Monitoritzacio per PC ................................................................ 153
6.3.3 Placa Interfície Telefònica ........................................................................ 155
6.3.4 Placa d’ Entrades ...................................................................................... 157
6.3.5 Programa ASM per la Placa de Monitoritzacio ........................................ 158
6.3.6 Programa ASM per la Placa de Monitoritzacio per PC ............................ 158
6.3.7 Programa Visual Basic ............................................................................. 158
6.3.8 Disseny de Prototipus ............................................................................... 158
6.4 Resum del Pressupost .......................................................................................... 159
6.4.1 Pressupost d’ Execució ............................................................................. 159
6.4.1.1 Preu Base PC ................................................................................. 159
6.4.1.2 Preu per cada Maquina Dispensadora ........................................... 159
6.4.1.3 Total Pressupost d’ Execució ....................................................... 159
6.4.2 Pressupost d’ Execució per Contracte ...................................................... 160
6.4.3 Pressupost de Licitació ............................................................................. 160
Índex
vii
7 Plec de Condicions .................................................................................................... 161
7.1 Condicions Generals ........................................................................................... 162
7.1.1 Introducció ................................................................................................ 162
7.1.2 Reglament i Normes ................................................................................. 162
7.1.3 Materials ................................................................................................... 162
7.1.4 Execució del Projecte ............................................................................... 163
7.1.5 Interpretació i Desenvolupament .............................................................. 163
7.1.6 Treballs Complementaris ......................................................................... 164
7.1.7 Treballs Complementaris ......................................................................... 164
7.1.8 Realització Defectuosa ............................................................................. 164
7.1.9 Mitjans Auxiliars ...................................................................................... 165
7.1.10 Recepció del Projecte ............................................................................... 165
7.1.11 Responsabilitats ........................................................................................ 165
7.1.12 Fiança ....................................................................................................... 166
7.2 Condicions Tècniques ......................................................................................... 166
7.2.1 Condicions de les Plaques de C.I. ............................................................ 166
7.2.2 Condicions del Components Electrònics .................................................. 167
7.2.3 Condicions del Muntatge de Plaques ....................................................... 167
7.3 Condicions Facultatives ...................................................................................... 168
7.3.1 Normes a Seguir ....................................................................................... 168
7.3.2 Personal .................................................................................................... 168
7.3.3 Reconeixements i Assajos Previs ............................................................. 169
7.3.4 Assajos ...................................................................................................... 169
7.3.5 Assajos d’ Aparellatge .............................................................................. 169
7.4 Condicions Econòmiques .................................................................................... 170
7.4.1 Preus ......................................................................................................... 170
7.4.2 Abonament del Projecte ........................................................................... 170
7.4.3 Revisió de Preus ....................................................................................... 170
7.4.4 Penalitzacions ........................................................................................... 170
7.4.5 Contracte .................................................................................................. 171
7.4.6 Rescissió del Contracte ............................................................................ 171
7.4.7 Liquidació en cas de Rescissió del Contracte .......................................... 172
Índex
viii
8 Resum del Projecte ................................................................................................... 173
9 Annexes ...................................................................................................................... 175
9.1 Llistats de Programes .......................................................................................... 176
9.1.1 Programa ASM Placa Monitoritzacio ...................................................... 176
9.1.2 Programa ASM Placa Monitoritzacio per PC .......................................... 206
9.1.3 Programa Visual Basic ............................................................................. 233
9.1.3.1 Form1 ............................................................................................ 234
9.1.3.2 Formulari1 ..................................................................................... 237
9.1.3.3 Formulari2 ..................................................................................... 254
9.1.3.4 Formulari3 ..................................................................................... 258
9.1.3.5 Formulari4 ..................................................................................... 264
9.1.3.6 Formulari5 ..................................................................................... 269
9.1.3.7 Formulari6 ..................................................................................... 272
9.1.3.8 Formulari7 ..................................................................................... 280
9.1.3.9 Formulari8 ..................................................................................... 280
9.1.3.10 Mòdul Declaracions ...................................................................... 281
9.1.3.11 Mòdul Funcions ............................................................................ 283
9.1.3.12 Mòdul Io32 .................................................................................... 292
9.1.3.13 Mòdul ISA .................................................................................... 294
9.1.3.14 Modul2 .......................................................................................... 300
9.1.3.15 Modul3 .......................................................................................... 301
9.1.3.16 Mòdul WinIO ................................................................................ 302
9.2 Informació Tècnica dels Components ................................................................. 303
Circuit Telefònic TEA 1064
Memòria descriptiva
1
2 Memòria Descriptiva
Memòria descriptiva
2
2 Memòria Descriptiva
2.1 Introducció
2.1.1 Antecedents
Donat el gran numero de maquines dispensadores de diferents productes que cadaempresa té instal·lades, sorgeix la necessitat de trobar una forma barata de realitzar el seumanteniment. El sistema que s’ ha dissenyat podria ser molt útil per tal de resoldre aquestaproblemàtica, cal dir que serveix per reduir els viatges ja que el tècnic només visitarà lesmaquines que ho requereixen i no totes com ho havia de fer abans.
L’ idea d’ aquest projecte va sorgir del professor Jesús Brezmes Llecha que em vaproposar aquesta idea i es va convertir en un Projecte de Final de Carrera amb la datad’ inici 30 d’ abril de 1999.
2.1.2 Objectius
Per tant, l’ objectiu d’ aquest projecte es dissenyar un sistema barat que permeti lamonitoritzacio d’ aquestes maquines dispensadores a traves de la línia telefònica, per tald’ esbrinar el seu estat i actuar en conseqüència.
La vigilància de les maquines dispensadores es farà a traves d’ un P C que es troba ala central de la empresa, el qual disposarà d’ un sistema que permet connectar-se a travesde la línia telefònica amb els circuits electrònics situats a les maquines dispensadores.D’ aquesta forma, amb el programa Gestió Remota, es podrà saber en quin estat es troba lamaquina dispensadora.
El sistema ha de permetre:
• Gestionar amb una base de dades el manteniment
• Interrogar l’ estat d’ una o un conjunt de maquines
• Rebre notificacions o alarmes de les maquines
• Sigui fàcil d’ utilitzar
Memòria descriptiva
3
CENTRAL
PC
2.2 Descripció Funcional
2.2.1 Visió General
El sistema de Gestió Remota de maquines dispensadores disposarà dels següentsmòduls:
• Una placa de monitoritzacio per col·locar a cada maquina dispensadora.
• Una placa de monitoritzacio per PC per col·locar en la central.
• Una placa interfície telefònica per a la central i una altra per a cada maquinadispensadora.
• Una placa d’ entrades per cada maquina dispensadora.
L’ esquema general del sistema de Gestió Remota es el que es mostra a la següentfigura:
Figura 1. Esquema general del sistema de Gestió Remota
Placa deMonitoritzacio
per PC
PlacaInterfície
Telefònica
Maquina Dispensadora 1
PlacaInterfície
Telefònica
Placa deMonitoritzacio
Placad’ Entrades
Líniatelefònica
Maquina Dispensadora 9999
PlacaInterfície
Telefònica
Placa deMonitoritzacio
Placad’ Entrades
Bus ISA
Programa GestióRemota 1.0
Memòria descriptiva
4
2.2.2 Funcionament
Com es pot veure en el esquema general, a cada maquina s’ instal·la uns mòduls pertal que si falta algun producte es posi amb contacte amb la central. A traves de la líniatelefònica, es comuniquen els mòduls que hi ha a la maquina dispensadora amb els que hiha a la central i que estan connectats amb un PC. Cada cop que es genera una alarma, en elordinador que es troba a la central, es mostra l’ estat de la maquina dispensadora en elprograma per a Windows Gestió Remota 1.0. Des d’ aquest programa es pot interrogar unao mes maquines per saber en quin estat es troben.
Sense aquest sistema, el personal que s’ encarrega del manteniment de les maquines,ha de fer revisions periòdiques a totes elles. Hi haurà casos en que hi ha maquines quegairebé no els fa falta cap producte i haurà altres casos en que feia dies que una o mesmaquines s’ havien quedat sense algun producte.
Amb el sistema Gestió Remota, es pot saber quan falta un producte i llavors elstècnics solament hauran d’ anar aquelles maquines que els hi falta alguna cosa, estalviant-seel tenir que mirar totes les maquines i així es millora el servei, perquè es pot tornar a carregarles maquines que els hi falta alguna cosa de forma ràpida. D’ aquesta forma s’ evita alsclients de quedar-se sense el producte que volien perquè s’ ha esgotat i encara no hantornat a ficar.
2.2.3 Placa de Monitoritzacio per Col·locar a la Maquina Dispensadora
Es la placa principal, conte les entrades que s’ encarreguen de vigilar l’ estat de lamaquina dispensadora, de les comunicacions sèrie, d’ introduir les dades ( identificador dela maquina dispensadora i el numero de telèfon de la central ) i de controlar els circuits quegeneren la senyal per marcar el numero de telèfon mitjançant el sistema de tons DTMF.
Les característiques principals d’ aquesta placa son:
• Microcontrolador de 8 bits 80C31 a 12 MHz.
• Memòria EPROM de 32KB.
• Entrades digitals ( 12 línies ).
• Tensió d’ alimentació compresa entre 9 i 20 V
• Connector per la placa d’ entrades.
• Connector per la placa interfície telefònica.
Memòria descriptiva
5
L’ esquema general de la placa es el següent:
Figura 2. Esquema general de la placa
Aquest bloc rep les dades de la maquina dispensadora a traves de la placad’ entrades. El microcontrolador s’ encarrega de llegir les entrades, mira el valor de lesentrades que havia obtingut anteriorment i si una de les entrades experimenta un flancascendent amb relació amb el valor anterior, genera la senyal de marcacio DTMF, pertrucar a la central i comença a transmetre les dades via sèrie gràcies a la placa interfícietelefònica. També vigila si hi ha alguna trucada, si hagués alguna, despenja i comença atransmetre les dades de les entrades via sèrie.
Mitjançant uns polsadors, es pot realitzar el Reset de la placa o introduirl’ identificador i el numero de telèfon de la central a la memòria del microcontrolador.
La placa disposa d’ un display de set segments que mostra les dadesemmagatzemades i com ha anat la comunicació via sèrie amb la central, això últim es moltútil a l’ hora de configurar el sistema.
Memòria descriptiva
6
2.2.4 Placa de Monitoritzacio per PC
Aquesta placa es col·loca en un PC que es troba a la central i es comunica ambl’ aplicació per a Windows Gestió Remota. Per connectar-se amb la línia telefònica utilitzauna placa interfície telefònica.
Les característiques principals d’ aquesta placa son:
• Microcontrolador de 8 bits 80C31 a 12 MHz.
• Memòria EPROM de 32KB.
• Connector per a bus ISA de 8 bits.
• Connector per la placa interfície telefònica.
L’ esquema general de la placa es el següent
Figura 3. Esquema General de la Placa
Memòria descriptiva
7
Aquesta placa esta pendent de si rep el senyal de que hi ha una trucada o si repalguna ordre de l’ aplicació Gestió Remota. Si detecta que hi ha una trucada, despenja iemet un senyal per indicar a la placa que hi ha a la maquina dispensadora que potcomençar a enviar les dades via sèrie. Un cop rebudes les dades, les envia al programaGestió Remota per tal que les mostri. Des de l’ aplicació, es pot enviar el numero detelèfon de la maquina dispensadora que volem interrogar a la placa, llavors aquesta realitzala marcacio del numero i desprès s’ espera a rebre un senyal ( per tal de sincronitzar-se ),abans de passar a rebre les dades de la maquina dispensadora. Com en el cas anterior uncop que ha rebut les dades les envia al programa per que les mostri.
Memòria descriptiva
8
2.2.5 Placa Interfície Telefònica
La placa interfície telefònica es col·loca tant a les maquines dispensadores com a lacentral.
Les característiques principals de la placa son:
• Utilització del circuit integrat TEA 1061 ( circuit de transmissió telefònicaamb interfície de marcacio ).
• Connector per la placa de monitoritzacio.
• Tensió d’ alimentació de 5V per al relé que s’ encarrega de connectar elcircuit a la línia telefònica.
L’esquema de connexió d’ aquesta placa es la següent:
Figura 4. Esquema de Connexió de la Placa Interfície Telefònica
Placa Interfície Telefònica
GND
Placa deMonitoritzacio
LíniaTelefònica
Memòria descriptiva
9
La placa interfície telefònica permet enviar i rebre senyals a traves de la líniatelefònica. Disposa d’ un detector de trucades i amb un relé pot connectar-se a la líniatelefònica per tancar el bucle d’ abonat i així poder rebre una trucada o poder realitzar lamarcacio d’ un numero per realitzar una comunicació.
Memòria descriptiva
10
2.2.6 Placa d’ Entrades per la Maquina Dispensadora
Aquesta placa es opcional, es a dir, si es vol monitoritzar entrades o senyals digitals,es pot connectar directament amb la placa de monitoritzacio que hi ha en la maquinadispensadora. Però si els senyals son analògics, llavors si que es necessària.
Les característiques d’ aquesta placa son:
• Entrades analògiques ( 12 línies ).
• Connector per la placa de monitoritzacio.
• Tensió d’ alimentació de 5V.
L’ esquema general de la placa es el següent:
Figura 5. Esquema General de la Placa d’ Entrades
Comparador ambHistèresi 1
Comparador ambHistèresi 12
1-2+ - 3-4 5-6 7-8 9-10 11-12
Entrades de la Placa
Connector Placa deMonitoritzacio
GND VCC
Memòria descriptiva
11
Aquesta placa s’ encarrega d’ adaptar els senyals analògics de les entrades iconvertir-los a nivells digitals TTL per tal que siguin compatibles amb les entrades de laplaca de monitoritzacio.
Memòria descriptiva
12
2.3 Descripció Circuital
2.3.1 Placa de monitoritzacio per col·locar a la maquina dispensadora
2.3.1.1 El Microcontrolador
El Microcontrolador escollit per realitzar aquesta placa es el 80C31. S’ ha escollitaquest model perquè es molt barat i a mes es disposa de les eines de desenvolupament perpoder depurar tant hardware com software.
Es tracta d’ un microcontrolador de 8 bits i les seves característiques son lessegüents:
• CPU de 8 bits.
• Processador boolea ( operació sobre bits ).
• 128 bytes útils per al usuari i 256 bytes incloent el SFR.
• Espai de memòria de 64K per a programa extern.
• Espai de memòria de 64K per a dades extern.
• Dos timers.
• Comunicació asíncrona full-duplex.
• 5 fonts d’ interrupció amb nivells de prioritat.
• 2 interrupcions externes.
• 2 interrupcions dels timers.
• 1 interrupció de la comunicació sèrie.
• 4 ports d’ entrada/sortida programables.
• Baix consum ( Power Down ) en les versions CMOS.
• Oscil·lador intern.
Memòria descriptiva
13
2.3.1.2 Latch d’ Adreces
En aquest microcontrolador, el bus de dades i la part baixa del bus d’ adrecescomparteixen les mateixes línies. Per tant es necessari separar-los. Per aquesta finalitat esdisposa un Latch que capturi les adreces i deixi les línies disponibles per a les dades. Quanapareixen les adreces, el microcontrolador activa el senyal ALE ( Adress Latch Enable ),aquest senyal s’ utilitza per realitzar el CLK del Latch i capturar així les adreces. A lafigura següent es mostra la connexió d’ aquest Latch.
VCC
A[0..7]
A6A7
A5A4
A0
A3
A1A2
P0_7
P0_0
P0_[0..7]
P0_3P0_4
P0_1
P0_5P0_6
P0_2
U474LS573
D12
D23
D34
D45
D56
D67
D78
D89
C11
OC1
Q119
Q218
Q317
Q416
Q515
Q614
Q713
Q812
VC
C
20
GN
D
10
A0:7P0:7
ALE
Figura 6. Connexió del Latch d’ adreces
2.3.1.3 Memòria EPROM
La memòria EPROM, esta sempre activada i el seu accés es controla amb el piu OE( Output Enable ) .
El senyal PSEN ( Program Store Enable ) solament s’ activa quan s’ ha d’ accedir ala memòria de programa externa. Llavors amb aquest senyal que esta connectat al piu OEde la memòria EPROM, s’ habilita les sortides per tal de poder llegir el codi del programa.
Memòria descriptiva
14
VCC
A[0..7]
A7
A4
A1A2
A0
A6
A3
A5
P2_0
P2_4
P2_1P2_2
P2_[0..7]
P2_5P2_6
P2_3
P0_4
P0_7P0_6P0_5
P0_0
P0_[0..7]
P0_3P0_2P0_1
U527256
A010
A19
A28
A37
A46
A55
A64
A73
A825
A924
A1021
A1123
A122
A1326
A1427
CE20
OE22
VPP1
O011
O112
O213
O315
O416
O517
O618
O719
VC
C
28
GN
D
14
P2[0..6]
A[0..7]
PSEN
P0[0..7]
Figura 7. Connexió de la Memòria EPROM
2.3.1.4 Entrades
Les entrades 0-3, es llegeixen a traves de la part baixa del port 1, en canvi lesentrades 4-11, per llegir-les s’ ha de realitzar una lectura de la memòria externa de dadesper tal que se activi el senyal de lectura per dispositius externs RD del microcontrolador iaixí permetre que el buffer 74LS245 deixi passar les entrades al port 0. Encara que el74LS245 es un buffer bidireccional, en aquest circuit actua com un buffer d’ una soladirecció amb sortida triestat ja que el piu que controla la direcció es troba a nivell baix deforma permanent.
VCC VCC
IN[0..7]
P1_1
IN1
P1_2P1_3
P1_0
IN2
IN6IN5
IN7
IN3IN4
IN0 IN6
IN4
IN0
IN2IN3
IN5
IN7
IN1
P0_5
P0_7
P0_1
P0_4P0_3P0_2
P0_0
P0_6
JP1
PLACA D' ENTRADES
123456789
1011121314
U274LS245
A12
A23
A34
A45
A56
A67
A78
A89
G19
DIR1
B118
B217
B316
B415
B514
B613
B712
B811
VC
C
20
GN
D
10
P1[0..3]
RD
P0[0..7]
Figura 8. Esquema de les Entrades
Memòria descriptiva
15
2.3.1.5 Conversors D/A
Els conversors D/A tenen la funció de generar el parells de tons necessaris perrealitzar la marcacio DTMF.
Amb un Latch 74HC574 i un conjunt de resistències de precisió ( tolerància del 1 % )amb valors de 10 K i 20 K, s’ han realitzat dos conversors D/A R-2R de 3 bits cadascun.
Per tal que el conversors D/A funcionin correctament, es important que el Latchescollit sigui una versió CMOS, ja que les versions bipolars no transmeten el nivell altcorrectament en aquest tipus de muntatge.
Les entrades del Latch estan connectades al port 0 del microcontrolador i el senyal deClock del Latch esta connectat al senyal d’ escriptura en dispositius externs WR. D’ aquestaforma, quan es fa una escriptura a la memòria de dades externa amb l’ instrucció MOVX,s’ accedeix al conversors D/A.
Dels 8 bits que te el Latch, només sis s’ utilitzen per implementar els conversorsD/A, un dels altres bits ( bit 3 ) s’ utilitza per habilitar el senyal que realitza la funció deportadora per a les comunicacions via sèrie i l’ últim bit no s’ utilitza per a res.
Memòria descriptiva
16
L’ esquema dels conversors D/A es el següent:
VCC
P0_4
P0_6P0_7
P0_0
P0_3P0_2
P0_5
P0_1BUS0
BUS4
BUS6
BUS2
BUS2
BUS5
BUS1
BUS3
BUS5
BUS3
BUS6
BUS4
BUS1
BUS0
BUS[0..6]
R3210 K
12
R2020 K
1 2
R3720 K
1 2
R2110 K
12
R1620 K
1 2
R2320 K
1 2
R1810 K
12
R3420 K
1 2
R2610 K
12
R2920 K
1 2
R3610 K
12
R3910 K
12
U674HC574
D12
D23
D34
D45
D56
D67
D78
D89
C11
OC1
Q119
Q218
Q317
Q416
Q515
Q614
Q713
Q812
VC
C
20
GN
D
10
P0[0..7]
PE
Sortida 1
Sortida 2
WR
Figura 9. Esquema dels conversors D/A R-2R
2.3.1.6 Etapa Moduladora
Esta formada per tres portes NAND trigger Schmitt. Amb una d’ aquestes portes esrealitza un multivibrador que genera la senyal portadora amb una freqüència de 2400 Hz.Amb la resta de portes es realitza un circuit que solament deixa passar la portadora si lasortida del port sèrie TXD es troba activa a nivell baix ( es transmeten dades via sèrie ) o elsenyal PE es troba actiu a nivell baix.
Quan es transmeten dades via sèrie, la senyal que s’ obté a la sortida d’ aquestaetapa, es la portadora modulada en amplitud per la sortida del port sèrie delmicrocontrolador. Desprès amb un filtre passa-baix de primer ordre s’ intenta eliminar elsharmònics del senyal i atenuar-la una mica per evitar saturar a la següent etapa.
Memòria descriptiva
17
El senyal PE ( Portadora Enable ), s’ utilitza per generar un pols de senyal queserveix per la sincronització de les plaques de monitoritzacio quan es realitza lacomunicació a traves de la línia telefònica.
L’esquema de l’ etapa moduladora es el següent:
R48
10 K
1 2
R4633 K
1 2
C3033 nF
12
C3122 nF
12
U11D
4093
12
13
11
U11A4093
1
23
U11B
4093
5
64
TXD
PE
Sortida Modulador
Figura 10. Esquema Etapa Moduladora
Memòria descriptiva
18
2.3.1.7 Amplificador Sumador
Aquesta part esta formada per un amplificador operacional quàdruple LM 324. En lafigura següent es pot apreciar l’ esquema d’ aquest muntatge:
VCC
R4310 K
12C36
470 nF1 2
C2015 nF
1 2
R3010 K
1 2
R4210 K
1 2
R4410 K
1 2
R2510 K
1 2
R1710 K
1 2
R384K7
12
C3533 nF
12
R2422 K
12
R4510 K
1 2
C2510 nF
1 2
C27470 nF
1 2
R2710 K
1 2
C34470 nF
12
R286K8
1 2
R1310 K
1 2
C296.8 nF
1 2
R710 K
1 2
C22470 nF
1 2
C2610 nF
1 2
C32470 nF
1 2
+
- U8DLM324
12
1314
+
- U8BLM324
5
67
+
- U8ALM324
3
21
+
- U8CLM324
10
98
Entrada 1
Entrada 2
Entrada Senyal Modulada
Sortida
Figura 11. Esquema de l’ Amplificador Sumador
La funció d’ aquesta part es la de sumar els senyals que provenen dels dos conversorsD/A i de l’ etapa moduladora. Cadascuna dels senyals passa a traves d’ un amplificadorinversor que actua com a filtre passa-baix. Cada senyal te la seva pròpia freqüència de tall.La sortida dels tres filtres van a parar a un amplificador sumador inversor que també actuacom a filtre passa-baix. La sortida d’ aquest amplificador sumador va cap a un filtrepassa-baix de primer ordre i després va cap al connector de la placa interfície telefònica.
Memòria descriptiva
19
El filtres passa-baixos s’ han ficat per reduir els harmònics del senyal generats ambels conversors D/A i també de la senyal que prové de l’ etapa moduladora, per tal que elstres senyals s’ assemblin el màxim possible a un senyal sinusoï dal.
Per aquest circuit, s’ ha escollit el LM 324 perquè es un amplificador operacionalquàdruple d’ us general que a mes funciona correctament amb un tensió simple de 5 V.
2.3.1.8 Circuit de Recepció del Senyal Telefònic
Aquest bloc esta format per un amplificador operacional dual i tres de portes NANDtrigger Schmitt.
Es pot dividir aquest bloc en dues parts funcionals diferents:
• Etapa amplificadora: s’ encarrega d’ amplificar el senyal procedent de laplaca interfície telefònica.
• Etapa demoduladora: agafa com a entrada la senyal de l’ etapa anterior, laconverteix a digital i després realitza la demodulacio per obtindré el senyalsèrie de 128 bps.
Memòria descriptiva
20
2.3.1.8.1 Etapa amplificadora
Esta formada per un seguidor de tensió que te la funció d’ adaptar l’ impedancia,seguit d’ un amplificador inversor de guany variable. El guany es pot ajustar entre 1 i 101,es a dir entre 0 i uns 40 dB.
La sortida d’ aquesta etapa es connectada a l’ etapa demoduladora.
En la figura següent es pot apreciar l’ esquema d’ aquest muntatge:
VCC VCCVCC VCC
R51100 K
13
2
R351 K
1 2
R414K7
12
R504K7
12
R4910 K
12
R4010 K
12
C24100 nF
12
+
-
U12BLM358
5
67
84
R311 K
1 2
C28100 nF
1 2+
-
U12ALM358
3
21
84
EntradaSortida
Figura 12. Esquema Etapa Amplificadora
Memòria descriptiva
21
2.3.1.8.2 Etapa Demoduladora
Té com a entrada el senyal de sortida de l’ etapa amplificadora. El senyal passa a unaporta NAND trigger Schmitt per convertir el senyal analògic a digital abans de realitzar lademodulacio del senyal.
La demodulacio del senyal es realitza mitjançant una bàscula monoestableredisparable. La seva constant de temps RC es igual al període de la senyal portadora.D’ aquesta forma s’ aconsegueix obtindré el senyal sèrie de 128 bps.
En la figura següent es pot apreciar l’ esquema d’ aquest muntatge:
VCC
R472M2
12
U13D4093
12
13
11
U13C4093
891
0
R5210 K
1 2
C33220 pF
12
U11C4093
891
0
D71N4148
1 2
Sortida Demodulador
Entrada Demodulador
Figura 13. Esquema de l’ Etapa Demoduladora
Memòria descriptiva
22
2.3.1.9 Circuit de Visualització
Esta format per un decodificador BCD a 7 segments amb Latch ( 4511 ) i un display7 segments amb càtode comú.
Les quatre entrades del decodificador BCD a 7 segments estan connectades alsquatre bits menys significatius del port 2 i el piu LE esta connectat al senyal d’ escripturaper a dispositius externs WR del microcontrolador.
El piu LE del decodificador BCD a 7 segments, mentre estigui a nivell alt mantél’ informació i quant esta a nivell baix permet que es visualitzi la xifra que hi ha a les sevesentrades. Si la xifra que hi ha a les entrades es superior a 9, no mostra res en el display.
El piu BI del decodificador BCD a 7 segments, s’ activa a nivell baix i provoca queno mostri res en el display. Com aquest piu esta connectat al bit P1.6, controlant el nivelld’ aquest bit, es pot habilitar o deshabilitar la visualització.
Per tant solament es pot actualitzar la xifra del display quan la senyal d’ escriptura enmemòria externa esta activa. La xifra que s’ ha de visualitzar en el display, es carrega alregistre P2 i després es carrega al acumulador el valor inicial que ha de tindré elsconversors D/A i el bit PE. Aleshores es realitza una escriptura a la memòria de dadesexterna amb l’ instrucció MOVX A,@R0 per tal que l’ adreça sigui de 8 bits i el contingutdel registre P2 pugui passar al port 2.
En la figura següent es pot apreciar l’ esquema d’ aquest muntatge:
VCC
P2_0
P2_3
P2_1P2_2
R331 K
12
DISPLAY
1413121110987
654321
U94511
A7
B1
C2
D6
LT3
BI4
LE5
A13
B12
C11
D10
E9
F15
G14
P2[0..3]
WR
P1.6
Figura 14. Esquema del Circuit de Visualització
Memòria descriptiva
23
2.3.1.10 Regulador de Tensió i Alimentació d’ Emergència
Aquest bloc s’ encarrega d’ estabilitzar la tensió d’ alimentació i de separar la tensiód’ alimentació del microcontrolador de la de la resta del circuit. Això es fa perquè en el casque falti la tensió, sigui únicament el microcontrolador el que s’ alimenti amb piles obateries per tal de mantindré el contingut de la seva memòria RAM. A la següent figura esmostra l’ esquema del circuit:
VCC
C13100 nF1
2
R1
220
1 2
JP3
BATERIA
12
JP6
VCC
12
+ C121000 uF
12
R2500
13
2
R22330
12
C14100 nF
12
D21N4148
12
JP4
VCC_MICRO
12
D11N4148
1 2
D31N4004
12
C17100 nF
12
U1LM317
VIN3
AD
J1
VOUT2
+ C161000 uF
12
+ C151000 uF
12
JP5
ALIMENTACIO
12
Tensió de Referència
Vcc Micro
Figura 15. Esquema del Regulador de Tensió i Alimentació d’ Emergència
El regulador de tensió utilitzat es un LM317 amb encapsulat TO220, la seva tensióde sortida s’ ajusta per compensar la caiguda de tensió que provoca el diodes. Per tal deque funcioni correctament i pugui dissipar tota la calor que genera, el regulador de tensióLM 317 ha de portar un dissipador de Rth 4K/W.
Per realitzar la commutació d’ alimentació del microcontrolador quan falli el correntelèctric, s’ utilitza un parell de diodes. Fins que la tensió de sortida del regulador no siguiinferior a la tensió de les piles o bateries, el microcontrolador s’ alimenta de la tensió delregulador però quan aquesta tensió sigui inferior o sigui nul·la, el microcontroladorpassa a alimentar-se de les piles o bateries.
Memòria descriptiva
24
2.3.1.11 Circuit de Control del Mode de Baix Consum del µC
Aquest circuit s’ encarrega de reduir el consum del microcontrolador quan esprodueix una baixada de la tensió d’ alimentació per a que es pugui alimentar amb la tensióde dues piles o bateries i així mantenir l’ informació de la seva memòria RAM quan esprodueix un tall de subministrament elèctric.
La seva funció es la de controlar el piu INT0 i el Reset del microcontrolador, pergenerar una interrupció externa ( al activar el piu INT0 ) i fer que el microcontroladoractivi el Bit PD del registre PCON per passar al mode de baix consum, quan la tensió dereferència baixi per sota del límit prefixat.
En el mode baix consum, es para el oscilador-rellotge del microcontrolador. Amb elrellotge parat, totes les funcions es troben detingudes, però l’ informació de la RAMinterna es manté. En aquest mode, la tensió d’ alimentació VCC pot ser reduï da fins a 2 V.Però s’ ha de tindré en compte de restaurar la tensió abans de que aquest mode finalitziamb un Reset per Hardware.
Després quan la tensió torna i la tensió de referència puja per sobre d’ un cert valorque també es pot fixar, llavors el circuit realitza el Reset del microcontrolador per quepassi al mode normal i torni a executar el programa.
El seu esquema es mostra en la següent figura:
VCC
VCC
VCC
VCCVCC VCC
D51N4148
12
R111 K
13
2
R4120
12
R510 K
12
R910 K
12
R81 K
1 2R610 K
12
R3 470K13
2
R1910 K
12
D41N4148 1
2
+
- U7LM311
2
37
5 64 1
8
C23220 nF
12
D63V3
12
R12100 K
1 2
SW3
RESET
12
R1010 K
12
U13A
4093
1
23
U13B
4093
5
64
C21220 nF
1 2
Tensió de Referència
Reset
P3.2
Figura 16. Circuit de Control del Mode de Baix Consum del Microcontrolador
Memòria descriptiva
25
Aquest circuit es bassa en un comparador amb histèresi i dues portes NAND triggerSchmitt.
La tensió de referència del comparador s’ ha estabilitzat amb un diode zener de 3,3Vi mitjançant una resistència variable es pot variar la tensió que s’ aplica al comparador.L’ altra entrada del comparador esta connectada a la sortida del regulador de tensió abansdels condensadors de filtratge, per tal de detectar mes ràpidament quan hi ha una caigudade tensió.
El comparador amb histèresi disposa d’ una altra resistència variable per modificar lahistèresi.
Quan es connecta l’ alimentació al circuit, al ser la tensió de l’ entrada no inversorames gran que la tensió de referència, la sortida del comparador passa a nivell alt. A travesd’ una xarxa RC, el nivell alt es propaga amb un petit retard a una porta NAND triggerSchmitt, la sortida de la qual passa a nivell baix. Després aquest senyal passa per undiferenciador amb lo qual es genera un pols que s’ aplica a una altra porta NAND triggerSchmitt. Aquesta porta te dues entrades, una esta connectada al polsador de Reset i l’ altraesta connectada al diferenciador. Els pols es invertit per la porta NAND i provoca el Resetdel microcontrolador.
Però quan la tensió d’ alimentació baixa per sota del altre nivell, com la sortida delcomparador esta connectada al piu EXT0 del microcontrolador, al passar a nivell baixprovoca l’ interrupció INT0 la qual fa que el microcontrolador passi al mode de baixconsum.
Memòria descriptiva
26
2.3.1.12 Connector d’ Entrades
Es tracta del connector JP1 i disposa de 14 pius. Aquest s’ uneix al connector( del mateix tamany ) de la placa d’ entrades a traves d’ un cable de cinta pla. El connectorincorpora l’ alimentació i les 12 entrades digitals. La distribució d’ aquests senyals en elconnector es la següent:
VCC
In 2
In 6
In 3In 4
In 1
In 7
In 11In 10
In 12
In 8In 9
In 5
JP1
PLACA D' ENTRADES
123456789
1011121314
P0[0..7]
P1[0..3]
Figura 17. Connector d’ Entrades
2.3.1.13 Connector Placa Interfície Telefònica
Es tracta del connector JP2 i disposa de 6 pius. El connector disposa dels següentssenyals:
1. GND : es un dels cables d’ alimentació.
2. Data In : entrada analògica on s’ obté els senyals que es reben a traves de lalínia telefònica.
3. Data Out : sortida que proporciona els senyals per realitzar la marcacioDTMF i els senyals necessaris per a la comunicació de dades via sèrie.
4. Despenjar : entrada que activa el relé que serveix per connectar el circuit a lalínia telefònica. Aquesta entrada s’ activa a nivell alt.
5. Detecció de trucada : sortida que indica que ha rebut una trucada. Si detectaalguna trucada la sortida passa a nivell baix.
6. VCC : es un altre cable d’ alimentació.
Memòria descriptiva
27
La distribució dels senyals en el connector es la següent:
VCCP3_5
P3_3
JP2
Placa Interfície Telefònica
123456
Despenjar
Deteccio de Trucada
Data In
Data Out
Figura 18. Connector Placa Interfície Telefònica
Memòria descriptiva
28
2.3.2 Placa de Monitoritzacio per PC
Per tal de realitzar una placa d’ aquest estil, les opcions mes factibles son utilitzaruna Gal o un Microcontrolador per tal d’ implementar-la. D’ aquestes opcions es va optarper un Microcontrolador que disposes d’ una UART o port sèrie, ja que facilita molt eltema de les comunicacions sèrie a traves de la línia telefònica.
A l’ hora de dissenyar una targeta per PC, primer s’ ha de triar el tipus de bus queutilitzarà. Com es pretén realitzar una targeta interna, els bussos que es poden seleccionarson el bus ISA i PCI.
El bus PCI presenta un bus de dades de 32 o 64 bits segons la seva versió i el busISA pot tenir un bus de dades de 8 o 16 bits. En aquest cas com l’ objectiu es realitzar unaplaca amb un cost reduï t i a mes com el bus de dades del microcontrolador es de 8 bits,s’ ha escollit com a tipus de bus el ISA.
L’ utilització del bus ISA presenta l’ avantatja que es bastant senzill de dissenyar irealitzar una placa per aquest tipus de bus. Però presenta un inconvenient, aquest tipus debus s’ esta quedant obsolet i en els nous equips informàtics hi ha la tendència de deixar-lode fer servir.
La placa de monitoritzacio per PC, es una placa per bus ISA de 8 bits, que te un busde dades de 8 bits, un bus d’ adreces de 10 bits i que mapeja dos registres en l’ espaid’ entrada/sortida.
L’ adreça de la placa es configurable i es pot seleccionar quatre valors, 300H,310H, 320H i 330H.
Des de el punt de vista del hardware la placa disposa de dos registres :
• Registre d’ Estat: que es solament escriptura per a la placa i solament lecturaper al programa que s’ executa en el PC.
• Registre de Control: que es solament lectura per a la placa i solamentescriptura per al programa.
Però des de el punt de vista del programa o a l’ hora de programar, es com sisolament hi hagués un registre mapejat en l’ adreça que s’ ha escollit.
Memòria descriptiva
29
La placa es pot dividir en els següents blocs:
2.3.2.1 El Microcontrolador
El Microcontrolador escollit, es el mateix que s’ ha utilitzat en la placa demonitoritzacio que es col·loca en les maquines dispensadores. Les seves característiques espoden veure en l’ apartat 2.3.1.1.
2.3.2.2 Latch d’ Adreces
El seu connexionat es idèntic al realitzat en la placa de monitoritzacio, es pot veureen el apartat 2.3.1.2.
2.3.2.3 Memòria EPROM
El chip de memòria EPROM, es connecta de la mateixa forma que en la placa demonitoritzacio. El seu esquema es pot veure en l’ apartat 2.3.1.3.
2.3.2.4 Circuit de Decodificacio d’ Adreces
Aquesta placa per comunicar-se amb el PC utilitza el bus ISA i mapeja dos registresde 8 bits en una adreça de l’ espai d’ entrada/sortida. Mitjançant uns ponts es determinal’ adreça de la placa.
Per realitzar el decodificador d’ adreces, s’ utilitza un decodificador d’ octal adecimal, un comparador de 8 bits i una porta NAND.
Per realitzar la decodificacio d’ adreces s’ utilitza els 10 bits menys significatius delbus d’ adreces i a mes s’ utilitza el següents senyals:
• AEN : senyal activa a nivell alt que indica que hi ha una transferència DMA.
• IOR: senyal de control de lectura/escriptura de la CPU. Senyal activa a nivellbaix que indica a un dispositiu E/S que fiqui les dades al bus.
• IOW: senyal de control de lectura/escriptura de la CPU. Senyal activa a nivellbaix que indica a un dispositiu E/S que pot llegir les dades del bus.
Memòria descriptiva
30
En la següent figura es pot veure l’ esquema del circuit:
VCC
VCC
VCC
VCC
VCC
VCC
VCC
VCC
SA4
SA4
SA7
SA3
SA5
SA6
SA2
SA2
SA1
SA8
SA0
SA0
SA8
SA6
SA1
SA5
SA3
SA9
SA7
SA9
SA[0..9]
P0_4
P0_2P0_3
P0_6P0_5
P0_0P0_1
P0_7
P0[0..7]
P1_3
P1_1
P1_6
P1[0..7]
P1_2
P1_0
P1_7
P1_5P1_4
P3[0..7]P3_2
D6
D6
D3
D7
D3
D7
D5
D0
D1
D0
D5
D6
D2D3
D0
D4
D1
D[0..7]
D4
D2
D7
D1
D2
D5
D4
R11K
12
R21K
12
JP3BUS_ISA
A11
A22
A33
A44
A55
A66
A77
A88
A99
A1010
A1111
A1212
A1313
A1414
A1515
A1616
A1717
A1818
A1919
A2020
A2121
A2222
A2323
A2424
A2525
A2626
A2727
A2828
A2929
A3030
A3131
B132
B233
B334
B435
B536
B637
B738
B839
B940
B1041
B1142
B1243
B1344
B1445
B1546
B1647
B1748
B1849
B1950
B2051
B2152
B2253
B2354
B2455
B2556
B2657
B2758
B2859
B2960
B3061
B3162
U274HC573
D12
D23
D34
D45
D56
D67
D78
D89
C11
OC1
Q119
Q218
Q317
Q416
Q515
Q614
Q713
Q812
VCC20
GND10
U3A4093
1
23
U474HC138
A1B2C3
G16G2A4G2B5
Y015 Y114 Y213 Y312 Y411 Y510 Y6
9 Y77
VC
C
16
GN
D
8
U174HC688
P02P14P26P38P411P513P615P717
Q03Q15Q27Q39Q412Q514Q616Q718
G1
P=Q19
VCC20
GN
D
10
U574HC573
D12D23D34D45D56D67D78D89
C11OC1
Q119 Q218 Q317 Q416 Q515 Q614 Q713 Q812
VCC20
GN
D
10
JP2JUMPER1 2
JP1JUMPER1 2
Reset
P3.2
P1[0..7]
RD
P0[0..7]
Figura 19. Esquema del Circuit de Decodificació d’ Adreces
La senyal AEN es connecta al Chip Select negat del comparador de 8 bits, d’ aquestaforma s’ evita que la placa accedeixi al bus quan es realitza una transferència DMA.
A les entrades Q0 a Q7 del comparador, es connecten les línies d’ adreces A2-A9.Les línies A0, A1, IOR i IOW, es connecten al decodificador octal a decimal. A les altresentrades del comparador ( P0-P7 ), se li assigna el valor corresponent excepte P2 i P3 quees poden modificar mitjançant uns ponts.
El decodificador octal a decimal, te tres senyals d’ habilitació, dos d’ ells son negatsi estan connectats a les línies A0 i A1 del bus d’ adreces, l’ altre no esta negat i estaconnectat a nivell alt. Les entrades del decodificador es tan connectades als senyals IOR iIOW negats i a la sortida negada del comparador de 8 bits. De forma que quan els valorsde A2-A9 siguin igual al valor prefixat en les altres entrades del comparador, la sortida delcomparador passa a nivell baix. Després quan A0 i A1 estan a nivell baix, el decodificadoroctal a decimal esta habilitat i llavors activarà la sortida 1 o la sortida 2 depenen del valorsde IOR i IOW negats.
Memòria descriptiva
31
Aquest circuit de decodificacio controla dos Latch 74HC573. El Latch on es guardales dades del Registre d’ Estat, rep les dades del port 1 del microcontrolador. Quan esdetecta una lectura d’ E/S en l’ adreça de la placa, s’ activa el senyal OC ( Output Controlo Output Enable ) del Latch i es transfereix el contingut del Registre d’ Estat al bus per talque pugui ser llegit per el programa .
El registre de control emmagatzema les seves dades en un Latch que agafa les dadesdels bus. El circuit de decodificacio controla la senyal de Clock d’ aquest Latch i quan esdetecta una escriptura d’ E/S en l’ adreça de la placa, s’ activa el senyal de Clock i el Latchguarda les dades que hi ha en el bus i que ha escrit l’ aplicació.
2.3.2.5 Conversors D/A
La seva connexió es com la de la placa de monitoritzacio, el seu esquema es potveure en l’ apartat 2.3.1.5.
2.3.2.6 Etapa Moduladora
Com gairebé tots els mòduls de la placa de monitoritzacio per PC, el seu disseny esidèntic al de la placa de monitoritzacio que es col·loca a les maquines dispensadores. Elseu esquema es pot veure en l’ apartat 2.3.1.6.
Memòria descriptiva
32
2.3.2.7 Amplificador Sumador
Els seu disseny es idèntic al del mòdul de la placa de monitoritzacio ( apartat 2.3.1.7 ),però aquest té connectat a la sortida, un circuit format per un optoacoplador per aï llarelèctricament la placa de monitoritzacio per PC de la placa interfície telefònica.L’ esquema del circuit del optoacoplador es pot veure a la figura següent:
VCC
C24470 nF
1 2
R396K8
12
ISO1CNY17
12
54
R261 K
1 2
R4610 K
12
R3810 K
12
C27470 nF1 2
Entrada
Sortida
Gnd 2
Vcc 2
Figura 20. Esquema del Circuit del Optoacoplador
La senyal procedent de la sortida del amplificador sumador, s’ aï lla elèctricament dela placa interfície telefònica mitjançant un optoacoplador Led-Fototransistor. Això esrealitza per tal d’ evitar diferencies de potencial entre la massa de la línia telefònica i lamassa de la font commutada del PC. Això provocaria que la placa interfície telefònica nofunciones correctament.
La senyal procedent del amplificador sumador, modula la lluminositat del Led que hiha en l’ optoacoplador, llavors aquestes variacions es transmeten al Fototransistor id’ aquesta forma s’ obté el senyal que va al connector per a la placa interfície telefònica.
Memòria descriptiva
33
2.3.2.8 Circuit de Recepció del Senyal Telefònic
Aquest bloc rep el senyal de la placa interfície telefònica a traves d’ un circuit formatper un optoacoplador, la missió del qual es aï llar elèctricament la placa de monitoritzacioper PC de la línia telefònica. La resta del circuit es igual al que hi ha en la placa demonitoritzacio ( apartat 2.3.1.8 ). En la següent figura es pot veure l’ esquema del circuitformat pel optoacoplador:
VCC
ISO2
CNY171
2
54
C301 uF
12
R344K7
1 2
R301 K
1 2R4310 K
12
C25470 nF1 2
R4710 K
12
Data In
Gnd 2
Vcc 2Etapa Amplificadora
Figura 21. Esquema del Circuit del Optoacoplador
Memòria descriptiva
34
2.3.2.9 Connector per a la Placa Interfície Telefònica
La placa de monitoritzacio per PC disposa d’un connector DB9 femella, amb elqual es connecta amb la placa interfície telefònica a traves d’ un cable bus o de cinta de 8fils.
Aquest connector té els següents senyals:
1. GND : cable d’ alimentació que prové de la placa de monitoritzacio per PC.
2. GND2 : massa de la placa interfície telefònica.
3. Data In : entrada analògica on s’ obté els senyals que es reben a traves de lalínia telefònica.
4. Data Out : sortida analògica que proporciona els senyals per a realitzar lamarcacio DTMF i els senyals necessaris per a realitzar la comunicació sèrie.
5. Despenjar : entrada que activa el relé que serveix per connectar el circuit a lalínia telefònica. Aquesta entrada s’ activa a nivell alt.
6. Detecció de trucada : sortida que indica que ha rebut una trucada. Si detectaalguna trucada la sortida passa a nivell baix.
7. VCC2 : tensió d’ alimentació de la placa interfície telefònica la qual prové dela línia telefònica.
8. VCC : cable d’ alimentació que prové de la placa de monitoritzacio per PC.
La distribució d’ aquests senyals en el connector es la següent:
VCCP1
DB9M
594837261
Deteccio de Trucada
Despenjar
Data In
Vcc 2
Gnd 2
Data Out
Figura 22. Distribució dels Senyals del Connector
Memòria descriptiva
35
2.3.3 Placa Interfície Telefònica
La part principal del disseny es basa en un circuit d’ aplicació del fabricant delcircuit integrat TEA 1061.
També te un petit circuit que s’ encarrega de detectar trucades i disposa d’ un reléper tal de connectar o desconnectar el circuit de la línia telefònica.
Solament hi ha una resistència variable R16, que serveix per modificar l’ amplituddel senyal de marcacio DTMF i del senyal sèrie que s’ envia, per tal d’ assegurar unamarcacio i transmissió correcta.
En aquesta figura es mostra l’ esquema de la placa:
VCC
VCC
VCC
Placa de Monitoritzacio(Maquina Dispensadora o PC)
R18120
12
C14220 nF
12
R1468 K
12
R1310
12
R12100 K
1 2
R93K9
12
R6470
12
C11100 pF
1 2
+
C8 4.7 uF
1 2
R8120 K
1 2
R19100 K
12
C7100 nF
1 2
R151K8
12
JP1
Linía Telefònica
12
+
C5 100 uF
1 2
R5150
1 2
R1710
12
R21820
12
C13220 nF
1 2
C6 2.2 nF1 2
C1610 nF
12
R2010
12
K1RELE
34
5
67
812
C151 nF
12
R11390
1 2
R221K8
12
R710 K
1 2
D31N4004
12
D410V
12
C10100 pF
1 2
C9220 nF
12
C4 2.2 nF1 2
R1647 K
13
2
Q1BDX53 2
1
3
R1010 K
12
- +
D2B250C1000
3
4
2
1
R412
12
JP2
Connector
12345678
R222 K
1 2
R139 K
1 2
C1470 nF
1 2
- +
D1B250C1000
3
4
2
1
R32K2
12
C2470 nF
1 2ISO1
CNY17
12
54
+
C347 uF
12
R2327 K
12
TEA 1061
Figura 23. Esquema de la Placa Interfície Telefònica
Memòria descriptiva
36
2.3.4 Placa d’ Entrades per la Maquina Dispensadora
El seu disseny es bassa en un comparador amb histèresi, on es pot ajustar tant latensió de referència com la histèresi.
Disposa de 12 entrades analògiques amb una impedancia d’ entrada de 10 K Ù iajust de la tensió de referència i de l’ histèresi. A cada entrada s’ ha col·locat unaresistència de 10 KΩ, perquè sinó es connecta, a la sortida de la placa hi hagi un nivellbaix.
El operacional escollit es el quàdruple LM 324, el qual pot funcionar correctamentamb una tensió simple de 5 V i es bastant barat.
Per a cada entrada es disposa de dues resistències variables per tal d’ ajustar latensió de referència i el valor de l’ histèresi. Per saber quines son les resistènciescorresponents s’ ha de mirar l’ esquema de la placa d’ entrades i el diagrama de distribucióde components.
En la següent figura es mostra l’ esquema d’ una secció:
VCC
VCC
IN0
R3722 K
1 2
R40470 K
12
3
R4610 K
12
3
+
-
U1D
LM324
12
1314
41
1
R4910 K
12
R43
10 K
1 2
Sortida 1
Entrada 1
Figura 24. Esquema d’ una Part de la Placa d’ Entrades
Memòria descriptiva
37
2.4 Programa ASM de la Placa de Monitoritzacio ( Maquina Dispensadora )
2.4.1 Funció del Programa
Les funcions principals del programa ASM es la de controlar el hardware de laplaca, generar el tons necessaris per a la marcacio DTMF, encarregar-se de la transmissióde dades sèrie i permetre l’ introducció de l’ identificador de la placa i el numero detelèfon.
2.4.2 Estructura General del Programa
Memòria descriptiva
38
Figura 25. Diagrama General del Programa ASM Maquines Dispensadores
Memòria descriptiva
39
2.4.3 Estructura de la Rutina de Comunicacions Sèrie
Figura 26. Estructura de la Rutina Sèrie
Memòria descriptiva
40
2.5 Programa ASM de la Placa de Monitoritzacio per PC ( Central )
2.5.1 Funció del Programa
Les funcions principals del programa ASM es la de vigilar si hi ha alguna trucada ohi ha alguna ordre de trucar que prové de l’ aplicació Gestió Remota i encarregar-se de lescomunicacions sèrie.
Memòria descriptiva
41
2.5.2 Estructura General del Programa
Figura 27. Diagrama General del Programa ASM Central
Memòria descriptiva
42
2.5.3 Estructura de la Rutina de Comunicacions Sèrie
Figura 28. Estructura de la Rutina Sèrie
Memòria descriptiva
43
2.6 Programa Visual Basic
2.6.1 Funció del Programa
El programa te dues funcions principals :
• Encarregar-se del hardware:
El programa s’ encarrega d’ inicialitzar la placa de monitoritzacio perPC, de realitzar enquestes a la mateixa per saber si hi ha alguna trucada ol’ estat de les comunicacions i per enviar l’ ordre de trucar quan s’ had’ interrogar alguna maquina dispensadora.
• Gestionar l’ informació necessària de les maquines dispensadores:
Les dades necessàries per realitzar les tasques de gestió s’ emmagatzemaen una base de dades Microsoft Access 2000. En aquesta base de dades esguarda l’ informació de cada maquina, es guarda la seva localització, el seunumero de telèfon, el seu identificador, el tipus de maquina que es i a quecorrespon cada una de les seves entrades.
El programa permet introduir noves maquines i nous tipus de maquina, editar lesseves dades o esborrar-les.
Per facilitar la posta en marxa del sistema, incorpora un mode especial anomenatMode Test. Aquest mode opera sense l’ informació continguda a la base de dades, per tantfunciona encara que estigui buida ( situació inicial ) , es molt senzill d’ utilitzar i facilita laconfiguració de les plaques de monitoritzacio.
Memòria descriptiva
44
2.6.2 Estructura global del programa
El programa esta basat en un timer el qual disposa d’ un període de 55 milisegons.Cada 55 milisegons, es realitza una lectura del Registre d’ Estat de la placa demonitoritzacio per PC per tal d’ esbrinar si hi ha alguna trucada o saber en quin estat estroba.
En la subrutina del timer es realitzen les crides a les subrutines que escriuen illegeixen de forma sincronitzada a la placa de monitoritzacio per PC.
La resta del programa respon als diferents events dels components que integrenl’ aplicació.
L’ aplicació mostra l’ informació rebuda en el quadre Dades Rebudes. Mostral’ hora d’ arribada de les dades, el tipus de maquina, l’ identificador, el seu estat i la sevalocalització.
En el quadre Ultimes Dades, es mostra l’ informació que s’ ha rebut de l’ ultimacomunicació realitzada tant si ha trucat la maquina, com si nosaltres la hem interrogat.
L’ aplicació disposa de menús, on es pot seleccionar obrir una nova base de dades,realitzar operacions amb la base de dades, configurar l’ aplicació, veure el fitxer Logd’ aquella sessió, veure les dades de l’ aplicació ( Versió del programa i autor ), minimitzarel programa en la barra de tasques de Windows o sortir del mateix.
Memòria descriptiva
45
2.7 Conclusions Finals
S’ ha obtingut un conjunt de plaques que permeten monitoritzar diversos tipus demaquines dispensadores o dispositius a traves de la línia telefònica. Aquest sistemasimplement implementa les funcions bàsiques de monitoritzacio o consulta d’ una formasenzilla. L’ us del sistema es bastant senzill un cop que s’ ha configurat. L’ aplicaciórealitzada amb Visual Basic funciona en les principals plataformes Windows i utilitza basede dades de Microsoft Accés, una aplicació que el seu us esta bastant estes ja que formapart de la suite ofimatica Microsoft Office.
La selecció del microcontrolador 80C31 ha limitat una mica el disseny ja que en elmercat hi ha altres opcions també molt econòmiques que haurien anat be, com elsmicrocontroladors PIC de la casa Microchip, però el fet de no tindré les eines dedesenvolupament adequades ha fet impossible la seva utilització.
Un aspecte que pot donar uns quants problemes, es de la configuració del sistema. Alintentar realitzar un sistema de baix cost, es va simplificar bastant els dissenys i això fa quela configuració sigui una mica mes complicada i costi una mica mes.
Les possibles millores que es podrien fer al sistema serien, fer que el sistema fosmolt mes fàcil de configurar, que només calgués instal·lar-lo i estes llest per funcionar.Una altra millora, seria l’ utilització de telèfons movils per tal de comunicar-se amb lacentral i així no dependre de les línies fixes de telèfon.
Per tal de que es compleixi un dels objectius que ens havíem proposat, el de realitzarun sistema de baix cost, els numero de targetes que s’ haurien de fabricar hauria de serbastant elevat per tal que es repartissin els costos de disseny. D’ aquesta forma el sistemaGestió Remota tindria un cost mes baix i tindria mes possibilitats de comercialització.
Manual d’ Usuari
46
3 MANUAL D’ USUARI
Manual d’ Usuari
47
3.1 Introducció
Aquest manual pretén servir com ajuda per tal d’ explicar com s’ ha d’ instal·lar elsistema, explicar el funcionament del programa Gestió Remota per Windows 9x/ME/NT i2000 a més de facilitar l’ ajust i posta en marxa de tot el sistema.
3.2 Requeriments del Sistema
Per tal d’ instal·lar la placa de monitoritzacio per PC i el seu software requereix almenys :
Per a l’ aplicació de Visual Basic es requereix el següent hardware i software :
• Microprocessador Pentium® 90MHz o superior.
• Pantalla VGA de 640x480 o de resolució superior compatible amb MicrosoftWindows.
• Windows 95 amb 32 MB RAM, Windows 98 / ME amb 64 MB RAM,Windows NT 4.0 o superior instal·lat, Windows 2000 amb 128 MB RAM.
• Quan s’ utilitzi Windows NT o Windows 2000 s’ ha de tindré privilegisadministratius per instal·lar el software i executar-lo.
• Unitat de CD-ROM per l’ instal·lació del software
A mes per instal·lar la placa de monitoritzacio per PC es requereix :
• Una ranura ISA disponible.
Manual d’ Usuari
48
CENTRAL
PC
3.3 Visió Global del Sistema
El sistema de Gestió Remota de maquines dispensadores disposarà dels següentsmòduls:
• Una placa de monitoritzacio per col·locar a cada maquina dispensadora.
• Una placa de monitoritzacio per PC per col·locar en la central.
• Una placa interfície telefònica per a la central i una altra per a cada maquinadispensadora.
• Una placa d’ entrades per cada maquina dispensadora.
L’ esquema general del sistema de Gestió Remota es el que es mostra a la següentfigura:
Figura 29. Esquema General del Sistema de Gestió Remota
Placa deMonitoritzacio
per PC
PlacaInterfície
Telefònica
Maquina Dispensadora 1
PlacaInterfície
Telefònica
Placa deMonitoritzacio
Placad’ Entrades
Líniatelefònica
Maquina Dispensadora 9999
PlacaInterfície
Telefònica
Placa deMonitoritzacio
Placad’ Entrades
Bus ISA
Programa GestióRemota 1.0
Manual d’ Usuari
49
Com es pot veure en el esquema general, a cada maquina s’ instal·la uns mòduls pertal que si falta algun producte es posi amb contacte amb la central. A traves de la líniatelefònica, es comuniquen els mòduls que hi ha a la maquina dispensadora amb els que hiha a la central i que estan connectats amb un PC. Cada cop que es genera una alarma, en elordinador que es troba a la central, es mostra l’ estat de la maquina dispensadora en elprograma per a Windows Gestió Remota 1.0. Des d’ aquest programa es pot interrogar unao mes maquines per saber en quin estat es troben.
Sense aquest sistema, el personal que s’ encarrega del manteniment de les maquines,ha de fer revisions periòdiques a totes elles. Hi haurà casos en que hi ha maquines quegairebé no els fa falta cap producte i haurà altres casos en que feia dies que una o mesmaquines s’ havien quedat sense algun producte.
Amb el sistema Gestió Remota, es pot saber quan falta un producte i llavors elstècnics solament hauran d’ anar aquelles maquines que els hi falta alguna cosa, estalviant-seel tenir que mirar totes les maquines i així es millora el servei, perquè es pot tornar a carregarles maquines que els hi falta alguna cosa de forma ràpida. D’ aquesta forma s’ evita alsclients de quedar-se sense el producte que volien perquè s’ ha esgotat i encara no hantornat a ficar.
Manual d’ Usuari
50
3.4 Instal·lació de les Plaques
3.4.1 Instal·lació de les Plaques que van a la Central
Hi ha dues plaques, la placa de monitoritzacio per PC que s’ ha d’ inserir en unaranura del bus ISA i l’ altra es la placa interfície telefònica que va a l’ exterior del PC.
Per tal d’ instal·lar les plaques, s’ han de seguir els següents passos:
1. Abans d’ instal·lar la placa de monitoritzacio per PC, s’ ha de decidir quinaadreça utilitzarà mitjançant els ponts Jp1 i Jp2. Per defecte utilitza l’ adreça330H. Es recomana utilitzar l’ adreça 300H, però si hi hagués algun conflicteamb algun altre dispositiu com una tarja de so o de xarxa, es pot provar acanviar l’ adreça per un altra. En la figura següent es pot veure comseleccionar l’ adreça de la placa de monitoritzacio per PC:
Adreça Ponts
300H
310H Jp1
320H Jp2
330H Jp1 i Jp2
Taula 1. Configuració de l’ Adreça de la Placa
2. Quan ja s’ ha seleccionat quina adreça utilitza la placa de monitoritzacio perPC, s’ insereix en una ranura del bus ISA, però tenint en compte que laresistència variable quedi accessible per tal de poder configurar-la després.
3. Amb el cable que te un connector DB9, s’ uneix la placa de monitoritzacioper PC amb la placa interfície telefònica que es troba a fora del PC. A l’ horade col·locar el connector de la placa interfície telefònica, s’ ha de tindré encompte que el cable de massa que es de diferent color, ha de coincidir ambl’ indicació GND que es pot veure en la figura 31.
4. A la regleta de la placa interfície telefònica, es connecta un cable de longitudadequada per connectar-la a la línia telefònica.
Manual d’ Usuari
51
5. Ara només queda configurar el guany del receptor de senyal, per tal de queles dades es rebin correctament.
En aquesta figura es pot veure la disposició dels components de les plaques:
Figura 30. Disposició de Components de la Placa de Monitoritzacio per PC
Resistència R44 queregula el guany del’ etapa receptora
Ponts JP1 i JP2per configurarl’ adreça de laplaca
Manual d’ Usuari
52
Figura 31. Disposició de Components de la Placa Interfície Telefònica
Resistència R16que regula elnivell de senyalque s’ injecta a lalínia telefònica
Manual d’ Usuari
53
3.4.2 Instal·lació de les Plaques que van a les Maquines Dispensadores
A cada maquina dispensadora s’ han d’ instal·lar tres plaques, la placa demonitoritzacio, la placa interfície telefònica i la placa d’ entrades. En la següent figura espot veure la distribució dels components en cadascuna de les tres plaques:
Figura 32. Serigrafia Components Placa de Monitoritzacio
Resistència R51 que regula el guanyde l’ etapa receptora
Resistència R3 que regulal’ histèresi del sistema debaix consum
Resistència R11del sistema debaix consum
Resistència R2 que modificala tensió d’ alimentació delscircuits i del µC
Display
Manual d’ Usuari
54
La serigrafia dels components de la placa interfície telefònica es pot veure enl’ apartat 3.4.1 figura 31.
En aquesta figura es pot veure la distribució del components en la placa d’ entrades:
Figura 33. Serigrafia Components Placa d’ Entrades
Per realitzar l’ instal·lació de les plaques, s’ han de seguir els següents punts:
1. Primer es connecta la placa de monitoritzacio amb la placa interfícietelefònica amb el cable que te un connector de 6 terminals i un altre de 8terminals. A l’ hora de col·locar els connectors, s’ ha de tindré en compte queel cable de massa que es de diferent color, ha de coincidir amb l’ indicacióGND que es pot veure en les figures 31 i 32.
2. A la regleta de la placa interfície telefònica, es connecta el cable amb elconnector telefònic, per tal de connectar-la a la línia telefònica.
3. Per tal d’ unir la placa principal amb el mòdul d’ entrades, s’ utilitza el cableamb els connectors de 14 terminals. Aquí també s’ ha de tindré en compte al’ hora de col·locar els connectors, que la posició del cable de massa ha decoincidir amb l’ indicació GND que es pot veure en les figures 32 i 33
Manual d’ Usuari
55
4. Per tal d’ alimentar a les plaques, es requereix una tensió compresa entre 9 i20 V la qual no es necessari que estigui estabilitzada. Aquesta tensiós’ agafarà de la maquina dispensadora si es possible o en cas contrari faràfalta una font d’ alimentació. La tensió d’ alimentació es connecta a la regletaon fica Alimentació i per últim a la regleta que diu Bateria, es connecta duespiles R6 de 1.5 V per tal de mantenir les dades que hi ha en la memòria si esprodueix un tall de corrent. Si les dades s’ han programat a la memòriaEPROM, no farà cap falta les piles.
5. A l’ hora de col·locar les plaques a la maquina dispensadora, s’ ha de tindréen compte que els polsadors, el display set segments i les diferentsresistències variables quedin accessibles per tal de realitzar l’ ajust delconjunt i la programació del identificador de la placa i el numero de telèfonde la central. Si l’ identificador i el numero de telèfon es troba a la memòriaEPROM, no farà falta introduir-los.
Manual d’ Usuari
56
3.5 Configuració del Hardware
3.5.1 Configuració de les Plaques que van a la Central
Cal col·locar o ajustar les resistències variables de les dues plaques a la meitat delseu recorregut per començar a fer les proves.
La resistència variable que es troba a la placa de monitoritzacio per PC ( R44 ),s’ encarrega de determinar el guany de l’ etapa receptora que rep el senyal de la placainterfície telefònica.
La resistència variable de la placa interfície telefònica ( R16 ) determina el nivell delsenyal que s’ injecta a la línia telefònica.
3.5.2 Configuració de les Plaques que van a les Maquines Dispensadores
3.5.2.1 Configuració de la Placa de Monitoritzacio
Cal ajustar les quatre resistències variables que té seguint els següents passos:
1. El que s’ ha de fer primer, un cop que s’ ha alimentat a la placa, es ajustar laresistència variable R2 per tal que la tensió d’ alimentació del circuit i delMicrocontrolador sigui de 5V. La tensió d’ alimentació es pot mesurar atraves de la regleta que té el nom VCC.
2. Seguidament s’ ajusta les resistències variables del sistema de control delmode de baix consum del microcontrolador. De forma que si la tensió dereferència baixa per sota dels 2.175 V ( es refereix a una tensió d’ alimentaciódels circuits d’ uns 3.75 V ), el microcontrolador passa al mode de baixapotencia. Per passar al mode normal, s’ ha de fer un Reset almicrocontrolador, això passa quan la tensió de referència puja per sobre dels2.425 V ( tensió d’ alimentació d’ uns 4.25 V ). Per aconseguir aquells valorsde tensió, s’ ha de jugar amb la tensió de referència i l’ histèresi delcomparador. S’ ajusta la resistència variable de l’ histèresi perquè sigui d’ uns0.25 V, desprès s’ ajusta l’ altra resistència variable per obtindré una tensió dereferència de 2.3 V. Així aquest sistema ja es troba configurat.
Manual d’ Usuari
57
3. Per últim queda la resistència que determina el guany de l’ etapa receptora, laqual es col·loca a la meitat del seu recorregut com a valor inicial abans derealitzar les proves de comunicació.
3.5.2.2 Configuració de la Placa Interfície Telefònica
A la placa interfície telefònica, solament s’ ha de col·locar la resistència variable ala meitat del seu recorregut com a valor inicial. Mes tard s’ acabarà de configurar.
3.5.2.3 Configuració de la Placa d’ Entrades
Per ajustar la placa d’ entrades, s’ utilitza una font d’ alimentació variable perdeterminar a quina tensió l’ entrada s’ activa. També s’ ajusta l’ histèresi del comparador.Per a la majoria dels casos es recomana una histèresi petita. Si es té una histèresi petita,llavors es comporta gairebé com un comparador normal.
Primer s’ ajusta l’ histèresi, ja que si s’ ajustes primer la tensió de referència, almodificar després l’ histèresi es tornaria a modificar el nivell de tensió que activa al’ entrada. Com s’ ha dit abans amb una petita histèresi ja ni hi ha prou per la majoria delscasos, llavors s’ ajusta la resistència variable que regula l’ histèresi, girant-la en sentit deles agulles del rellotge fins que no es pugui mes per tindré l’ histèresi mínima.
Després s’ ajusta la tensió de la font d’ alimentació, a la tensió que ha d’ activarl’ entrada, llavors es mou la resistència variable que proporciona la tensió de referència alcomparador fins que la sortida passi de 0 a 1. Amb l’ histèresi, es determina quant haurà debaixar la tensió per tal que la sortida torni a ser un nivell lògic baix.
Manual d’ Usuari
58
Per saber quina resistència variable correspon a cada entrada i si determina la tensióde referència o l’ histèresi, s’ ha de mirar en l’ esquema de distribució de components i a lasegüent taula:
Entrada Resistència Tensió Referència Resistència Histèresi
1 R46 R40
2 R34 R28
3 R22 R16
4 R10 R4
5 R47 R41
6 R35 R29
7 R23 R17
8 R11 R5
9 R48 R42
10 R36 R30
11 R24 R18
12 R12 R6
Taula 2. Descripció de les Resistències Variables
3.5.2.4 Introducció de les Dades a la Memòria del Microcontrolador
Aquí es pot diferenciar dues situacions:
1. Que l’ identificador de la placa i el numero de telèfon de la central es guardina la memòria RAM del microcontrolador. Aquest cas, es la situació normal.
2. Que l’ identificador de la placa i el numero de telèfon de la central estiguingravats en la memòria de programa EPROM. Per fer això s’ ha d’ afegir unesquantes línies al programa ASM, tornar-lo a enssamblar i programar lamemòria EPROM.
Manual d’ Usuari
59
En el primer cas s’ ha d’ introduir les dades mitjançant els polsadors. Hi ha 3 polsadors:
1. Polsador de Reset: realitza el Reset de tota la placa de monitoritzacio.
2. Polsador P1: si es pitja just desprès de fer un Reset o abans de que hagin passat 4segons, serveix per seleccionar que es vol introduir el numero de telèfon. Quan jas’ ha decidit que es el que s’ ha d’ introduir, llavors aquest polsador serveix perincrementar la xifra que es visualitza en el display set segments.
3. Polsador P2: si es pitja just desprès de fer un Reset o abans de que hagin passat 4segons, serveix per seleccionar que es vol introduir l’ identificador. Desprès realitzala funció de validar la xifra que es visualitza al display set segments, guarda la xifraen memòria i inicialitza el display per tal de poder introduir un altra xifra.
L’ identificador de la placa o de la maquina dispensadora, es una xifra de 4 dígitscompresa entre 1 i 9999. Els quatre dígits son obligatoris encara que siguin zeros.
Com a exemple, per introduir l’ identificador 0010, es realitza un Reset i justamentdesprés es pitja el Polsador P2. Així s’ indica que es vol introduir l’ identificador, llavorsper introduir el numero zero ( que es el valor que hi ha per defecte al començar o desprésde validar una xifra ) solament s’ ha de pitjar el Polsador P2 per validar i guardar la xifraen memòria. Per introduir un altre zero es torna a pitjar el Polsador P2 per validar. Perintroduir el numero 1 es pitja el Polsador P1 per incrementar la xifra del display en unaunitat i després es pitja el Polsador P2 per validar. Per introduir el últim zero, solaments’ ha de pitjar un altre cop el Polsador P2 i d’ aquesta forma ja s’ ha introduï tl’ identificador 0010.
Quan s’ ha introduï t l’ identificador, la placa visualitza de forma seqüencial en eldisplay l’ identificador i desprès el numero de telèfon.
Per introduir el numero de telèfon, s’ ha de realitzar un Reset i tot seguit es pitja elPolsador P1 per seleccionar que s’ introdueix el numero de telèfon. D’ aquesta forma eldisplay ens mostra un zero, llavors pitjant el Polsador P1 s’ incrementa la xifra fins ques’ obté la que es vol. Amb el Polsador P1, la xifra es pot incrementar fins arribar a 10 idesprés torna a començar des de 0, però quan la xifra val 10, en el display no es visualitzares. Quan ja tenim la primera xifra, llavors es pitja el Polsador P2 per tal de validar iguardar-la. Tot això es repeteix fins que s’ hagi introduï t totes les xifres i llavors per tald’ indicar que ja s’ ha acabat, s’ introdueix el numero 10 per indicar el final del numero detelèfon. Això es realitza perquè es considera que el numero de xifres del telèfon es variableencara que gairebé sempre son 9 xifres.
Un cop realitzada la configuració de les tres plaques, tot esta preparat per realitzarla posta en marxa del sistema.
Manual d’ Usuari
60
3.6 Instal·lació del Software
Es col·loca el CD-ROM en la unitat i llavors el programa d’ instal·lació comença aexecutar-se, a no ser que estigui deshabilitada la reproducció automàtica de CD-ROM dedades. En aquest cas s’ haurà d’ executar el fitxer setup.exe.
Durant l’ instal·lació, es possible que el programa d’ instal·lació vulgui reinicialitzarel PC per tal de poder actualitzar algunes llibreries, accepteu i desprès torneu a executarsetup.exe i aquesta vegada si tot va be l’ instal·lació haurà finalitzat amb èxit.
3.7 Configuració del Software
Un cop s’ ha configurat el hardware, llavors a les opcions del programa s’ ha deseleccionar l’ adreça que utilitza la placa de monitoritzacio per PC.
Les altres opcions no cal modificar-les, ja que els valors per defecte ja serveixen.
Manual d’ Usuari
61
3.8 Posta en Marxa del Sistema
Quan ja s’ ha realitzat la configuració inicial de totes les plaques, s’ ha instal·lat iconfigurat el programa Gestió Remota, ja es pot començar la posta en marxa del sistema.
Per tal de realitzar la configuració de tot el sistema, idealment es necessiten duespersones:
• Una que estigui a la central per tal de configurar la placa de monitoritzacioper PC.
• Un altra que s’ encarregui de configurar la placa de monitoritzacio d’ una deles maquina dispensadores.
Després de configurar la placa de monitoritzacio per PC, solament farà falta unapersona que s’ encarregui de configurar o verificar cada una de les plaques instal·lades enles diferents maquines dispensadores.
Primer de tot, s’ ajustaran les plaques interfície telefònica, per tal de que realitzin lamarcacio del numero de telèfon de forma correcta. Els passos a seguir per configurar-lesson els següents:
1. Per configurar la placa que hi ha en la central, primer s’ activa el programaGestió Remota realitzant Doble-click sobre la icona que hi ha en la barra detasques i després s’ activa el mode Test. Per activar aquest mode, s’ had’ anar al menú Opcions i activar l’ opció Mode Test necessària per fer lesproves. Aleshores es pitja el boto Test i apareix una finestra que demana unnumero de telèfon. Aquest numero pot ser el d’ un telèfon movil que tingui oel d’ un altre telèfon que sigui a prop per tal de verificar de forma ràpida queel sistema de marcacio funciona correctament.
2. Si la prova falla, llavors el que s’ ha de fer es modificar el valor de laresistència variable de la placa interfície telefònica. Primer es prova girant laresistència una mica en sentit contrari a les agulles del rellotge i es torna a ferla prova de marcacio, d’ aquesta forma s’ incrementa el nivell de la senyalque s’ introdueix a la línia telefònica.
Manual d’ Usuari
62
3. Si la prova tornes a fallar, es torna a provar el mateix fins que s’ arribi almàxim o la prova funcioni i en aquest cas la placa interfície telefònica estariaconfigurada. Si per contra arriba al màxim i encara no funciona, llavors caltornar a ficar la resistència variable al seu valor inicial es a dir a la meitat delseu recorregut i en aquest cas es gira la resistència variable una mica en sentitcontrari del que s’ havia fet abans. D’ aquesta forma es redueix el nivell delsenyal que s’ introdueix a la línia telefònica. Tot això s’ ha de fer fins quefuncioni el sistema de marcacio. Si fen tot això encara no funciona, s’ hauràde comprovar que la placa interfície telefònica estigui ben connectada amb laplaca de monitoritzacio per a PC i amb la línia telefònica.
Quan s’ acabat la configuració de la placa interfície telefònica de la central, espassa a configurar una altra placa interfície telefònica que es troba col·locada en una de lesmaquines dispensadores.
Per fer això, s’ introdueix mitjançant els polsadors el numero de telèfon ques’ utilitzarà per fer les proves. Després s’ activa una de les entrades per tal que la placa demonitoritzacio realitzi una trucada. Un cop fet això es procedirà com en el cas anterior i sino funciona s’ anirà modificant el valor de la resistència variable R16 fins que la marcaciosigui correcta.
Si les dades estan guardades a la memòria EPROM i el numero que s’ utilitza perfer les proves de marcacio es diferent al que te gravat, llavors per introduir el numero detelèfon es farà com s’ ha explicat abans amb els polsadors.
Si estem en els cas en que l’ identificador i el numero de telèfon estan gravats a lamemòria EPROM, per evitar haver d’ introduir el numero de telèfon de prova amb elspolsadors cada cop que es realitza un Reset a la placa de monitoritzacio, llavors abans defer el Reset s’ ha de pitjar i mantenir els polsadors P1 i P2 fins que s’ ha realitzat el Reset.Així s’ evita que es torni a carregar el numero de telèfon que hi ha gravat en la EPROM.
Desprès de comprovar que la placa interfície telefònica que hi ha a la maquinadispensadora funciona correctament i esta ajustada, llavors s’ han de restablir els valors delidentificador de la placa i el numero de telèfon de la central. Per fer ho s’ haurà de fer elsegüent:
• Si estem en el cas per defecte en que les dades no es guarden a la memòriaEPROM, llavors mitjançant els polsadors s’ introduirà l’ identificador i elnumero de telèfon corresponent.
• Si en canvi si que te les dades guardades a la memòria EPROM, llavors enaquest cas solament s’ ha de realitzar el Reset de la placa de monitoritzacioper a que carregui en la memòria del microcontrolador els valors que hi ha enla EPROM.
Manual d’ Usuari
63
Un cop que s’ han restablert els valors de l’ identificador i telèfon, es recomanableverificar que l’ identificador i el numero de telèfon siguin els correctes. Fent un Reset de laplaca de monitoritzacio fa que mostri de forma seqüencial l’ identificador ( xifra de 4 dígits )i desprès el telèfon que pot ser de longitud variable.
Quan ja s’ ha verificat el funcionament de les plaques interfície telefònica i la placade monitoritzacio de la maquina dispensadora te les dades correctes, llavors ja es potpassar a finalitzar la configuració de les plaques de monitoritzacio.
La configuració de les plaques de monitoritzacio consisteix en ajustar el guany del’ etapa receptora modificant el valor d’ una resistència variable ( R51 en la maquinadispensadora o R44 en la central ).
Inicialment les resistències variables de les plaques de monitoritzacio es troben a lameitat del seu recorregut. Per incrementar el guany de l’ etapa de recepció, s’ ha de girar laresistència variable en el sentit de les agulles del rellotge i per reduir-lo es gira en el sentitcontrari.
Si la recepció no es correcta s’ incrementa de mica en mica el guany de l’ etapareceptora de la placa corresponent fins que estigui configurada o s’ arribi al màxim. Siencara no esta configurada, es torna a posar la resistència variable a la meitat del seurecorregut i en aquest cas es reduirà el guany de l’ etapa receptora per si la senyal estiguesdistorsionada a causa de la saturació. Això s’ anirà repetint fins que s’ aconsegueixiconfigurar-la o s’ arribi al mínim, en aquest cas s’ haurà de revisar les connexions de totesles plaques tant a la maquina dispensadora com a la central i la connexió amb la líniatelefònica.
Per configurar la placa de monitoritzacio de la maquina dispensadora es seguiran elssegüents passos:
1. Assegurar-se que l’ ordinador de la central esta encès, amb la placa interfícietelefònica connectada a la línia i el programa Gestió Remota esta activat i estroba en Mode Test.
2. On hi ha la maquina dispensadora, s’ activa una de les entrades per fer que laplaca de monitoritzacio realitzi una trucada a la central.
Manual d’ Usuari
64
3. S’ ha de controlar l’ estat del display de la placa de monitoritzacio. Pot haverquatre casos:
• Si en el display es mostra la xifra 0, això vol dir que la comunicaciós’ ha realitzat de forma correcta tal com esta configurada. Per seguretat,es torna a repetir la prova diverses vegades i si els resultats son correcteses passa a configurar la placa de monitoritzacio per PC. En el cascontrari es modifica el guany de l’ etapa receptora i es torna a provarper tal d’ obtindré en tots els casos la xifra 0.
• Si en el diplay es mostra un 1, això indica que no rep les dades de formacorrecta i per tal de corregir-ho es modifica el guany de l’ etapareceptora i es segueix provant fins que s’ obtingui un 0 o un 2.
• Si es mostra un 2 en el display, això significa que s’ ha produï t un erroren la comunicació via sèrie. Indica que la placa de monitoritzacio que hiha a la maquina dispensadora ha rebut les dades però en canvi la placaque hi ha a la central no ha rebut les dades correctament. En aquest cas,es torna a repetir la prova unes quantes vegades i si el resultatssegueixen sent un 2, llavors vol dir que la placa que hi ha a la maquinadispensadora es troba configurada. Si en canvi sortís algun 1, esprocedirà com en el cas en que es mostra un 1 al display.
• Si en el display no es mostra res, això indica que la placa demonitoritzacio no ha rebut l’ impuls de sincronització. Per solucionar-hos’ ha d’ incrementar el guany de l’ etapa receptora i tornar a provar-hofins que surti alguna xifra. Després es procedirà segons la xifra que hagisortit. Si s’ ha incrementat el guany fins al màxim i no ha sortit capxifra, llavors s’ haurà de comprovar les connexions de les plaques i laconnexió amb la línia telefònica.
Quan ja s’ ha configurat la placa de monitoritzacio de la maquina dispensadora, espassa a comprovar el funcionament de la placa de monitoritzacio per PC que hi ha a lacentral.
Per configurar la placa de monitoritzacio per PC, el que s’ ha de fer es interrogar unamaquina en que la placa interfície telefònica ha estat configurada. S’ interroga a lamaquina i es fixa en el missatge que surt en el quadre Estat. Si la placa esta correctamentconfigurada, ha d’ haver sortit el missatge “Connexió correcta” i desprès “Recepció dedades” i s’ ha d’ haver visualitzat en el quadre Dades Rebudes l’ informació de la maquinadispensadora que s’ estava interrogant.
Manual d’ Usuari
65
Si en canvi es visualitza el missatge “Error de Connexió” o “Error sèrie”, vol dir queno ha rebut les dades de forma correcta, llavors s’ ha de girar la resistència variable R44 dela placa de monitoritzacio per PC en el sentit de les agulles del rellotge per tald’ incrementar el guany de l’ etapa receptora. Desprès es torna a provar fins ques’ aconsegueixi configurar, en cas contrari, es col·loca la resistència variable a la meitatdel seu recorregut i es gira en la direcció contraria . Si amb tot això no funciona, s’ hauràde verificar les connexions entre les plaques.
Pot haver un cas en que es mostra el missatge “Connexió correcta” i desprès“Recepció de dades” però no es visualitza res en el quadre Dades Rebudes, això significaque hi ha un problema de comunicació entre la placa de monitoritzacio per PC il’ aplicació. Per solucionar-ho, cal anar a opcions i incrementar el valor de l’ opcióDelay E/S ( valor compres entre 1 i 99 ) fins que funcioni.
Quan ja s’ ha configurat la placa de monitoritzacio per PC, solament quedaconfigurar tal com s’ ha explicat abans les altres plaques de monitoritzacio que estaninstal·lades en diferents maquines dispensadores.
Per últim, des de la central, es recomanable interrogar a totes les maquinesdispensadores per comprovar que tot funciona correctament.
Manual d’ Usuari
66
3.8.1 Quadre Resum de la Configuració de la Placa de Monitoritzacio:
Indicació del display Situació en que ens trobem Possibles solucions
No es mostra res La placa no rep cap senyal Comprovar les connexions de lesdiferents plaques i si estan be,incrementar el guany de l’ etapareceptora fent girar una mica laresistència R51 en el sentit de lesagulles del rellotge
Es mostra un 1 La placa rep algun senyal,però no rep les dades de formacorrecta
En aquest cas, proveu també aincrementar el guany de l’ etapareceptora
Es mostra un 2 La placa rep correctament,però la placa que hi ha a lacentral no rep les dades
En aquest cas, la placa ja es trobaconfigurada i s’ ha de passar aconfigurar la placa que hi ha a lacentral.
Es mostra un 0 El sistema esta configurat No cal fer res mes
Taula 3. Quadre Resum de la Configuració de la Placa de Monitoritzacio
Manual d’ Usuari
67
3.8.2 Quadre Resum de la Configuració de la Placa de Monitoritzacio per PC:
Quadre Estat Situació en que ens trobem Possibles solucions
Error de connexió La placa no rep cap senyal Comprovar les connexions deles diferents plaques i si estanbe, incrementar el guany del’ etapa receptora fent giraruna mica la resistència R44 enel sentit de les agulles delrellotge
Error sèrie La placa rep algun senyal,però no rep les dades deforma correcta
En aquest cas, proveu també aincrementar el guany de l’ etapareceptora
Connexió correcta, peròno es mostra res en elquadre Dades Rebudes
La placa rep correctament,però falla la comunicacióentre la placa i l’ aplicacióGestió Remota
En aquest cas, s’ incrementa elvalor de Delay E/S en opcions
Connexió correcta El sistema esta configurat No cal fer res mes
Taula 4. Quadre Resum de la Configuració de la Placa de Monitoritzacio per PC
Manual d’ Usuari
68
3.9 Descripció de l’ us del Software
Aquest programa permet rebre dades de maquines dispensadores, interrogar una omes maquines i gestionar l’ informació de la base de dades.
3.9.1 Explicació de l’ Interfície del Programa
El programa Gestió Remota esta format principalment per tres quadres, un quemostra l’ ultima informació rebuda, un altre que mostra totes les dades rebudes per ordred’ arribada i un que mostra l’ estat de l’ aplicació. A mes disposa de diferents menús i undiversos botons. En la següent figura es pot veure una imatge del programa:
Figura 34. Aplicació Gestió Remota
Icona delprograma
Formulariprincipal
Barra detasques deWindows
Manual d’ Usuari
69
3.9.1.1 Descripció dels Menús
En l’ aplicació hi ha cinc menús, els quals son:
1. Arxiu: esta format per dos submenus. Aquests son:
• Obrir Base de Dades: mostra el quadre de diàleg obrir base de dades ones pot seleccionar el fitxer que conte l’ informació de les maquinesdispensadores.
• Sortir: oculta el formulari principal però no tanca l’ aplicació.
2. Base de Dades: conte les opcions bàsiques per introduir informació a la base dedades. Aquest menú esta format per dos submenus:
• Maquines: mostra un formulari on es pot introduir les dades d’ unamaquina dispensadora. També permet editar i esborrar l’ informació deles maquines.
• Tipus Maquina: mostra un formulari on es pot introduir les dades d’ untipus de maquina. També permet editar i esborrar l’ informació del tipusde maquina.
3. Opcions: mostra diverses opcions que permeten configurar l’ aplicació. Estaformat per tres submenus:
• Iniciar Minimitzat: si esta activada aquesta opció, l’ aplicació s’ iniciaminimitzada en la barra de tasques mostrant una icona.
• Mode Test: si esta activada aquesta opció, el programa mostra un nouboto anomenat Test. Aquest boto permet interrogar maquinessimplement introduint el seu numero de telèfon encara que no hi hagicap informació a la base de dades. També s’ encarrega de configurar laplaca de monitoritzacio per PC en Mode Test. Aquest mode realitza unpetits canvis en la rutina de comunicacions sèrie de la placa.
• Opcions: mostra un formulari on es poden configurar diversosparàmetres de l’ aplicació. Es pot seleccionar l’ adreça que utilitza laplaca de monitoritzacio per PC, el Delay E/S i la base de dades ques’ utilitza per defecte.
Manual d’ Usuari
70
4. Log: mostra diverses opcions relacionades amb el fitxer on es guarda elssuccessos que han passat en aquella sessió. Esta format per dos submenus:
• Veure Log: mostra el fitxer Log.txt amb el programa Notepad deWindows.
• Mode Log: quan esta activada aquesta opció, deshabilita uns quantsmissatges que requereixen l’ atenció per part de l’ usuari i fa que elsmissatges es guardin en el fitxer de Log d’ aquella sessió. Si aquestmode no es troba activat i es produeix algun missatge, si l’ usuari norespon al mateix, llavors l’ aplicació es queda en aquell punt detingudaesperant la confirmació per part de l’ usuari.
5. Ajuda: esta format pel submenu Sobre l’ Aplicació, que mostra un formulari ones pot veure el logotip de l’ ETSE, el títol del projecte, el director i l’ autor.
Manual d’ Usuari
71
3.9.1.2 Funcionament del Programa
Quan s’ instal·la el programa, es crea un accés directe en el grup de programes Inici,el qual permet que l’ aplicació Gestió Remota 1.0 es carregui cada vegada que arrancaWindows. El programa per defecte s’ inicia minimitzat en la barra de tasques de Windowson es mostra una icona.
Per poder veure el formulari principal de l’ aplicació, s’ ha de pitjar el boto dret delratolí sobre l’ icona del programa que es troba en la barra de tasques. Aleshores apareix unmenú on es selecciona l’ opció Mostrar Gestió Remota. També es pot fer el mateix fentDoble-click sobre l’ icona del programa Gestió Remota. D’ aquesta forma el formulariprincipal ja es visible i es pot començar a realitzar operacions amb la base de dades( introduir o modificar dades ) o consultar l’ estat d’ una o mes maquines dispensadores.
Si es pitja el boto tancar del formulari principal o es pitgen les tecles Alt+F4, no essortirà de l’ aplicació sinó que simplement el formulari principal s’ ocultarà.
Per sortir de l’ aplicació, s’ ha de pitjar el boto dret del ratolí sobre l’ icona delprograma i seleccionar l’ opció Sortir Programa del menú que ha aparegut.
El programa Gestió Remota solament permet que hi hagi una instància activa, es adir no es pot executar dos o mes programes Gestió Remota a la vegada. Això es realitza perque solament un programa accedeixi a la placa monitoritzacio per PC i evitar que aquestapugui deixar de funcionar correctament.
En el quadre Estat, es mostra alguns missatges que indiquen com ha anat lacomunicació telefònica. Pot indicar error de connexió quan l’ altra maquina no ha resposten el temps prefixat o pot indicar error sèrie quan no s’ han rebut les dades de formacorrecta. També pot mostrar informació sobre el driver, indicant que no s’ ha pogut obrir.Si el driver no s’ ha inicialitzat correctament, l’ aplicació Gestió Remota no podrà rebre resni interrogar cap maquina i solament podrà realitzar operacions amb la base de dades.
Quan ja es té introduï t almenys un tipus de maquina i també com a mínim unamaquina, llavors ja s’ esta preparats per interrogar o rebre dades de les maquinesintroduï des a la base de dades. Si s’ ha oblidat d’ introduir alguna maquina a la base dedades, llavors no es pot interrogar i si es rep alguna transmissió d’ ella, apareix un missatgeindicant que l’ identificador no es troba a la base de dades i no es mostra cap mesinformació.
Manual d’ Usuari
72
Per rebre les dades de les maquines que es monitoritzen, s’ ha de tindré l’ aplicaciófuncionant, ja que sinó, la placa de monitoritzacio per PC rebrà l’ informació però desprèses quedarà esperant de forma indefinida a poder transmetre les dades a l’ aplicació, enaquest estat ja no podrà rebre cap mes informació fins que s’ activi l’ aplicació i aquesta escomuniqui amb la placa de monitoritzacio per PC.
Un cop explicat les opcions de l’ aplicació, passarem a explicar com realitzaroperacions amb la base de dades, com funciona quan rep alguna comunicació o quans’ interroga alguna maquina dispensadora.
Manual d’ Usuari
73
3.9.2 Com Realitzar Operacions amb la Base de Dades
Primer s’ explicarà com esta organitzada la base de dades i el format d’ aquesta.
L’ aplicació Gestió Remota utilitza una base de dades Microsoft Access 2000, encaraque també suporta versions mes antigues. L’ aplicació es distribueix amb dues base dedades buides. Una es Microsoft Access 2000 i l’ altra es Microsoft Access 97.
Les dades de les maquines dispensadores i del tipus de maquina també es podenintroduir directament des de Microsoft Access 2000 o des de Microsoft Access 97.
Per evitar duplicar certa informació, la base de dades esta organitzada en dues taules.En la primera es guarda l’ informació de la maquina dispensadora i en la segona es guardal’ informació referent al tipus de maquina.
Una taula es una col·lecció de dades sobre un tema específic, com productes oproveï dors. La utilització d’ una taula diferent per cada tema significa que s’ emmagatzemenles dades solament una cop, lo qual fa augmentar l’ eficàcia de la base de dades, i redueixerrors d’ entrada de dades.
Les taules organitzen dades en columnes (denominades camps) i files (denominadesregistres).
Un camp comú relaciona dues taules de manera que la primera pugui accedir ainformació de la segona de forma senzilla.
L’ informació de les maquines dispensadores que es guarda a la taula 1 de la base dedades es la següent:
1. Identificador: xifra compresa entre 1 i 9999 que serveix per diferenciar a cadamaquina dispensadora. S’ utilitza com a índex d’ aquesta taula i no es potrepetir.
2. Tipus Maquina: nom que s’ assigna a un determinada classe de maquines.Aquest camp es comú a les dues taules i serveix per accedir a la segona taula dela base de dades.
3. Situació: on es troba la maquina dispensadora.
4. Telèfon: numero de telèfon que te la maquina dispensadora.
Manual d’ Usuari
74
L’ informació sobre el tipus de maquina que es guarda a la taula 2 de la base dedades es la següent:
1. Tipus Maquina: nom que s’ assigna a una determinada classe de maquines.Aquest camp serveix com a índex de la segona taula i permet a la primeraaccedir a les descripcions de les entrades.
2. Descripció de les entrades: indica que representa cada entrada, es pot assignarun producte o event a cada una d’ elles.
Manual d’ Usuari
75
3.9.2.1 Introducció d’ Informació a la Base de Dades
Abans d’ introduir qualsevol informació d’ una maquina dispensadora, l’ aplicaciórequereix que hi hagi al menys un tipus de maquina en la base de dades. Per això, el primerque s’ ha de fer a l’ hora d’ introduir dades, es ficar l’ informació d’ un tipus de maquina.
3.9.2.1.1 Introducció d’ un Tipus de Maquina a la Base de Dades
Per introduir el tipus de maquina, el que s’ ha de fer es anar al menú de Base deDades, llavors es desplega un submenu i d’ allí s’ escull l’ opció Tipus de Maquina. Uncop fet això ens sortirà un formulari on es pot introduir el nom del tipus de maquina i unadescripció per a cada entrada. En la següent figura es pot veure el formulari per introduir eltipus de maquina:
Figura 35. Formulari Tipus de Maquina
Manual d’ Usuari
76
Per afegir un tipus, es pitja el boto Afegir i s’ introdueix les dades corresponents.S’ ha d’ introduir el nom del tipus de maquina i la descripció de les entrades ques’ utilitzen.
Quan ja s’ ha introduï t les dades, si son correctes i les volem guardar a la base dedades, es pitja el boto Confirmar.
El nom del tipus de maquina ha de ser únic i en el cas que es volgués introduir unnom que ja es troba a la base de dades, l’ aplicació mostrarà un missatge indicant que hi haun índex repetit. En aquest cas només cal canviar el nom del tipus de maquina i tornar apitjar el boto Confirmar. Si no es volgués introduir el nou tipus, solament s’ ha de pitjarqualsevol boto excepte el de Confirmar.
Per exemple si es pitgés el boto acceptar, es tornaria al formulari principal però nohauria guardat les dades a la base de dades.
Amb els botons Primer, Anterior, Següent i Últim, es pot desplaçar per els diferentstipus de maquina que hi ha guardats a la base de dades per ordre d’ introducció.
3.9.2.1.2 Edició d’ un Tipus de Maquina
Per editar un tipus de maquina, primer s’ ha de situar en ell i es pitja el boto Editar.Llavors es realitza les correccions adients i si es vol guardar els canvis, es pitja el botoConfirmar i sinó qualsevol altre.
3.9.2.1.3 Esborrar un Tipus de Maquina
Per esborrar un tipus de maquina, simplement s’ ha de situar en ell i pitjar el botoEsborrar. L’ aplicació donarà un missatge d’ error si en la primera taula hi ha algunregistre ( maquina ) que tingui com a tipus de maquina el que es vol esborrar. D’ aquestaforma s’ evita esborrar un tipus de maquina que encara esta en us.
3.9.2.1.4 Introducció de l’ informació d’ una Maquina
Quan ja s’ ha introduï t com a mínim un tipus de maquina, ja es pot introduirl’ informació d’ una maquina. Per fer això, anirem al menú de Base de Dades, es desplegaun submenu i d’ allí s’ escull l’ opció Maquines. Llavors apareix un formulari amb quatrecamps, els quals s’ han d’ omplir tots de forma obligatòria. Si es deixa algun camp buit,apareix un missatge indicant que hi ha algun camp incorrecte.
Manual d’ Usuari
77
En la següent figura es pot veure el formulari per introduir les dades de les maquines:
Figura 36. Formulari Maquines
Per afegir una maquina, es fa com s’ introduíssim un tipus de maquina, es a dir espitja el boto Afegir, llavors s’ introdueix les dades als seus camps corresponents i desprèses pitja el boto Confirmar per guardar-les i sinó qualsevol altre per no guardar res.
Si s’ introdueix un identificador no vàlid, llavors apareix un missatge indicant que“L’ identificador es incorrecte”. Però si es vol introduir un identificador que ja es troba a labase de dades, apareix un missatge indicant que hi ha algun índex duplicat.
Per introduir el Tipus maquina, només s’ ha d’ escollir un mitjançant el ComboBoxque hi ha en el formulari.
Sobre el camp Situació, solament es mira que no estigui buit i no es realitza capcomprovació mes.
El camp Telèfon, perquè es consideri correcte, ha de tenir mes de dues xifres i had’ estar escrit tot seguit sense cap espai ni guio ni cap altre separador, ja que sinó apareix elmissatge que indica que hi ha algun camp incorrecte.
Manual d’ Usuari
78
3.9.2.1.5 Edició de l’ informació d’ una Maquina
Per editar l’ informació d’ una maquina, solament cal pitjar el boto Editar i realitzarles correccions adients. Després si es vol guardar els canvis, es pitja el boto Confirmar i enel cas contrari qualsevol altre.
3.9.2.1.6 Esborrar l’ informació d’ una Maquina
Per esborrar l’ informació de la maquina que es visualitza, simplement s’ ha de pitjarel boto Esborrar.
Manual d’ Usuari
79
3.9.3 Com Comprovar si ha Trucat Alguna Maquina
Si ha trucat alguna maquina, l’ informació es visualitza tant en el quadre UltimesDades com en el quadre Dades Rebudes. En aquest últim quadre es guarden les dades deles comunicacions que s’ han rebut en aquella sessió en l’ ordre d’ arribada. Quan hi hames de 10 entrades en el quadre de Dades Rebudes, llavors apareix una barra de scroll quepermet desplaçar-se per tal de mostrar totes les dades. En el quadre Ultimes dades, esmostra algunes dades de l’ ultima comunicació.
Si es pitja el boto Mostrar Detalls que hi ha en el formulari principal, apareix un nouformulari. En aquest formulari es mostra totes les dades de l’ ultima comunicació rebuda ode la comunicació que s’ ha seleccionat en el quadre Dades Rebudes amb el ratolí fen clickamb el boto esquerre sobre la fila d’ aquella comunicació.
Manual d’ Usuari
80
3.9.4 Com Interrogar a una o mes Maquines
Per interrogar una o mes maquines, s’ ha de pitjar el boto Interrogar Maquines delformulari principal, llavors apareix un altre formulari sempre i quan la base de dades no estrobi buida. Si no hi hagués cap informació, aleshores es mostra un missatge indicant que“No hi ha cap registre a la base de dades”.
En aquesta figura es pot veure el formulari Interrogar Maquines:
Figura 37. Formulari Interrogar Maquines
Manual d’ Usuari
81
En aquest formulari, es pot realitzar quatre tipus de consultes:
1. Consulta basada en l’ Identificador: es pot introduir un o diversos identificadorsseparats per comes o intervals d’ identificadors en ordre creixent separats per unguio. Si s’ introdueix alguna expressió incorrecta o algun identificadorincorrecte, apareix el missatge de sintaxis incorrecta. Els valors separats percomes, a part de ser identificadors vàlids, han d’ estar ordenats de formacreixent, ja que sinó ho considera com a error. Es poden barrejar l’ us dediversos identificadors separats per comes i l’ us d’ intervals separats per unguio. Si es repeteix un identificador, ho considerarà un error i mostra elmissatge sintaxis incorrecta. Aquí hi ha alguns exemples :
Exemples Sintaxis Comentari
1 Correcta Introduï m simplement un identificador
1,5,7 Correcta Introduï m diversos Identificadors separatsamb comes
10-20 Correcta Interval ordenat de forma creixent
21-30,32 Correcta Conjunt d’ un interval amb un identificadorseparat amb una coma
0 Incorrecta Identificador no vàlid ha d’ estar compresentre 1 i 9999
4,3 Incorrecta Conjunt d’ identificadors ordenats de formadecreixent
23-21 Incorrecta Interval ordenat de forma decreixent
6, Incorrecta Com hi ha una coma s’ espera un altreidentificador
7- Incorrecta Com hi ha un guio s’ espera un altreidentificador per tal d’ expressar un interval
Taula 5. Exemples d’ Identificadors
2. Consulta basada en el Tipus de maquina: aquí solament s’ haurà de seleccionarel tipus de maquina que interessa del ComboBox.
3. Consulta basada en la Situació de la maquina: aquí s’ ha d’escriure el lloc on estroba la maquina o maquines que ens interessa interrogar.
4. Consulta basada en el numero de Telèfon: aquí solament s’ ha d’ escriure elnumero de telèfon el qual ha de tindré mes de dues xifres i s’ ha d’ escriure totseguit i sense cap mena de separador.
Manual d’ Usuari
82
Un cop feta la consulta, els resultats es mostren al quadre Maquines Seleccionades desota. Si la consulta ha trobat alguna maquina, llavors habilita el boto Interrogar Maquinesd’ aquest formulari. Si es pitja aquest boto, l’ aplicació interroga a totes les maquines quees troben en el quadre Maquines Seleccionades de forma seqüencial.
Quan es pitja el boto Interrogar Maquines, apareix un altre formulari el qual conteuna barra que indica el progrés de les interrogacions i un boto que permet cancel·lar lesinterrogacions pendents, però no la que s’ esta fen en aquell moment.
Si es vol interrogar la maquina dispensadora que té l’ identificador 1000, llavorss’ ha d’ escriure el numero 1000 en el quadre on fica identificador. Desprès es pitja el botoque conte una icona amb forma de lupa per tal de fer la consulta a la base de dades. Si lamaquina amb l’ identificador 1000 es troba a la base de dades, es mostra les seves dades alquadre de sota i llavors s’ habilita el boto Interrogar Maquines. Es pitja aquest boto iapareix un altre formulari indicant que s’ esta fent la consulta de la maquina ambl’ identificador 1000. També es pot veure la barra que indica el progrés de lescomunicacions i el boto Cancel·lar que en aquest cas no serveix per res ja que noméscancel·la les interrogacions pendents.
Memòria de Càlcul
83
4 Memòria de Càlcul
Memòria de Càlcul
84
4.1 Placa de Monitoritzacio ( Maquina Dispensadora )
4.1.1 Circuit del Regulador de Tensió
Serveix per estabilitzar la tensió del circuit i compensar la caiguda de tensió delsdiodes del sistema d’ alimentació d’ emergència.
VCC
C13100 nF1
2
R1
220
1 2
JP3
BATERIA
12
JP6
VCC
12
+ C121000 uF
12
R2500
13
2
R22330
12
C14100 nF
12
D21N4148
12
JP4
VCC_MICRO
12
D11N4148
1 2
D31N4004
12
C17100 nF1
2
U1LM317
VIN3
AD
J1
VOUT2
+ C161000 uF
12
+ C151000 uF
12
JP5
ALIMENTACIO
12
Tensio de Referencia
Vcc Micro
Figura 38. Esquema del Regulador de Tensió
A la sortida del regulador es vol tindré una tensió màxima de 6 V, ja que si li restemla caiguda de tensió que provoca el diode ( uns 0.7 V ), llavors s’ obtindrà uns 5.3 V que esuna mica mes de la tensió que necessita el circuit però que no li pot provocar cap dany.Desprès amb la resistència variable R2 es pot ajustar la tensió de sortida per a que la tensiódel circuit i del microcontrolador sigui de 5 V.
+
+⋅=1
222125.1
RRR
Vsortida ( 1 )
S’ agafa com a valor de la resistència variable R2 500 Ω i després es calcula el valorde la resistència R22 per a obtindré una tensió de sortida en el regulador de 6V.
Memòria de Càlcul
85
Com a valor de R1, s’ agafa un valor típic que es de 220 Ω.
Ω≈−⋅
−
= 3305002201
25.16
22R ( 2 )
Per tal que el regulador de tensió LM 317 funcioni correctament i pugui dissipar totala calor que genera, es necessari instal·lar-li un dissipador de Rth 4K/W.
Memòria de Càlcul
86
4.1.2 Circuit de Control del Mode de Baix Consum del µµC
4.1.2.1 Càlcul de l’ Histèresi del Comparador
Figura 39. Esquema d’ un Comparador amb Histèresi
El comparador amb histèresi de la figura 39, es pot representar de la següent forma:
Figura 40. Model d’ un Comparador amb Histèresi
Del model anterior s’ obté les següents formules:
( ) 1221
2VVoutVoutV
RRR
Vi −+−⋅+
= ( 3 )
Memòria de Càlcul
87
En aquest circuit existeixen dues zones de funcionament:
1. Zona de saturació negativa, caracteritzada per:
Vout ≈ 0 Vi < 0
2. Zona de saturació positiva, caracteritzada per:
Vout ≈ Vcc Vi > 0
Llavors per calcular l’ histèresi del circuit, s’ ha de calcular les tensions de llindar enles dues zones de funcionament. Les tensions de llindar s’ aconsegueixen quan la tensióVi = 0, llavors s’ aplica les característiques de cada zona de funcionament.
( ) 01221
2=−+−⋅
+VVoutVoutV
RRR
( 4 )
( ) VoutR
RRVoutVV +
+
⋅−=2
2112 ( 5 )
Ω=⋅Ω
=⋅= KVV
KVcc
VHR
R 2055.2
1071 ( 6 )
Càlcul de la tensió de llindar quan ens trobem a la zona 1:
Vout ≈ 0
( )2
1)21(2
011211
RVRR
RRVRR
VL⋅+
=⋅−⋅+
= ( 7 )
Càlcul de la tensió de llindar quan ens trobem a la zona 2:
Vout ≈ Vcc
( )2
11212
RVccRVRR
VL⋅−⋅+
= ( 8 )
Memòria de Càlcul
88
Aleshores el valor de l’ histèresi, es el següent:
( )Vcc
RR
RVccRVRR
RVRR
VLVLVH ⋅=
⋅−⋅+
−⋅+
=−=21
21121
21)21(
21 ( 9 )
4.1.2.2 Càlcul de la Polarització del Diode Zener
VCC
VCC
VCC
R4120
12
R81 K
1 2
R1910 K
12
R610 K
12
R111 K
13
2
D63V3
12
R3 470K13
2
+
- U7LM311
2
37
5 64 1
8
R510 K
1 2 Tensió de Referencia
Sortida Comparador
Figura 41. Esquema de Polarització del Diode Zener
La tensió de referència del comparador amb histèresi, s’ ha estabilitzat amb un diodeZener, per evitar que li afectin petites baixades de tensió del regulador. Ja que aquestcircuit ha de detectar el mes aviat possible quan la tensió d’ alimentació baixa per sota dela tensió mínima que suporten els diversos circuits integrats i el microcontrolador.
S’ ha agafat com a valor de la resistència variable R11 1 KΩ.
Si es considera que el corrent que absorbeix el amplificador operacional es nul·la,llavors el corrent que circula per la resistència variable R11 es de:
mAR
VZenerIR 3.3
1111 == ( 10 )
Memòria de Càlcul
89
Després es selecciona el corrent de polarització del diode Zener que serà de 10 mA illavors amb la següent formula es pot calcular la resistència de polarització R4:
Ω≈+−
=+
−= 120
3.3103.35
114
mAmAIRIzenerVZenerVcc
R ( 11 )
4.1.2.3 Càlcul de la Xarxa de Retard
R12100 K
1 2
C23220 nF
12
U13A
4093
1
23
D51N4148
12
EntradaSortida
Figura 42. Esquema de la xarxa de retard
A la sortida del comparador amb histèresi, es col·loca una xarxa de retard per evitarque es realitzi el Reset del microcontrolador abans que s’ hagi restaurat completament latensió d’ alimentació quan el microcontrolador es trobava en mode de baix consum per talde mantenir les dades de la seva memòria RAM.
S’ ha escollit un temps de retard d’ uns 20 ms i com a valor de R12 s’ agafat100 KΩ.
T = R12·C23 à C23 = T/R12 = 20 ms/100 KΩ ≈ 220 nF (12 )
Memòria de Càlcul
90
4.1.2.4 Càlcul de la Durada del Reset del Microcontrolador
VCC VCCVCC
R9100 K
12
SW3
RESET
12
U13B
4093
5
64
R1010 K
12
C21220 nF
1 2
D41N4148 1
2
ResetEntrada
Figura 43. Esquema del circuit de Reset
El fabricant recomana un temps de 10 ms per tal que permeti al oscil·lador internarrancar i estabilitzar-se. S’ ha optat per implementar un circuit amb una constant de tempsel doble ( 20 ms ), per tal d’ assegurar-se que el Reset es realitzi de forma correcta. Com avalor de R9 s’ ha escollit 100 KΩ i llavors s’ ha calculat el valor de C21:
τ = R9 · C21 à C21 = τ / R9 = 10 ms / 100 KΩ ≈ 220 nF ( 13 )
Memòria de Càlcul
91
4.1.3 Circuit de l’ Amplificador Sumador
VCC
R4310 K
12C36
470 nF1 2
C2015 nF
1 2
R3010 K
1 2
R4210 K
1 2
R4410 K
1 2
R2510 K
1 2
R1710 K
1 2
R384K7
12
C3533 nF
12
R2422 K
12
R4510 K
1 2
C2510 nF
1 2
C27470 nF
1 2
R2710 K
1 2
C34470 nF
12
R286K8
1 2
R1310 K
1 2
C296.8 nF
1 2
R710 K
1 2
C22470 nF
1 2
C2610 nF
1 2
C32470 nF
1 2
+
- U8DLM324
12
1314
+
- U8BLM324
5
67
+
- U8ALM324
3
21
+
- U8CLM324
10
98
Entrada 1
Entrada 2
Entrada Senyal Modulada
Sortida
Figura 44. Esquema del circuit Amplificador Sumador
Abans d’ arribar al amplificador sumador s’ han col·locat tres filtres passa-baix,encara que al ficar els condensadors per desacoblar la continua, tinguin un comportamentde filtre passa-banda. Cada un d’ ells te la seva pròpia freqüència de tall.
El circuit format per l’ amplificador operacional U8A, ha de tindré una freqüència detall de 1000 Hz per tal que puguin passar perfectament senyals de 941 Hz que s’ utilitzenper realitzar la marcacio DTMF.
El circuit format per l’ amplificador operacional U8B, ha de tindré una freqüència detall de 1500 Hz per tal que puguin passar perfectament senyals de 1477 Hz.
Memòria de Càlcul
92
El circuit format per l’ amplificador operacional U8D, ha de tindré una freqüència detall de 2400 Hz per tal que puguin passar perfectament la senyal portadora.
Els tres presenten un guany unitari.
La formula per calcular la freqüència de tall d’ un filtre passa-baix de primer ordre esla següent:
CRf
⋅⋅⋅=
π21
( 14 )
S’ agafa com a valor de la resistència 10 KΩ i després es calcula el condensador ambla formula 14.
fRC
⋅⋅⋅=
π21
( 15 )
Càlcul del condensador del operacional U8A:
Ω=⋅Ω
=⋅= KVV
KVcc
VHR
R 2055.2
1071 ( 16 )
Càlcul del condensador del operacional U8B:
nFHzKfR
C 101500102
1252
125 ≈
⋅Ω⋅⋅=
⋅⋅⋅=
ππ( 17 )
Càlcul del condensador del operacional U8D:
nFHzKfR
C 8.62400102
1422
129 ≈
⋅Ω⋅⋅=
⋅⋅⋅=
ππ( 18 )
Memòria de Càlcul
93
Càlcul del condensador del operacional U8D:
nFHzKfR
C 1024008.62
1282
126 ≈
⋅Ω⋅⋅=
⋅⋅⋅=
ππ( 19 )
Després l’ amplificador sumador realitzat amb el amplificador operacional U8C,s’ ha calculat perquè realitzi una petita atenuació i també actua com a filtre passa-baix ambuna freqüència de tall de 2400 Hz. Aquesta es la freqüència de tall mes gran de les tresetapes anteriors, per tal que les tres senyals passin correctament.
A la sortida de l’ amplificador sumador, se ha connectat un altre filtre passa-baix deprimer ordre amb una freqüència de tall de 2400 Hz.
Càlcul del condensador del filtre connectat a la sortida de l’ amplificador sumador:
S’ ha escollit 4K7 com a valor de la resistència R38 i llavors es calcula elcondensador C35:
nFHzKfR
C 1524007.42
1382
135 ≈
⋅Ω⋅⋅=
⋅⋅⋅=
ππ( 20 )
Per a que els operacionals puguin treballar amb una tensió simple, s’ han depolaritzar les seves entrades no inversores amb una tensió que normalment es la meitat dela tensió d’ alimentació. En aquest cas, degut al marge de tensió de sortida que té eloperacional LM 324 que va des de 0 a uns 3 V, s’ ha polaritzat a uns 1.5 V per tald’ obtenir el màxim de senyal sense distorsió per saturació de la sortida .
Memòria de Càlcul
94
4.1.4 Circuit Modulador
C3122 nF
12
R48
10 K
1 2
R4633 K
1 2
U11D
4093
12
13
11 U11B
4093
5
64
C3033 nF
12U11A
4093
1
23
PE
Sortida Modulador
TXD
Figura 45. Esquema del Circuit Modulador
4.1.4.1 Càlcul de la freqüència del multivibrador
La freqüència d’ aquest multivibrador depèn molt de l’ histèresi de la porta NANDtrigger Schmitt. Variacions d’ aquesta histèresi pot provocar variacions de freqüènciaimportant.
Per calcular la freqüència, s’ ha d’ esbrinar el temps que triga la tensió en anar d’ unatensió llindar a l’ altra i viceversa.
El primer cicle del multivibrador te una duració bastant mes llarga ja que elcondensador es troba descarregat.
La tensió del condensador oscil·larà entre els valors de les tensions llindar.
Amb la següent formula es pot saber quan temps triga un xarxa RC en obtenir un certnivell de tensió:
CRt
eVInicialVFinalVFinalV ⋅−
⋅−−= )( ( 21)
Memòria de Càlcul
95
El primer semiperiode del senyal quadrat que obtenim a la sortida, serà igual altemps que triga el condensador en passar de la tensió de llindar inferior ( VLi ) a la tensióllindar superior ( VLs ). L’ altre semiperiode, serà igual al temps que triga en passar de latensió VLs a la tensió VLi.
De forma experimental s’ ha obtingut els valors de les tensions llindar d’ una portaCMOS NAND trigger Schmitt:
VLi ≈ 2.30 V
VLs ≈ 2.80 V
Per a fer els càlculs es considera que la constant de temps RC es igual a 1.
Llavors el primer semiperiode T1, serà igual a:
teVLiVccVccVLs −⋅−−= )( ( 22 )
te−⋅−−= )30.25(580.2 ( 23)
815.07.22.2
=−−
=−te ( 24)
( ) 205.0815.0 −==− LNt ( 25)
T1 = t = 0.205 segons
El segon semiperiode T2, serà igual a:
te−⋅−−= )80.20(030.2 ( 26)
821.080.230.2
==−te ( 27)
( ) 197.0821.0 −==− LNt (28 )
Memòria de Càlcul
96
T1 = t = 0.197 segons
Ara es pot calcular el període del senyal que s’ obté:
T = T1 + T2 = 0.205+0.197 = 0.402 segons à F = 1/T = 2.491 Hz (29 )
Aquest resultat es per una constant de temps RC = 1, llavors, si s’ expressa lafreqüència obtinguda en funció de la constant de temps RC, obtenim:
F = 2.491 / R·C ( 30)
D’ aquesta forma, la formula per calcular la freqüència d’ aquest multivibrador es lasegüent:
F = 2.491/ R46·C31 ( 31)
Si R46 es igual a 33 KΩ i volem obtindré una freqüència de 2400 Hz, llavors elcondensador C31 valdrà:
C31 = 2.491/ R46·F = 2.491 / 33 KΩ · 2400 Hz ≈ 33 nF ( 32 )
A la practica, amb el valor C31 de 33 nF, el multivibrador donava una freqüènciabastant mes baixa que 2400 Hz, i es va canviar el seu valor per 22 nF.
Memòria de Càlcul
97
4.1.4.2 Càlcul del filtre passa-baix
Aquest filtre s’ ha calculat per atenuar la senyal i disminuir els harmònics. La sevafreqüència de tall es de 400 Hz.
La senyal digital del multivibrador s’ ha de reduir per evitar que saturi a la etapasumadora, i en comptes d’ utilitzar un divisor de tensió i després filtrar, el que s’ ha fet esreduir la freqüència de tall del filtre passa-baix perquè atenuí la senyal a mes delsharmònics.
S’ ha es collit com a valor de la resistència R36, 10 KΩ i després es calcula el valordel condensador C32 amb la formula següent:
nFHzKfR
C 33400102
1362
132 ≈
⋅Ω⋅⋅=
⋅⋅⋅=
ππ( 33 )
4.1.5 Circuit Demodulador
VCC
D71N4148
1 2
U13D4093
12
13
11
R472M2
12
U11C4093
891
0
C33220 pF
12
R5210 K
1 2
U13C4093
891
0
Sortida Demodulador
Entrada Demodulador
Figura 46. Esquema del Circuit Demodulador
Memòria de Càlcul
98
Aquest circuit esta basat en una bàscula monoestable com el de la figura següent:
VCC
12
1311
C33220 pF
12
8
910
R472M2
12
Entrada BasculaSortida Bascula
Figura 47. Esquema de la Bàscula Monoestable
Per tal d’ implementar el demodulador, la bàscula monoestable, ha de serredisparable. Però la bàscula que hi ha en la figura 47 no ho es, llavors es va realitzar unapetita modificació al circuit perquè ho fos.
En una bàscula monoestable no redisparable, la sortida solament pot estar activadurant un temps igual a la constant RC, encara que rebés mes impulsos. Aquestcomportament no permet implementar un demodulador d’ amplitud.
En canvi, una bàscula monoestable redisparable, si que permet integrar els senyals dela portadora i en canvi deixa passar l’ informació amb que ha estat modulada en amplitud.
La sortida de la bàscula monoestable es troba a nivell baix mentre el condensador escarrega, aquest temps es igual a R·C. En el disseny de la figura anterior, un cop que elcondensador es comença a carregar, no hi ha cap forma de fer que s’ aturi i la sortida estaràa nivell baix mentre es carregui. Però fins que no es descarregui, no funcionarà de formanormal, aquest comportament no es el correcte per fer un demodulador d’ amplitud. Ambla modificació que s’ ha fet, encara que s’ estigui carregant el condensador, si rep un nouimpuls a la seva entrada, provoca la descarrega del condensador i llavors la sortida estarà anivell baix durant un temps R47·C33 desprès d’ haver rebut el nou impuls. En canvi laversió original, encara que rebés el nou impuls, la sortida hauria de passar a nivell alt perforça, per descarregar el condensador i així preparar-se per rebre un nou impuls.
El diode D7 te la missió de deixar passar solament la tensió negativa, per evitar quela positiva a traves de la resistència R52 de 10 KΩ, carregues mes ràpid el condensador ifes que la sortida estigui a nivell baix durant un temps R52·C33, quan ho hauria d’ estar untemps R47·C33.
Memòria de Càlcul
99
La resistència R52, te la funció de limitar el corrent que prové de la porta NANDU11C, per evitar pics de corrent quan es descarrega el condensador C33.
La constant de temps R47·C33 ha de ser igual o superior al període de la senyalportadora, però ha de ser inferior al període de la senyal que modula a la portadora.
El període de la senyal portadora es de :
msHz
T 641.02400
1== ( 34 )
Llavors, agafant com a període T = 0.5 ms i el valor de R47 com 2M2, es passa acalcular el condensador C33:
pFM
msRT
C 22022
5.047
33 ≈== ( 35 )
4.2 Placa de Monitoritzacio per PC
4.2.1 Amplificador Sumador
VCC
R4610 K
12
R396K8
12
ISO1CNY17
12
54
R3810 K
12
C24470 nF
1 2 R261 K
1 2
C27470 nF1 2
Entrada
Sortida
Gnd 2
Vcc 2
Figura 48. Esquema del Circuit Optoacoplador
Memòria de Càlcul
100
4.2.1.1 Càlcul de la Polarització dels Optoacopladors
El Led del optoacoplador, es polaritza amb un corrent bastant petit, d’ aquesta formala tensió col·lector emissor del Fototransistor es queda gran part de la tensió. ElFototransistor esta connectat amb una configuració emissor comú on s’ ha connectar unaresistència al emissor per evitar que es saturi.
S’ ha determinat experimentalment que un corrent de 0.5 mA per polaritzar al Led,dona bons resultats.
La senyal procedent de l’ amplificador sumador es injectat a traves d’ una resistènciade valor 1 KΩ i un condensador per desacoblar la tensió continua, modulant la lluminositatdel Led.
La modulació d’ amplitud de l’ intensitat lluminosa del Led, provoca variacions en latensió col·lector-emissor del fototransistor i la senyal passa a la placa interfície telefònica.
Memòria de Càlcul
101
4.2.2 Circuit de Recepció del Senyal Telefònic
VCC
ISO2
CNY17
12
54
R4310 K
12
C301 uF
12
R4710 K
12
R344K7
1 2
R301 K
1 2
C25470 nF1 2
Data In
Vcc 2
Gnd 2
Etapa Amplificadora
Figura 49. Esquema del Circuit Optoacoplador
4.2.2.1 Càlcul de la Polarització dels Optoacopladors
El circuit TEA 1061, extrau l’ alimentació de la línia telefònica i l’ estabilitza,obtenint una tensió d’ uns 3.4 V. Aquesta es la tensió que s’ utilitza per polaritzar al Leddel optoacoplador.
El Led del optoacoplador, es polaritza amb un corrent petit, d’ aquesta forma latensió col·lector emissor del Fototransistor es queda gran part de la tensió. El Fototransistoresta connectat amb una configuració emissor comú on s’ ha connectat una resistència alemissor per evitar que es saturi.
El nivell de tensió que s’ obté a la sortida del optoacoplador, depèn bastant delcorrent de polaritzacio, quan mes gran es el corrent de polaritzacio, menys tensió s’ obté ala sortida. Per això es polaritza al Led amb un corrent d’ uns 0.5 mA.
La senyal procedent del circuit telefònic TEA 1061 es injectat a traves d’ unaresistència de valor 1 KΩ i un condensador per desacoblar la tensió continua, modulant lalluminositat del Led.
Memòria de Càlcul
102
La modulació d’ amplitud de l’ intensitat lluminosa del Led, provoca variacions en latensió col·lector-emissor del fototransistor i la senyal passa a la placa de monitoritzacio perPC.
D’ aquesta forma encara que hi hagi diferencies de tensió entre la massa de la fontcommutada de l’ ordinador i la massa de la línia telefònica, la placa interfície telefònica i laplaca de monitoritzacio per PC, es troben aï llades pels optoacopladors i no afecta alfuncionament de les dues plaques.
Memòria de Càlcul
103
4.3 Placa Interfície Telefònica
4.3.1 Càlcul del Circuit Detector de Trucades
VCC
R139 K
1 2
ISO1
CNY17
12
54
- +
D1B250C1000
3
4
2
1
R2
22 K
12
+
C347 uF
12
C2470 nF
1 2 R32K2
12
C1470 nF
1 2
Detecció de Trucada
L1
L2
Figura 50. Esquema del Circuit Detector de Trucades
La senyal de trucada es caracteritza per ràfegues de senyals sinusoï dals amb unaamplitud de 100 V aproximadament ( pic a pic ) i la seva freqüència es de 50 Hz. Té unaduració de 1.7 s, seguits per una pausa de 3.3 s.
Com la senyal de trucada es alterna i per evitar la tensió continua que es present a lalínia, s’ han ficat dos condensadors en sèrie a les entrades del pont de diodes. D’ aquestamanera es rectifica el senyal de la trucada i s’ obté una tensió continua d’ uns 100 V. Ambl’ ajuda d’ un divisor de tensió format per les resistències R1 i R3, es redueix la tensió finsal 1.2 V que necessita el optoacoplador per activar-se. Amb el condensador C3 es filtra unmica aquesta tensió.
Càlcul de R1 i R3:
Per R3 es farà passar un corrent de 0.5 mA i tenint en compte que la tensió del Leddel optoacoplador es d’ uns 1.2 V, R3 valdrà:
Ω≈== 22005.02.1
33
mAV
IRVLed
R ( 36 )
Després si el Led del optoacoplador absorbeix 2 mA, el valor de R1 valdrà:
Ω≈=+
−= K
mAV
ILedIRVLedctificadaV
R 395.2
8.983
Re1 ( 37 )
Memòria de Càlcul
104
4.3.2 Circuit de Control del Relé
VCC
D31N4004
12
K1RELE
34
5
67
812
JP1
Linía Telefònica
12
R1010 K
12Q1BDX53 2
13
Despenjar
L1
L3
L4
L2
Figura 51. Esquema del Circuit de Control del Relé
Com les sortides del microcontrolador no suporten massa corrent, es va escollir peractivar el relé un transistor darlington amb un guany de corrent mínim de 750.
El relé consumeix uns 0.1 A
L’ intensitat de base serà igual a:
mAAIc
Ib 13.0750
1.0===
β( 38 )
Llavors es calcula la resistència R10 de polarització de la base per a que passi duesvegades Ib per tal d’ assegurar-nos que el transistor treballi en saturació.
Ω=−
=−
= 1425031.0
2.1510
mA
VVIb
VbeVccR ( 39 )
Per mes seguretat, s’ agafa 10KΩ com a valor de R10.
Memòria de Càlcul
105
4.4 Placa d’ Entrades
4.4.1 Càlcul del Comparador amb Histèresi
VCC
VCC
IN0+
-
U1D
LM324
12
1314
41
1
R40470 K
12
3
R3722 K
1 2
R4610 K
12
3
R43
10 K
1 2
R4910 K
12
Sortida 1
Entrada 1
Figura 52. Esquema d’ un dels Comparador amb Histèresi
Per calcular l’ histèresi, s’ utilitza la següent formula ( formula numero 9 ) que s’ hacalculat anteriorment:
VccRR
RVH ⋅
+=
403743
( 40 )
Es pretén aconseguir que l’ histèresi es pugui modificar entre 2.5 V i 0.1 V.
S’ agafa com a valor de R43 10 KΩ i llavors es calcula la resistència R37 i laresistència variable R40 per aconseguir el marge de valors de histèresi seleccionats.
El valor d’ histèresi de 2.5 V, s’ obtindrà quan la resistència variable R40 sigui 0,llavors la formula queda de la següent manera:
VccRR
VH ⋅=3743
( 41 )
Ω=⋅Ω
=⋅= KVV
KVcc
VHR
R 2055.2
104337 ( 42 )
Memòria de Càlcul
106
Llavors com a valor de R37, s’ agafa la resistència immediatament superior a 20 KΩ,que es 22 KΩ.
Ara es calcula la resistència variable R40:
Ω≈Ω−⋅Ω
=−⋅= KKVV
KRVcc
VHR
R 4702251.0
1037
4340 ( 43 )
Memòria de Càlcul
107
4.5 Programació
4.5.1 Subrutina de Marcacio DTMF
Aquesta subrutina genera els dos tons necessaris per realitzar la marcacio d’ unnumero de telèfon.
La marcacio consisteix en generar el parell de tons corresponent a cada xifra quecomposa el numero de telèfon. La duració d’ aquests tons es d’ uns 130 ms i després decada xifra es realitza una pausa que també dura un 130 ms.
El valor típic de la duració dels tons i de la pausa es de 100 ms, però degut a que espretenia obtenir la màxima de freqüència de mostreig possible per generar el tons, no es vapoder realitzar l’ inicialitzacio del timer per aconseguir els 100 ms de duració.
Es va dissenyar una rutina que cada 26 uS, envia les dades al conversors R-2R de 3bits per tal de generar els tons.
A la memòria de programa, es guarda les mostres dels diferents tons. S’ han obtingutal mostrejar un període de la senyal a una freqüència 1/26 uS. També es guarda una taulade 10 posicions, una per cada xifra, que serveix per accedir a les mostres corresponents ique també conte el numero de mostres que te cada freqüència.
Amb l’ informació que hi ha en la taula, la subrutina DTMF que rep com a paràmetrela xifra, accedeix a les mostres corresponents i de forma cíclica les envia als conversorsD/A fins que no ha passat els 130 ms. Quan ja ha passat aquest temps es genera la pausaamb la mateixa duració i llavors es torna a repetir tot el procés fins que s’ arriba alindicador de final del numero de telèfon ( valor 0AH ).
Per obtenir el temps d’ uns 130 ms, s’ utilitza el timer 0 que funciona en mode 1, es adir funciona com un timer de 16 bits. Carregant els registres del timer amb zeros, s’ obtéun temps de 65536 uS i després realitzant dos cicles s’ obté el temps que dura els tons i lapausa.
Memòria de Càlcul
108
4.5.2 Comunicació Sèrie
La comunicació de dades via sèrie es realitza a 128 bps ( 1 bit de Start, 8 bits dedades, un bit de Stop i sense paritat ) i s’ utilitza la modulació per amplitud amb unaportadora d’ uns 2400Hz.
Si no s’ utilitzes cap mena de modulació a l’ hora d’ enviar les dades a traves de lalínia telefònica, degut al soroll o paràsits que hi ha, les dades quedarien molt afectades i al’ hora d’ interpretar-les hi haurien molts errors.
Per determinar la freqüència de la portadora, degut al ample de banda o limitacionsde freqüència que te la línia telefònica ( 400 – 3400 Hz ) s’ ha escollit la freqüència de2400 Hz.
S’ ha escollit la velocitat de 128 bps, perquè havia de ser bastant mes petita que lafreqüència de la senyal portadora i a mes les dades que s’ han d’ enviar son molt poques iamb aquesta velocitat ja ni hi ha prou.
La subrutina que s’ encarrega de les comunicacions, envia les dades en forma detrames. De trames hi ha de dos tipus:
• Les trames de dades tenen una longitud de 8 bytes i estan organitzades de lasegüent forma:
§ El primer byte conte el Header o capçalera, el qual indica el tipus detrama que es i per tant la longitud de la mateixa.
§ El segon byte, es el numero de trama, el qual es molt útil per detectarsi t’ ha arribat la trama que esperaves.
§ El tercer i el quart byte, contenen el valor del identificador.
§ El cinquè i sisè byte, contenen els valors de les entrades. Els primersquatre bits no s’utilitzen ja que solament es tenen 12 entrades.
§ Els dos últims bytes contenen el crc de 16 bits de la resta de bytes.D’ aquesta forma es sap amb seguretat si una trama s’ ha rebutcorrectament o no.
Memòria de Càlcul
109
• Les trames de ACK te una longitud de 5 bytes i estan organitzades de lasegüent forma:
§ El primer byte també conte el Header o capçalera.
§ El segon byte es el numero de trama.
§ El tercer, conte un camp de control, el qual esta reservat per possiblesampliacions del protocol de comunicacions.
§ Els dos últims bytes contenen el crc de 16 bits de la resta de bytes.
Plànols
110
5 Plànols
Plànols
111
5.1 Esquemes
5.1.1 Placa de Monitoritzacio
VCC
VCC
+ C151000 uF
12
+ C161000 uF
12
U1LM317
VIN3
AD
J1
VOUT2
D31N4004
12
D11N4148
1 2
D21N4148
12
R2500
13
2
R1220
1 2
+ C121000 uF
12
JP6
VCC
12
C13100 nF1
2
C14100 nF
12
R22330
12
C17100 nF
12
C5
100 nF
12
C6
100 nF
12
C7
100 nF
12
C8
100 nF
12
C9
100 nF
12
C10
100 nF
12
C11
100 nF
12
C4
100 nF
12
C2
100 nF
12
C3
100 nF
12
C1
100 nF
12
JP5
ALIMENTACIO
12
JP3
BATERIA12
JP4
VCC_MICRO12
Vcc Micro
Tensió de Referència
VCCVCCVCC
VCC
VCCVCC
P3_2
D51N4148
12
R111 K
13
2
R4120
12
R510 K
12
R910 K
12
R81 K
12
R610 K
12
R3 470K13
2
R1910 K
12
D41N4148 1
2
+
- U7LM311
2
37
5 64 1
8
C23220 nF
12
D63V3
12
R12100 K
1 2
C21220 nF
1 2
SW3
RESET
12
R1010 K
12
U13A
4093
1
23
U13B
4093
5
64
Tensió de Referència
Reset
P3.2
Plànols
112
VCC
VCC
VCC
VCC VCC
VCC
VCC
VCC
A7A6A7
A4A5
A1
A4
A2
A0 A0
A3
A6
A3
A5
A1A2
P2_0
P2_2P2_3
P2_1
P2_2
P2_3
P2_0
P2_1
P2_5
P2_0
P2_6
P2_3
P2_2
P2_4
P2_7
P2_6
P2_4
P2_5
P2_1
IN1IN2
IN6IN5
IN7
IN3IN4
IN0
P0_0
P0_5
P0_2
P0_6
P0_3
P0_5
P3_2
P0_2
P3_4
P0_0
P3_0
P0_7P0_6
P3_1
P0_2
P0_2
P0_1
P0_0
P0_4
P0_1
P0_3
P0_3
P3_5
P0_7
P3_6
P3_6
P0_4
P3_7
P0_7
P0_3
P3_7
P0_4
P0_1
P0_5
P0_7P0_6
P0_4
P3_3
P0_6
P0_1
P0_0
P0_5
P0_4P0_3
P0_1
P0_6P0_7
P0_0
P0_2
P0_5IN6
IN4
IN0
IN2IN3
IN5
IN7
IN1
A[0..7]
P2_[0..7]
P0_[0..7]
IN[0..7]
P3_1
P3_[0..7]
P1_4
P1_[0..7]
P1_0
P1_6
P1_3
P1_1
P1_4
P1_0
P1_5
P1_7
P1_2
P1_3
P1_1
P1_6
P1_2
P1_5
BUS[0..6]
BUS5
BUS0
BUS4
BUS6
BUS3
BUS1BUS2
C1822 pF
12 C19
22 pF
12
Y1 12 Mhz12
R141 K
12
R151 K
12
R331 K
12DISPLAY
1413121110
987
654321
JP1
Connector Placa d' Entrades
123456789
1011121314
U527256
A010
A19
A28
A37
A46
A55
A64
A73
A825
A924
A1021
A1123
A122
A1326
A1427
CE20
OE22
VPP1
O011
O112
O213
O315
O416
O517
O618
O719
VC
C
28
GN
D
14
U474LS573
D12
D23
D34
D45
D56
D67
D78
D89
C11
OC1
Q119
Q218
Q317
Q416
Q515
Q614
Q713
Q812
VC
C
20
GN
D
10
U674HC574
D12
D23
D34
D45
D56
D67
D78
D89
C11
OC1
Q119
Q218
Q317
Q416
Q515
Q614
Q713
Q812
VC
C
20
GN
D
10
U274LS245
A12
A23
A34
A45
A56
A67
A78
A89
G19
DIR1
B118
B217
B316
B415
B514
B613
B712
B811
VC
C
20
GN
D
10
U380C31
EA/VP31
X119
X218
RESET9
INT012
INT113
T014
T115
P1.01
P1.12
P1.23
P1.34
P1.45
P1.56
P1.67
P1.78
P0.039
P0.138
P0.237
P0.336
P0.435
P0.534
P0.633
P0.732
P2.021
P2.122
P2.223
P2.324
P2.425
P2.526
P2.627
P2.728
RD17
WR16
PSEN29
ALE/P30
TXD11
RXD10
VC
C
40
VS
S
20
SW1P2
1 2
U94511
A7
B1
C2
D6
LT3
BI4
LE5
A13
B12
C11
D10
E9
F15
G14
VD
D
16
VS
S
8
SW2P1
1 2
Bus P3
Reset
BUS[0..6]
TXD
Vcc Micro
VCC VCCVCC VCC
VCC
VCC
Interfície Telefònica
P3_0 P3_5
P3_[0..7]
P3_3
R504K7
12
R4910 K
12
+
-
U12ALM358
3
21
84
R414K7
12
R4010 K
12
R351 K
1 2
C24100 nF
12
R5110 K
13
2
R311 K
1 2
+
-
U12BLM358
5
67
84
U11C4093
891
0
R5210 K
1 2
C33220 pF1
2
D71N4148
1 2
U13C4093
891
0
U13D4093
12
13
11
R472M2
12
JP2
Connector Placa
123456
C28100 nF
12
Bus P3
Sortida Senyal Analògica
Plànols
113
VCC
VCC
VCC
VCC
VCC
BUS4
BUS2
BUS1
BUS6BUS3
BUS5
BUS0
BUS[0..6]
+
- U8DLM324
12
1314
411
R4310 K
12
R3210 K
12
C36470 nF
1 2
R2020 K
1 2
C2015 nF
1 2
R3010 K
1 2
R4210 K
1 2
R3720 K
1 2
R4410 K
1 2
R2510 K
1 2
R1710 K
1 2
R384K7
12
R48
10 K
1 2
C3533 nF
12
R2110 K
12
R2422 K
12
R4510 K
1 2
C2510 nF
1 2
C27470 nF
1 2
C3033 nF
12
R1620 K
1 2
R2710 K
1 2
R2320 K
1 2
C34470 nF
12
R286K8
1 2
R1310 K
1 2
C296.8 nF
1 2
R1810 K
12
R710 K
1 2
R3420 K
1 2
R2610 K
12
R2920 K
1 2
C22470 nF
1 2
C32470 nF
1 2U11D
4093
121311
U11B4093
5
64
+
- U8ALM324
3
21
411
+
- U8CLM324
10
98
411
+
- U8BLM324
5
67
411
R3610 K
12
R3910 K
12
C2610 nF
1 2
C3122 nF
12 U11A
4093
1
23
R4633 K
1 2
TXD
Bus[0..6]
Sortida Senyal Analògica
Figura 53. Esquema de la Placa de Monitoritzacio
Plànols
114
5.1.2 Placa de Monitoritzacio per PC
VCC
VCC
VCC
VCC
VCC
VCC
VCCVCC
VCC
VCC
VCC
VCC
VCC
BUS[0..6]
BUS6
BUS3
BUS5BUS4
BUS2
BUS0BUS1
SA4
SA4
SA7
SA3
SA[0..9]
SA5
SA6
SA2
SA2
SA1
SA8
SA0
SA0
SA8
SA6
SA1
SA5
SA3
SA9
SA7
D4
D6
D3
D5
D3
D5
D0
D3
D2D1
D4D5
D7
D7
D7
D1
D6
D4
D1
D0
D0
D2
D6
D2
D[0..7]
P2_6
P2_4
P0_4
P2_2
P2_7
P2_5P2_6
P0_6
P0_4
P0_4
P0_6
P0_1
P0_0
P0_0
P0_7
P2_5
P0_0
P0_5
P2_1
P2_0
P0_[0..7]
P0_3
P0_7
P2_0P0_7
P0_0
P2_2
P0_2
P0_2
P0_1
P0_5
P0_7
P0_5
P2_3
P0_6
P2_3
P0_2
P0_0
P0_3
P0_7
P2_[0..7]
P0_6
P0_2
P0_1
P0_3
P0_1
P0_2
P0_4
P0_4
P2_4
P0_5
P0_5
P0_6
P0_3
P0_1
P0_3P2_1
SA9
P1_3
P1_7
P1_1
P1_6P1_7
P1_2
P1_0
P1_4P1_5
P1_2P1_3
P1_[0..7]
P1_5
P1_6
P1_1
P1_0
P1_4
P3_6P3_[0..7]
P3_3
P3_1
P3_2
P3_6
P3_0
P3_1
P3_4
P3_2
P3_7
P3_5
P3_7
A3A4
A1A0
A4A5
A2
A0
A7
A5
A[0..7]
A2
A7A6
A1
A3
A6
C1422 pF
12
Y1 12 Mhz12
C1522 pF
12
R11K
12
R21K
12
R810 K
1 2
JP3BUS_ISA
A11
A22
A33
A44
A55
A66
A77
A88
A99
A1010
A1111
A1212
A1313
A1414
A1515
A1616
A1717
A1818
A1919
A2020
A2121
A2222
A2323
A2424
A2525
A2626
A2727
A2828
A2929
A3030
A3131
B132
B233
B334
B435
B536
B637
B738
B839
B940
B1041
B1142
B1243
B1344
B1445
B1546
B1647
B1748
B1849
B1950
B2051
B2152
B2253
B2354
B2455
B2556
B2657
B2758
B2859
B2960
B3061
B3162
U274HC573
D12
D23
D34
D45
D56
D67
D78
D89
C11
OC1
Q119
Q218
Q317
Q416
Q515
Q614
Q713
Q812
VCC20
GND10
U974HC574
D12
D23
D34
D45
D56
D67
D78
D89
C11
OC1
Q119
Q218
Q317
Q416
Q515
Q614
Q713
Q812
VC
C
20
GND10
U680C31
EA/VP31
X119
X218
RE
SE
T9
INT012
INT113
T014
T115
P1.01
P1.12
P1.23
P1.34
P1.45
P1.56
P1.67
P1.78
P0.039
P0.138
P0.237
P0.336
P0.435
P0.534
P0.633
P0.732
P2.021
P2.122
P2.223
P2.324
P2.425
P2.526
P2.627
P2.728
RD17
WR16
PSEN29
ALE/P30
TXD11
RXD10
VC
C40
VS
S
20
U3A4093
1
23
U474HC138
A1B2C3
G16G2A4G2B5
Y015 Y114 Y213 Y312 Y411 Y510 Y69 Y77
VC
C
16
GN
D
8
U174HC688
P02P14P26P38P4
11P513P615P717
Q03Q15Q27Q39Q4
12Q514Q616Q718
G1
P=Q19
VCC20
GN
D
10
U827256
A010
A19
A28
A37
A46
A55
A64
A73
A825
A924
A1021
A1123
A122
A1326
A1427
CE20
OE22
VPP1
O011
O112
O213
O315
O416
O517
O618
O719
VCC
28
GN
D
14
U774HC573
D12
D23
D34
D45
D56
D67
D78
D89
C11
OC1
Q119
Q218
Q317
Q416
Q515
Q614
Q713
Q812
VCC20
GND10
U574HC573
D12D23D34D45D56D67D78D89
C11OC1
Q119 Q218 Q317 Q416 Q515 Q614 Q713 Q812
VCC20
GN
D
10
C3100 nF
12
C7100 nF
12
C2100 nF
12
C6100 nF
12
C8100 nF
12
C4100 nF
12
C5100 nF
12
C1100 nF
12
JP2JUMPER1 2
JP1JUMPER1 2
BUS P3 TXDBUS[0..6]
VCC
VCC
VCC
VCC VCCVCC
VCC
VCC VCC
P3_[0..7]
P3_5
P3_0P3_3
R4610 K
12
C24470 nF
1 2
R396K8
12
ISO1CNY17
12
54
R3810 K
12
R261 K
12
C9100 nF
12
C10100 nF
12
C11100 nF
12
C33100 nF
12
D11N4148
1 2
R44100 K
13
2
R344K7
12
R402M2
12
R4310 K
12
R221 K
1 2
R4210 K
12
R301 K
12
+
-
U13BLM358
5
67
84
R254K7
12
+
-
U13ALM358
3
21
84
C301 uF
12
U3D4093
12
13
11
R4710 K
12
R111 K
1 2
R4110 K
12
U3C4093
891
0
C26220 pF
12
R184K7
12
U3B4093
564
ISO2
CNY17
12
54
C25470 nF1 2
C17470 nF
12
R4510 K
12
P1
DB9M
594837261
U12C4093
8
910
BUS P3
Sortida Senyal Analògica
Plànols
115
VCC
VCC
VCC
VCC
VCC
VCC
BUS6
BUS[0..6]
BUS5
BUS4
BUS3
BUS1
BUS0
BUS2
+
-U10DLM324
12
1314
411
R3310 K
12
R2110 K
12
C31470 nF
1 2
R920 K
1 2
C1615 nF
1 2
R2010 K
1 2
R3110 K
1 2
R2720 K
1 2
R3510 K
1 2
R1410 K
1 2
R610 K
1 2
R284K7
12
C2933 nF
12
R1010 K
12
R1322 K
12
R3710 K
1 2
C2010 nF
1 2
C22470 nF
1 2
C3233 nF
12
R520 K
1 2
R1610 K
1 2
R1220 K
1 2
C28470 nF
12
R176K8
1 2
R410 K
1 2
C236.8 nF
1 2
R710 K
12
R310 K
1 2
R2320 K
1 2
R1510 K
12
R1920 K
1 2
C18470 nF
1 2
+
-U10ALM324
3
21
411
+
-U10CLM324
10
98
411
+
- U10BLM324
5
67
411
R2410 K
12
R2910 K
12
C2110 nF
1 2
C13100 nF
12
C12100 nF
12
C27470 nF1 2
R3610 K
1 2
C1922 nF
12
R3233 K
1 2
U12D
4093
121311
U12B4093
5
64
U12A4093
1
23
Bus[0..6]
TXD
Sortida Senyal Analògica
Figura 54. Esquema de la Placa de Monitoritzacio per PC
Plànols
116
5.1.3 Placa d’ Entrades
Monitoritzacio
VCC
VCC
VCC
VCC
VCC
VCC VCC
VCC
VCC
VCC
VCC
VCC
VCC VCC
VCC
VCC
VCC
VCC
VCC
VCC
VCC VCC
VCC
VCC
VCC
VCC
VCC
IN[8..11]
IN9
IN8
IN11
IN9
IN10IN10
IN11
IN8IN4
IN3
IN5
IN4
IN2IN3
IN[0..7]
IN5
IN7
IN7
IN1
IN6IN2
IN6
IN0
IN1
IN0
R1322 K
1 2
R44
10 K
1 2
R2010 K
1 2
R1422 K
1 2
R8
10 K
1 2
+
-
U2A
LM324
3
21
41
1
R21
10 K
1 2
R9
10 K
1 2
+
-
U2D
LM324
12
1314
41
1
R16470 K
12
3
R41470 K
12
3
R17470 K
12
3
R1110 K
12
3
R4710 K
12
3
R122 K
1 2
R4470 K
12
3
R28470 K
12
3
R2522 K
1 2
+
-
U2C
LM324
10
98
41
1
R3510 K
12
3
R29470 K
12
3R32
10 K
1 2
R2622 K
1 2
R3822 K
1 2
R1210 K
12
3
R3722 K
1 2
R40470 K
12
3
R2310 K
12
3
+
-
U2B
LM324
5
67
41
1
R5470 K
12
3
R222 K
1 2
+
-
U3A
LM324
3
21
41
1
R6470 K
12
3
R322 K
1 2
R2410 K
12
3
+
-
U3B
LM324
5
67
41
1
R1522 K
1 2
R18470 K
12
3
R4810 K
12
3
R3922 K
1 2
R42470 K
12
3
R33
10 K
1 2
+
-
U3D
LM324
12
1314
41
1
+
-
U3C
LM324
10
98
41
1
R30470 K
12
3
R3610 K
12
3
R45
10 K
1 2
R2722 K
1 2
JP8
Connector Placa
1234567891011121314
C2100 nF
12
C3100 nF
12
JP7
ALIMENTACIO
21
C1100 nF1
2
R5310 K
12
R5410 K
12
R5510 K
12
R5610 K
12
R6010 K
12
R5710 K
12
R5810 K
12
JP3
ENTRADES 7-8
12
JP4
ENTRADES 5-6
12
JP2
ENTRADES 9-10
12
R5910 K
12
JP1
ENTRADES 11-12
12
R4610 K
12
3
+
-
U1C
LM324
10
98
41
1
R5110 K
12
R4910 K
12
+
-
U1A
LM324
3
21
41
1
R5210 K
12 +
-
U1B
LM324
5
67
41
1
R5010 K
12
R3410 K
12
3
R31
10 K
1 2
R2210 K
12
3
R710 K
1 2
JP5
ENTRADES 3-4
12
+
-
U1D
LM324
12
1314
41
1
R19
10 K
1 2
R1010 K
12
3
JP6
ENTRADES 1-2
12
R43
10 K
1 2
Figura 55. Esquema de la Placa d’ Entrades
Plànols
117
5.1.4 Placa Interfície Telefònica
VCC
VCC
VCC
Placa de Monitoritzacio(Maquina Dispensadora o PC)
R18120
12
C14220 nF
12
R1468 K
12
R1310
12
R12100 K
1 2
R93K9
12
R6470
12
C11100 pF
1 2
+
C8 4.7 uF
1 2
R8120 K
1 2
R19100 K
12
C7100 nF
1 2
R151K8
12
JP1
Linía Telefònica
12
+
C5 100 uF
1 2
R5150
1 2
R1710
12
R21820
12
C13220 nF
1 2
C6 2.2 nF1 2
C1610 nF
12
R2010
12
K1RELE
34
5
67
812
C151 nF
12
R11390
1 2
R221K8
12
R710 K
1 2
D31N4004
12
D410V
12
C10100 pF
1 2
C9220 nF
12
C4 2.2 nF1 2
R1647 K
13
2
Q1BDX53 2
1
3
R1010 K
12
- +
D2B250C1000
3
4
2
1
R412
12
JP2
Connector
12345678
R222 K
1 2
R139 K
1 2
C1470 nF
1 2
- +
D1B250C1000
3
4
2
1
R32K2
12
C2470 nF
1 2ISO1
CNY17
12
54
+
C347 uF
12
R2327 K
12
TEA 1061
Figura 56. Esquema de la Placa Interfície Telefònica
Plànols
118
5.2 Fotolits
5.2.1 Placa de Monitoritzacio Cara Components
Figura 57. Placa de Monitoritzacio Cara Components
Plànols
119
5.2.2 Placa de Monitoritzacio Cara Soldadures
Figura 58. Placa de Monitoritzacio Cara Soldadures
Plànols
120
5.2.3 Placa de Monitoritzacio per PC Cara Components
Figura 59. Placa de Monitoritzacio per PC Cara Components
Plànols
121
5.2.4 Placa de Monitoritzacio per PC Cara Soldadures
Figura 60. Placa de Monitoritzacio per PC Cara Soldadures
Plànols
122
5.2.5 Placa d’ Entrades Cara Components
Figura 61. Placa d’ Entrades Cara Components
Plànols
123
5.2.6 Placa d’ Entrades Cara Soldadures
Figura 62. Placa d’ Entrades Cara Soldadures
Plànols
124
5.2.7 Placa Interfície Telefònica Cara Components
Figura 63. Placa Interfície Telefònica Cara Components
Plànols
125
5.2.8 Placa Interfície Telefònica Cara Soldadures
Figura 64. Placa Interfície Telefònica Cara Soldadures
Plànols
126
5.3 Serigrafia Components
5.3.1 Placa de Monitoritzacio
Figura 65. Serigrafia Placa de Monitoritzacio
Plànols
127
5.3.2 Placa de Monitoritzacio per PC
Figura 66. Serigrafia Placa de Monitoritzacio per PC
Plànols
128
5.3.3 Placa d’ Entrades
Figura 67. Serigrafia Placa d’ Entrades
Plànols
129
5.3.4 Placa Interfície Telefònica
Figura 68. Serigrafia Placa Interfície Telefònica
Plànols
130
5.4 Cables de Connexió
5.4.1 Cables de Connexió de les Plaques que van a les Maquines Dispensadores
Figura 69. Cable de Connexió de la Placa Interfície Telefònica a la de Monitoritzacio
Figura 70. Cable de Connexió de la Placa d’ Entrades a la Placa de Monitoritzacio
GNDGND
Connector queva a la Placa
Monitoritzacio
Connector que va ala Placa Interfície
Telefònica
GND GND
Connector queva a la Placa deMonitoritzacio
Connector queva a la Placad’ Entrades
Plànols
131
5.4.2 Cable de Connexió de les Plaques que van a la Central
Figura 71. Cable de Connexió de la Placa Interfície Telefònica a la de Monitoritzacio per PC
Pressupost
132
6 PRESSUPOST
Pressupost
133
6.1 Amidaments
6.1.1 Amidaments Placa de Monitoritzacio
NUM DENOMINACIÓ DESCRIPCIÓ QUANTITAT
1.1 C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C13,C14,C17,C24,C28
Condensador de poliester de 100 nF 63 V 16
1.2 C12,C15,C16 Condensador electrolitic de 1000 uF 25 V 31.3 C18,C19 Condensador ceràmic de 22 pF 21.4 C20,C35 Condensador de poliester de 15 nF 63 V 21.5 C21,C23 Condensador de poliester de 220 nF 63 V 21.6 C22,C27,C32,C34,
C36Condensador de poliester 470 nF 63 V 5
1.7 C25,C26 Condensador de poliester de 10 nF 63 V 21.8 C29 Condensador de poliester de 6.8 nF 63 V 11.9 C30 Condensador de poliester de 33 nF 63V 11.10 C31 Condensador de poliester de 22 nF 63V 11.11 C33 Condensador ceràmic de 220 pF 11.12 D1,D2,D4,D5,D7 Diode 1N4148 51.13 D3 Diode 1N4004 11.14 D6 Diode Zener 3,3V 1/4W 11.15 JP1 Tira connector CI de 14 connexions 11.16 JP2 Tira connector CI de 6 connexions 11.17 JP3, JP4, JP5, JP6 Regleta de 2 terminals per soldar en placa 41.18 R1 Resistència de carbó de 220Ω, ±5 % de
tolerància, 1/4W1
1.19 R2 Resistència variable de 500Ω, ajustvertical, 1/4W
1
1.20 R3 Resistència variable de 470 K, ajustvertical, 1/4W
1
1.21 R4 Resistència de carbó de 120Ω, ±5 % detolerància, 1/4W
1
1.22 R5,R6,R7,R10,R13,R17,R19,R25,R27,R30,R40,R42,R43,R44,R45,R48,R49,R52
Resistència de carbó de 10 K, ±5 % detolerància, 1/4W
18
1.23 R51 Resistència variable de 100 K, ajustvertical, 1/4W
1
1.24 R18,R21,R26,R32,R36,R39
Resistència de carbó de 10 K, ±1 % detolerància, 1/4W
6
1.25 R8,R14,R15,R31,R33,R35
Resistència de carbó de 1 K, ±5 % detolerància, 1/4W
6
Pressupost
134
1.26 R11 Resistència variable de 1 K, ajust vertical,1/4W
1
1.27 R9,R12 Resistència de carbó de 100 K, ±5 % detolerància, 1/4W
2
1.28 R16,R20,R23,R29,R34,R37
Resistència de carbó de 20 K, ±1 % detolerància, 1/4W
6
1.29 R22 Resistència de carbó de 330Ω, ±5 % detolerància, 1/4W
1
1.30 R24 Resistència de carbó de 22 K, ±5 % detolerància, 1/4W
1
1.31 R28 Resistència de carbó de 6K8, ±5 % detolerància, 1/4W
1
1.32 R38,R41,R50 Resistència de carbó de 4K7, ±5 % detolerància, 1/4W
3
1.33 R46 Resistència de carbó de 33 K, ±5 % detolerància, 1/4W
1
1.34 R47 Resistència de carbó de 2M2, ±5 % detolerància, 1/4W
1
1.35 SW1, SW2, SW3 Polsadors miniatura per soldar en placa 31.36 U1 Circuit integrat LM 317 encapsulat TO 220 11.37 U2 Circuit integrat 74LS245 11.38 U3 Circuit integrat 80C31 11.39 U4 Circuit integrat 74LS573 11.40 U5 Circuit integrat 27256 11.41 U6 Circuit integrat 74HC574 11.42 U7 Circuit integrat LM 311 11.43 U8 Circuit integrat LM 324 11.44 U9 Circuit integrat 4511 11.45 U10 Display 7 segments SC03-12HWA 11.46 U11,U13 Circuit integrat 4093 21.47 U12 Circuit integrat LM 358 11.48 Y1 Cristall de quartz de 12 MHz 11.49 Pl1 Placa de fibra de vidre presensibilitzada
positiva238 cm
1.50 SOC1 Sòcol Dip 8 amb pins tornejats 21.51 SOC2 Sòcol Dip 14 amb pins tornejats 41.52 SOC3 Sòcol Dip 16 amb pins tornejats 11.53 SOC4 Sòcol Dip 20 amb pins tornejats 31.54 SOC5 Sòcol Dip 28 amb pins tornejats 11.55 SOC6 Sòcol Dip 40 amb pins tornejats 11.56 CONNECT1 Connector CI 2,54 per a 10 terminals 31.57 CONNECT2 Connector CI 2,54 per a 4 terminals 21.58 CONNECT3 Connector CI 2,54 per a 6 terminals 11.59 CABLEBUS1 Cable de bus amb 14 fils 0,3 m1.60 CABLEBUS2 Cable de bus amb 6 fils 0,3 m1.61 CABLE1 Cable flexible de 0,5 mm2 0,05 m1.62 TERMI1 Terminals connector CI pas 2,54 421.63 DISSIPADOR Dissipador de Rth 4K/W per TO220 1
Pressupost
135
1.64 BATERIA Portapiles R6x2 o UM3x2 11.65 TREBALL1 Hores de muntatge 25 h
Pressupost
136
6.1.2 Amidaments Placa de Monitoritzacio per PC
NUM DENOMINACIÓ DESCRIPCIÓ QUANTITAT
2.1 C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13, C33
Condensador de poliester de 100 nF 63 V 14
2.2 C14,C15 Condensador ceràmic de 22 pF 22.3 C16,C29 Condensador de poliester de 15 nF 63 V 22.4 C17,C18,C22,C24,
C25,C27,C28,C31Condensador de poliester de 470 nF 8
2.5 C21,C20 Condensador de poliester de 10 nF 63 V 22.6 C23 Condensador de poliester de 6,8 nF 63 V 12.7 C32 Condensador de poliester de 33 nF 63V 12.8 C19 Condensador de poliester de 22 nF 63V 12.9 C30 Condensador de poliester de 1 uF 63V 12.10 C26 Condensador ceràmic de 220 pF 12.11 D1 Diode 1N4148 12.12 ISO1,ISO2 Optoacoplador Led Fototransistor CNY17 22.13 JP4 Regleta de 2 terminals per soldar en placa 12.14 P1 Connector DB9 femella per soldar en placa 12.15 R1,R2, R11,R22,
R26,R30Resistència de carbó de 1 K, ±5 % detolerància, 1/4W
6
2.16 R3,R4,R6,R8,R14,R16,R20,R31,R33,R35,R36,R37,R38,R41,R42,R43,R45,R46,R47
Resistència de carbó de 10 K, ±5 % detolerància, 1/4W
19
2.17 R44 Resistència variable de 100 K, ajustvertical, 1/2W
1
2.18 R7,R10,R15,R21,R24,R29
Resistència de carbó de 10 K, ±1 % detolerància, 1/4W
6
2.19 R5,R9,R12,R19,R23,R27
Resistència de carbó de 20 K, ±1 % detolerància, 1/4W
6
2.20 R13 Resistència de carbó de 22 K, ±5 % detolerància, 1/4W
1
2.21 R17,R39 Resistència de carbó de 6K8, ±5 % detolerància, 1/4W
2
2.22 R18,R25,R28,R34 Resistència de carbó de 4K7, ±5 % detolerància, 1/4W
4
2.23 R32 Resistència de carbó de 33 K, ±5 % detolerància, 1/4W
1
2.24 R40 Resistència de carbó de 2M2, ±5 % detolerància, 1/4W
1
2.25 JP1,JP2 Jumper 22.26 U1 Circuit integrat 74HC688 12.27 U2,U5,U7 Circuit integrat 74HC573 3
Pressupost
137
2.28 U3,U12 Circuit integrat 4093 22.29 U4 Circuit integrat 74HC138 12.30 U6 Circuit integrat 80C31 12.31 U8 Circuit integrat 27256 12.32 U9 Circuit integrat 74HC574 12.33 U10 Circuit integrat LM 324 12.34 U11 Circuit integrat LM 358 12.35 Y1 Cristall de quartz de 12 MHz 12.36 Pl1 Placa de fibra de vidre presensibilitzada
positiva190 cm
2.37 SOC1 Sòcol Dip 8 amb pins tornejats 12.38 SOC2 Sòcol Dip 14 amb pins tornejats 32.39 SOC3 Sòcol Dip 16 amb pins tornejats 12.40 SOC4 Sòcol Dip 20 amb pins tornejats 52.41 SOC5 Sòcol Dip 28 amb pins tornejats 12.42 SOC6 Sòcol Dip 40 amb pins tornejats 12.43 CONNECT1 Connector DB9 mascle amb carcassa 12.44 CONNECT2 Connector CI 2,54 per a 10 terminals 12.45 CABLEBUS1 Cable de bus amb 8 fils 0,3 m2.46 TERMI1 Terminals connector CI pas 2,54 82.47 TREBALL1 Hores de muntatge 30 h
Pressupost
138
6.1.3 Amidaments Placa Interfície Telefònica
NUM DENOMINACIÓ DESCRIPCIÓ QUANTITAT
3.1 C1,C2 Condensador de poliester de 470 nF 400 V 23.2 C3 Condensador electrolitic de 47 uF 25 V 13.3 C4,C6 Condensador de poliester de 2,2 nF 63 V 23.4 C5 Condensador electrolitic de 100 uF 25 V 13.5 C7 Condensador de poliester de 100 nF 63 V 13.6 C8 Condensador electrolitic de 4,7 uF 25 V 13.7 C9,C13,C14 Condensador de poliester de 220 nF 63 V 33.8 C10,C11 Condensador ceràmic de 100 pF 23.9 C15 Condensador de poliester de 1 nF 63 V 13.10 C16 Condensador de poliester de 10 nF 63 V 13.11 D1,D2 Pont de diodes B250C1000 23.12 D3 Diode 1N4004 13.13 D4 Diode Zener de 10 V 1/2W 13.14 ISO1 Optoacoplador Led Fototransistor CNY17 13.15 JP1 Regleta de 2 terminals per soldar en placa 13.16 JP2 Tira connector CI de 8 terminals 13.17 K1 Relé de potencia de dos circuits commutats
i amb la resistència de la bobina de 56Ω1
3.18 Q1 Transistor darlington BDX 53 TO220 13.19 R1 Resistència de carbó de 39 K, ±5 % de
tolerància, 1/4W1
3.20 R2 Resistència de carbó de 22 K, ±5 % detolerància, 1/4W
1
3.21 R3 Resistència de carbó de 2K2, ±5 % detolerància, 1/4W
1
3.22 R4 Resistència de carbó de 12Ω, ±5 % detolerància, 1/4W
1
3.23 R5 Resistència de carbó de 150Ω, ±5 % detolerància, 1/4W
1
3.24 R6 Resistència de carbó de 470Ω, ±5 % detolerància, 1/4W
1
3.25 R7,R10 Resistència de carbó de 10 K, ±5 % detolerància, 1/4W
2
3.26 R8 Resistència de carbó de 120 K, ±5 % detolerància, 1/4W
1
3.27 R9 Resistència de carbó de 3K9, ±5 % detolerància, 1/4W
1
3.28 R11 Resistència de carbó de 390Ω, ±5 % detolerància, 1/4W
1
3.29 R12,R19 Resistència de carbó de 100 K, ±5 % detolerància, 1/4W
2
3.30 R13,R17,R20 Resistència de carbó de 10Ω, ±5 % detolerància, 1/4W
3
Pressupost
139
3.31 R14 Resistència de carbó de 68 K, ±5 % detolerància, 1/4W
1
3.32 R15,R22 Resistència de carbó de 1K8, ±5 % detolerància, 1/4W
2
3.33 R16 Resistència variable de 47 K, ajust vertical,1/4W
1
3.34 R18 Resistència de carbó de 120Ω, ±5 % detolerància, 1/4W
1
3.35 R21 Resistència de carbó de 820Ω, ±5 % detolerància, 1/4W
1
3.36 R23 Resistència de carbó de 27 K, ±5 % detolerància, 1/4W
1
3.37 U1 Circuit integrat TEA 1061 13.38 Pl1 Placa de fibra de vidre presensibilitzada
positiva57 cm
3.39 SOC1 Sòcol Dip 6 amb pins tornejats 13.40 SOC2 Sòcol Dip 18 amb pins tornejats 13.41 TREBALL1 Hores de muntatge 3 h
Pressupost
140
6.1.4 Amidaments Placa d’ Entrades
NUM DENOMINACIÓ DESCRIPCIÓ QUANTITAT
4.1 C1,C2,C3 Condensador de poliester de 100 nF 63 V 34.2 JP1, JP2, JP3, JP4
JP5, JP6, JP7Regleta de 2 terminals per soldar en placa 7
4.3 JP8 Tira de connector CI de 14 terminals 14.4 R7,R8,R9, R19,R20,
R21,R31,R32,R33,R43,R44,R45
Resistència de carbó de 10 K, ±5 % detolerància, 1/4W
12
4.5 R10,R22,R34,R46,R11,R23,R35,R47,R12,R24,R36,R48
Resistència variable de 10 K, ajust vertical,1/4W
12
4.6 R1,R2,R3,R13,R14,R15, R25,R26,R27,R37,R38,R39,
Resistència de carbó de 22 K, ±5 % detolerància, 1/4W
12
4.7 R4,R5,R6,R16,R17,R18,R28,R29,R30,R40,R41,R42
Resistència variable de 470 K, ajustvertical, 1/4W
12
4.8 U1,U2,U3 Circuit integrat LM 324 34.9 Pl1 Placa de fibra de vidre presensibilitzada
positiva138 cm
4.10 SOC1 Sòcol Dip 14 amb pins tornejats 34.11 TREBALL1 Hores de muntatge 3 h
Pressupost
141
6.1.5 Programa ASM per la Placa de Monitoritzacio
NUM DENOMINACIÓ DESCRIPCIÓ QUANTITAT
5.1 TREBALL1 Hores de programació 80 h
6.1.6 Programa ASM per la Placa de Monitoritzacio per PC
NUM DENOMINACIÓ DESCRIPCIÓ QUANTITAT
6.1 TREBALL1 Hores de programació 80 h
6.1.7 Programa Visual Basic
NUM DENOMINACIÓ DESCRIPCIÓ QUANTITAT
7.1 TREBALL1 Hores de programació 120 h
6.1.8 Disseny de Prototipus
NUM DENOMINACIÓ DESCRIPCIÓ QUANTITAT
8.1 TREBALL1 Hores d’ investigació 180 h
Pressupost
142
6.2 Preus Elementals
6.2.1 Placa de Monitoritzacio
NUM DESCRIPCIÓ PREU
1.1 Condensador de poliester de 100 nF 63 V 0,121.2 Condensador electrolitic de 1000 uF 25 V 0,211.3 Condensador ceràmic de 22 pF 0,081.4 Condensador de poliester de 15 nF 63 V 0,061.5 Condensador de poliester de 220 nF 63 V 0,121.6 Condensador de poliester 470 nF 63 V 0,121.7 Condensador de poliester de 10 nF 63 V 0,061.8 Condensador de poliester de 6.8 nF 63 V 0,061.9 Condensador de poliester de 33 nF 63V 0,061.10 Condensador de poliester de 22 nF 63V 0,061.11 Condensador ceràmic de 220 pF 0,081.12 Diode 1N4148 0,021.13 Diode 1N4004 0,021.14 Diode Zener 3,3V 1/4W 0,051.15 Tira connector CI de 14 connexions 0,081.16 Tira connector CI de 6 connexions 0,041.17 Regleta de 2 terminals per soldar en placa 0,441.18 Resistència de carbó de 220Ω, ±5 % de
tolerància, 1/4W0,02
1.19 Resistència variable de 500Ω, ajustvertical, 1/4W
0,22
1.20 Resistència variable de 470 K, ajustvertical, 1/4W
0,22
1.21 Resistència de carbó de 120Ω, ±5 % detolerància, 1/4W
0,02
1.22 Resistència de carbó de 10 K, ±5 % detolerància, 1/4W
0,02
1.23 Resistència variable de 100 K, ajustvertical, 1/4W
0,22
1.24 Resistència de carbó de 10 K, ±1 % detolerància, 1/4W
0,03
1.25 Resistència de carbó de 1 K, ±5 % detolerància, 1/4W
0,02
1.26 Resistència variable de 1 K, ajust vertical,1/4W
0,22
1.27 Resistència de carbó de 100 K, ±5 % detolerància, 1/4W
0,02
1.28 Resistència de carbó de 20 K, ±1 % detolerància, 1/4W
0,03
1.29 Resistència de carbó de 330Ω, ±5 % detolerància, 1/4W
0,02
Pressupost
143
1.30 Resistència de carbó de 22 K, ±5 % detolerància, 1/4W
0,02
1.31 Resistència de carbó de 6K8, ±5 % detolerància, 1/4W
0,02
1.32 Resistència de carbó de 4K7, ±5 % detolerància, 1/4W
0,02
1.33 Resistència de carbó de 33 K, ±5 % detolerància, 1/4W
0,02
1.34 Resistència de carbó de 2M2, ±5 % detolerància, 1/4W
0,02
1.35 Polsadors miniatura per soldar en placa 0,901.36 Circuit integrat LM 317 encapsulat TO 220 0,621.37 Circuit integrat 74LS245 0,781.38 Circuit integrat 80C31 2,061.39 Circuit integrat 74LS573 0,761.40 Circuit integrat 27256 3,371.41 Circuit integrat 74HC574 0,671.42 Circuit integrat LM 311 0,501.43 Circuit integrat LM 324 0,351.44 Circuit integrat 4511 0,621.45 Display 7 segments SC03-12HWA 1,051.46 Circuit integrat 4093 0,371.47 Circuit integrat LM 358 0,421.48 Cristall de quartz de 12 MHz 0,931.49 Placa de fibra de vidre presensibilitzada
positiva0,04 €/cm2
1.50 Sòcol Dip 8 amb pins tornejats 0,331.51 Sòcol Dip 14 amb pins tornejats 0,601.52 Sòcol Dip 16 amb pins tornejats 0,661.53 Sòcol Dip 20 amb pins tornejats 0,911.54 Sòcol Dip 28 amb pins tornejats 0,781.55 Sòcol Dip 40 amb pins tornejats 1,801.56 Connector CI 2,54 per a 10 terminals 0,361.57 Connector CI 2,54 per a 4 terminals 0,141.58 Connector CI 2,54 per a 6 terminals 0,291.59 Cable de bus amb 14 fils 0,07 €/m1.60 Cable de bus amb 6 fils 0,03 €/m1.61 Cable flexible de 0,5 mm2 0,10 €/m1.62 Terminals connector CI pas 2,54 0,041.63 Dissipador de Rth 4K/W per TO220 0,151.64 Portapiles R6x2 o UM3x2 0,181.65 Hores de muntatge 12,00 €/h
Pressupost
144
6.2.2 Placa de Monitoritzacio per PC
NUM DESCRIPCIÓ PREU
2.1 Condensador de poliester de 100 nF 63 V 0,062.2 Condensador ceràmic de 22 pF 0,082.3 Condensador de poliester de 15 nF 63 V 0,062.4 Condensador de poliester de 470 nF 0,122.5 Condensador de poliester de 10 nF 63 V 0,062.6 Condensador de poliester de 6,8 nF 63 V 0,062.7 Condensador de poliester de 33 nF 63V 0,062.8 Condensador de poliester de 22 nF 63V 0,062.9 Condensador de poliester de 1 uF 63V 0,212.10 Condensador ceràmic de 220 pF 0,082.11 Diode 1N4148 0,022.12 Optoacoplador Led Fototransistor CNY17 0,722.13 Regleta de 2 terminals per soldar en placa 0,442.14 Connector DB9 femella per soldar en placa 1,462.15 Resistència de carbó de 1 K, ±5 % de
tolerància, 1/4W0,02
2.16 Resistència de carbó de 10 K, ±5 % detolerància, 1/4W
0,02
2.17 Resistència variable de 100 K, ajustvertical, 1/2W
0,22
2.18 Resistència de carbó de 10 K, ±1 % detolerància, 1/4W
0,03
2.19 Resistència de carbó de 20 K, ±1 % detolerància, 1/4W
0,03
2.20 Resistència de carbó de 22 K, ±5 % detolerància, 1/4W
0,02
2.21 Resistència de carbó de 6K8, ±5 % detolerància, 1/4W
0,02
2.22 Resistència de carbó de 4K7, ±5 % detolerància, 1/4W
0,02
2.23 Resistència de carbó de 33 K, ±5 % detolerància, 1/4W
0,02
2.24 Resistència de carbó de 2M2, ±5 % detolerància, 1/4W
0,02
2.25 Jumper 0,012.26 Circuit integrat 74HC688 0,742.27 Circuit integrat 74HC573 0,522.28 Circuit integrat 4093 0,372.29 Circuit integrat 74HC138 0,402.30 Circuit integrat 80C31 2,062.31 Circuit integrat 27256 3,372.32 Circuit integrat 74HC574 0,672.33 Circuit integrat LM 324 0,35
Pressupost
145
2.34 Circuit integrat LM 358 0,422.35 Cristall de quartz de 12 MHz 0,932.36 Placa de fibra de vidre presensibilitzada
positiva0,04 €/cm2
2.37 Sòcol Dip 8 amb pins tornejats 0,332.38 Sòcol Dip 14 amb pins tornejats 0,602.39 Sòcol Dip 16 amb pins tornejats 0,662.40 Sòcol Dip 20 amb pins tornejats 0,912.41 Sòcol Dip 28 amb pins tornejats 0,782.42 Sòcol Dip 40 amb pins tornejats 1,802.43 Connector DB9 mascle amb carcassa 0,882.44 Connector CI 2,54 per a 10 terminals 0,362.45 Cable de bus amb 8 fils 0,04 €/m2.46 Terminals connector CI pas 2,54 0,042.47 Hores de muntatge 12,00 €/h
Pressupost
146
6.2.3 Placa Interfície Telefònica
NUM DESCRIPCIÓ PREU
3.1 Condensador de poliester de 470 nF 400 V 0,333.2 Condensador electrolitic de 47 uF 25 V 0,133.3 Condensador de poliester de 2,2 nF 63 V 0,063.4 Condensador electrolitic de 100 uF 25 V 0,133.5 Condensador de poliester de 100 nF 63 V 0,063.6 Condensador electrolitic de 4,7 uF 25 V 0,133.7 Condensador de poliester de 220 nF 63 V 0,123.8 Condensador ceràmic de 100 pF 0,083.9 Condensador de poliester de 1 nF 63 V 0,063.10 Condensador de poliester de 10 nF 63 V 0,063.11 Pont de diodes B250C1000 1,053.12 Diode 1N4004 0,023.13 Diode Zener de 10 V 1/2W 0,053.14 Optoacoplador Led Fototransistor CNY17 0,723.15 Regleta de 2 terminals per soldar en placa 0,443.16 Tira connector CI de 8 terminals 0,053.17 Relé de potencia de dos circuits commutats
i amb la resistència de la bobina de 56Ω3,46
3.18 Transistor darlington BDX 53 TO220 1,053.19 Resistència de carbó de 39 K, ±5 % de
tolerància, 1/4W0,02
3.20 Resistència de carbó de 22 K, ±5 % detolerància, 1/4W
0,02
3.21 Resistència de carbó de 2K2, ±5 % detolerància, 1/4W
0,02
3.22 Resistència de carbó de 12Ω, ±5 % detolerància, 1/4W
0,02
3.23 Resistència de carbó de 150Ω, ±5 % detolerància, 1/4W
0,02
3.24 Resistència de carbó de 470Ω, ±5 % detolerància, 1/4W
0,02
3.25 Resistència de carbó de 10 K, ±5 % detolerància, 1/4W
0,02
3.26 Resistència de carbó de 120 K, ±5 % detolerància, 1/4W
0,02
3.27 Resistència de carbó de 3K9, ±5 % detolerància, 1/4W
0,02
3.28 Resistència de carbó de 390Ω, ±5 % detolerància, 1/4W
0,02
3.29 Resistència de carbó de 100 K, ±5 % detolerància, 1/4W
0,02
3.30 Resistència de carbó de 10Ω, ±5 % detolerància, 1/4W
0,02
Pressupost
147
3.31 Resistència de carbó de 68 K, ±5 % detolerància, 1/4W
0,02
3.32 Resistència de carbó de 1K8, ±5 % detolerància, 1/4W
0,02
3.33 Resistència variable de 47 K, ajust vertical,1/4W
0,22
3.34 Resistència de carbó de 120Ω, ±5 % detolerància, 1/4W
0,02
3.35 Resistència de carbó de 820Ω, ±5 % detolerància, 1/4W
0,02
3.36 Resistència de carbó de 27 K, ±5 % detolerància, 1/4W
0,02
3.37 Circuit integrat TEA 1061 1,323.38 Placa de fibra de vidre presensibilitzada
positiva0,04 €/cm2
3.39 Sòcol Dip 6 amb pins tornejats 0,153.40 Sòcol Dip 18 amb pins tornejats 0,763.41 Hores de muntatge 12,00 €/h
Pressupost
148
6.2.4 Placa d’ Entrades
NUM DESCRIPCIÓ PREU
4.1 Condensador de poliester de 100 nF 63 V 0,064.2 Regleta de 2 terminals per soldar en placa 0,444.3 Tira connector CI de 14 terminals 0,084.4 Resistència de carbó de 10 K, ±5 % de
tolerància, 1/4W0,02
4.5 Resistència variable de 10 K, ajust vertical,1/4W
0,22
4.6 Resistència de carbó de 22 K, ±5 % detolerància, 1/4W
0,02
4.7 Resistència variable de 470 K, ajustvertical, 1/4W
0,22
4.8 Circuit integrat LM 324 0,354.9 Placa de fibra de vidre presensibilitzada
positiva0,04
4.10 Sòcol Dip 14 amb pins tornejats 0,604.11 Hores de muntatge 12,00 €/h
Pressupost
149
6.2.5 Programa ASM per la Placa de Monitoritzacio
NUM DESCRIPCIÓ PREU
5.1 Hores de programació 16,00 €/h
6.2.6 Programa ASM per la Placa de Monitoritzacio per PC
NUM DESCRIPCIÓ PREU
6.1 Hores de programació 16,00 €/h
6.2.7 Programa Visual Basic
NUM DESCRIPCIÓ PREU
7.1 Hores de programació 16,00 €/h
6.2.8 Disseny de Prototipus
NUM DESCRIPCIÓ PREU
8.1 Hores d’ investigació 20,00 €/h
Pressupost
150
6.3 Aplicació de Preus
6.3.1 Placa de Monitoritzacio
NUM DESCRIPCIÓ UNITATS PREU TOTAL
1.1 Condensador de poliester de 100 nF63 V
16 0,12 1,92
1.2 Condensador electrolitic de 1000 uF25 V
3 0,21 0,63
1.3 Condensador ceràmic de 22 pF 2 0,08 0,161.4 Condensador de poliester de 15 nF
63 V2 0,06 0,12
1.5 Condensador de poliester de 220 nF63 V
2 0,12 0,24
1.6 Condensador de poliester 470 nF 63V
5 0,12 0,60
1.7 Condensador de poliester de 10 nF63 V
2 0,06 0,12
1.8 Condensador de poliester de 6.8 nF63 V
1 0,06 0,06
1.9 Condensador de poliester de 33 nF63V
1 0,06 0,06
1.10 Condensador de poliester de 22 nF63V
1 0,06 0,06
1.11 Condensador ceràmic de 220 pF 1 0,08 0,081.12 Diode 1N4148 5 0,02 0,101.13 Diode 1N4004 1 0,02 0,021.14 Diode Zener 3,3V 1/4W 1 0,05 0,051.15 Tira connector CI de 14 connexions 1 0,08 0,081.16 Tira connector CI de 6 connexions 1 0,04 0,041.17 Regleta de 2 terminals per soldar en
placa4 0,44 1,76
1.18 Resistència de carbó de 220Ω, ±5 %de tolerància, 1/4W
1 0,02 0,02
1.19 Resistència variable de 500Ω, ajustvertical, 1/4W
1 0,22 0,22
1.20 Resistència variable de 470 K, ajustvertical, 1/4W
1 0,22 0,22
1.21 Resistència de carbó de 120Ω, ±5 %de tolerància, 1/4W
1 0,02 0,02
1.22 Resistència de carbó de 10 K, ±5 %de tolerància, 1/4W
18 0,02 0,36
1.23 Resistència variable de 100 K, ajustvertical, 1/4W
1 0,22 0,22
1.24 Resistència de carbó de 10 K, ±1 %de tolerància, 1/4W
6 0,03 0,18
Pressupost
151
1.25 Resistència de carbó de 1 K, ±5 %de tolerància, 1/4W
6 0,02 0,12
1.26 Resistència variable de 1 K, ajustvertical, 1/4W
1 0,22 0,22
1.27 Resistència de carbó de 100 K, ±5% de tolerància, 1/4W
2 0,02 0,04
1.28 Resistència de carbó de 20 K, ±1 %de tolerància, 1/4W
6 0,03 0,18
1.29 Resistència de carbó de 330Ω, ±5% de tolerància, 1/4W
1 0,02 0,02
1.30 Resistència de carbó de 22 K, ±5 %de tolerància, 1/4W
1 0,02 0,02
1.31 Resistència de carbó de 6K8, ±5 %de tolerància, 1/4W
1 0,02 0,02
1.32 Resistència de carbó de 4K7, ±5 %de tolerància, 1/4W
3 0,02 0,06
1.33 Resistència de carbó de 33 K, ±5 %de tolerància, 1/4W
1 0,02 0,02
1.34 Resistència de carbó de 2M2, ±5 %de tolerància, 1/4W
1 0,02 0,02
1.35 Polsadors miniatura per soldar enplaca
3 0,90 2,70
1.36 Circuit integrat LM 317 TO 220 1 0,62 0,621.37 Circuit integrat 74LS245 1 0,78 0,781.38 Circuit integrat 80C31 1 2,06 2,061.39 Circuit integrat 74LS573 1 0,76 0,761.40 Circuit integrat 27256 1 3,37 3,371.41 Circuit integrat 74HC574 1 0,67 0,671.42 Circuit integrat LM 311 1 0,50 0,501.43 Circuit integrat LM 324 1 0,35 0,351.44 Circuit integrat 4511 1 0,62 0,621.45 Display 7 segments SC03-12HWA 1 1,05 1,051.46 Circuit integrat 4093 2 0,37 0,741.47 Circuit integrat LM 358 1 0,42 0,421.48 Cristall de quartz de 12 MHz 1 0,93 0,931.49 Placa de fibra de vidre
presensibilitzada positiva238 cm 0,04 €/cm2 9,52
1.50 Sòcol Dip 8 amb pins tornejats 2 0,33 0,661.51 Sòcol Dip 14 amb pins tornejats 4 0,60 2,401.52 Sòcol Dip 16 amb pins tornejats 1 0,66 0,661.53 Sòcol Dip 20 amb pins tornejats 3 0,91 2,731.54 Sòcol Dip 28 amb pins tornejats 1 0,78 0,781.55 Sòcol Dip 40 amb pins tornejats 1 1,80 1,801.56 Connector CI 2,54 per a 10
terminals3 0,36 1,08
1.57 Connector CI 2,54 per a 4 terminals 2 0,14 0,281.58 Connector CI 2,54 per a 6 terminals 1 0,29 0,291.59 Cable de bus amb 14 fils 0,3 m 0,07 €/m 0,02
Pressupost
152
1.60 Cable de bus amb 6 fils 0,3 m 0,03 €/m 0,011.61 Cable flexible de 0,5 mm2 0,05 m 0,10 €/m 0,011.62 Terminals connector CI pas 2,54 42 0,04 1,681.63 Dissipador de Rth 4K/W per TO220 1 0,15 0,151.64 Portapiles R6x2 o UM3x2 1 0,18 0,181.65 Hores de muntatge 25 h 12,00 €/h 300,00
Total de la Placa de Monitoritzacio 345,88
Pressupost
153
6.3.2 Placa de Monitoritzacio per PC
NUM DESCRIPCIÓ UNITATS PREU TOTAL
2.1 Condensador de poliester de 100 nF63 V
14 0,06 0,84
2.2 Condensador ceràmic de 22 pF 2 0,08 0,162.3 Condensador de poliester de 15 nF
63 V2 0,06 0,12
2.4 Condensador de poliester de 470 nF 8 0,12 0,962.5 Condensador de poliester de 10 nF
63 V2 0,06 0,12
2.6 Condensador de poliester de 6,8 nF63 V
1 0,06 0,06
2.7 Condensador de poliester de 33 nF63V
1 0,06 0,06
2.8 Condensador de poliester de 22 nF63V
1 0,06 0,06
2.9 Condensador de poliester de 1 uF63V
1 0,21 0,21
2.10 Condensador ceràmic de 220 pF 1 0,08 0,082.11 Diode 1N4148 1 0,02 0,022.12 Optoacoplador Led Fototransistor
CNY172 0,72 1,44
2.13 Regleta de 2 terminals per soldar enplaca
1 0,44 0,44
2.14 Connector DB9 femella per soldaren placa
1 1,46 1,46
2.15 Resistència de carbó de 1 K, ±5 %de tolerància, 1/4W
6 0,02 0,12
2.16 Resistència de carbó de 10 K, ±5 %de tolerància, 1/4W
19 0,02 0,38
2.17 Resistència variable de 100 K, ajustvertical, 1/2W
1 0,22 0,22
2.18 Resistència de carbó de 10 K, ±1 %de tolerància, 1/4W
6 0,03 0,18
2.19 Resistència de carbó de 20 K, ±1 %de tolerància, 1/4W
6 0,03 0,18
2.20 Resistència de carbó de 22 K, ±5 %de tolerància, 1/4W
1 0,02 0,02
2.21 Resistència de carbó de 6K8, ±5 %de tolerància, 1/4W
2 0,02 0,04
2.22 Resistència de carbó de 4K7, ±5 %de tolerància, 1/4W
4 0,02 0,08
2.23 Resistència de carbó de 33 K, ±5 %de tolerància, 1/4W
1 0,02 0,02
Pressupost
154
2.24 Resistència de carbó de 2M2, ±5 %de tolerància, 1/4W
1 0,02 0,02
2.25 Jumper 2 0,01 0,022.26 Circuit integrat 74HC688 1 0,74 0,742.27 Circuit integrat 74HC573 3 0,52 1,562.28 Circuit integrat 4093 2 0,37 0,742.29 Circuit integrat 74HC138 1 0,4 0,42.30 Circuit integrat 80C31 1 2,06 2,062.31 Circuit integrat 27256 1 3,37 3,372.32 Circuit integrat 74HC574 1 0,67 0,672.33 Circuit integrat LM 324 1 0,35 0,352.34 Circuit integrat LM 358 1 0,42 0,422.35 Cristall de quartz de 12 MHz 1 0,93 0,932.36 Placa de fibra de vidre
presensibilitzada positiva190 cm 0,04 7,60
2.37 Sòcol Dip 8 amb pins tornejats 1 0,33 0,332.38 Sòcol Dip 14 amb pins tornejats 3 0,6 1,82.39 Sòcol Dip 16 amb pins tornejats 1 0,66 0,662.40 Sòcol Dip 20 amb pins tornejats 5 0,91 4,552.41 Sòcol Dip 28 amb pins tornejats 1 0,78 0,782.42 Sòcol Dip 40 amb pins tornejats 1 1,8 1,82.43 Connector DB9 mascle amb carcassa 1 0,88 0,882.44 Connector CI 2,54 per a 10 terminals 1 0,36 0,362.45 Cable de bus amb 8 fils 0,3 m 0,04 0,012.46 Terminals connector CI pas 2,54 8 0,04 0,322.47 Hores de muntatge 30 h 12,00 €/h 360,00
Total de la Placa de Monitoritzacio per PC 397,64
Pressupost
155
6.3.3 Placa Interfície Telefònica
NUM DESCRIPCIÓ UNITATS PREU TOTAL
3.1 Condensador de poliester de 470 nF400 V
2 0,33 0,66
3.2 Condensador electrolitic de 47 uF25 V
1 0,13 0,13
3.3 Condensador de poliester de 2,2 nF63 V
2 0,06 0,12
3.4 Condensador electrolitic de 100 uF25 V
1 0,13 0,13
3.5 Condensador de poliester de 100 nF63 V
1 0,06 0,06
3.6 Condensador electrolitic de 4,7 uF25 V
1 0,13 0,13
3.7 Condensador de poliester de 220 nF63 V
3 0,12 0,36
3.8 Condensador ceràmic de 100 pF 2 0,08 0,163.9 Condensador de poliester de 1 nF
63 V1 0,06 0,06
3.10 Condensador de poliester de 10 nF63 V
1 0,06 0,06
3.11 Pont de diodes B250C1000 2 1,05 2,103.12 Diode 1N4004 1 0,02 0,023.13 Diode Zener de 10 V 1/2W 1 0,05 0,053.14 Optoacoplador Led Fototransistor
CNY171 0,72 0,72
3.15 Regleta de 2 terminals per soldar enplaca
1 0,44 0,44
3.16 Tira de connector CI de 8 terminals 1 0,05 0,053.17 Relé de potencia de dos circuits
commutats i amb la resistència de labobina de 56Ω
1 3,46 3,46
3.18 Transistor darlington BDX 53 TO220 1 1,05 1,053.19 Resistència de carbó de 39 K, ±5 %
de tolerància, 1/4W1 0,02 0,02
3.20 Resistència de carbó de 22 K, ±5 %de tolerància, 1/4W
1 0,02 0,02
3.21 Resistència de carbó de 2K2, ±5 %de tolerància, 1/4W
1 0,02 0,02
3.22 Resistència de carbó de 12Ω, ±5 %de tolerància, 1/4W
1 0,02 0,02
3.23 Resistència de carbó de 150Ω, ±5 %de tolerància, 1/4W
1 0,02 0,02
3.24 Resistència de carbó de 470Ω, ±5 %de tolerància, 1/4W
1 0,02 0,02
Pressupost
156
3.25 Resistència de carbó de 10 K, ±5 %de tolerància, 1/4W
2 0,02 0,04
3.26 Resistència de carbó de 120 K, ±5 %de tolerància, 1/4W
1 0,02 0,02
3.27 Resistència de carbó de 3K9, ±5 %de tolerància, 1/4W
1 0,02 0,02
3.28 Resistència de carbó de 390Ω, ±5 %de tolerància, 1/4W
1 0,02 0,02
3.29 Resistència de carbó de 100 K, ±5 %de tolerància, 1/4W
2 0,02 0,04
3.30 Resistència de carbó de 10Ω, ±5 %de tolerància, 1/4W
3 0,02 0,06
3.31 Resistència de carbó de 68 K, ±5 %de tolerància, 1/4W
1 0,02 0,02
3.32 Resistència de carbó de 1K8, ±5 %de tolerància, 1/4W
2 0,02 0,04
3.33 Resistència variable de 47 K, ajustvertical, 1/4W
1 0,22 0,22
3.34 Resistència de carbó de 120Ω, ±5 %de tolerància, 1/4W
1 0,02 0,02
3.35 Resistència de carbó de 820Ω, ±5 %de tolerància, 1/4W
1 0,02 0,02
3.36 Resistència de carbó de 27 K, ±5 %de tolerància, 1/4W
1 0,02 0,02
3.37 Circuit integrat TEA 1061 1 1,32 1,323.38 Placa de fibra de vidre
presensibilitzada positiva57 cm 0,04 €/cm2 2,28
3.39 Sòcol Dip 6 amb pins tornejats 1 0,15 0,153.40 Sòcol Dip 18 amb pins tornejats 1 0,76 0,763.41 Hores de muntatge 3 h 12,00 36,00
Total de la Placa Interfície Telefònica 50,93
Pressupost
157
6.3.4 Placa d’ Entrades
NUM DESCRIPCIÓ UNITATS PREU TOTAL
4.1 Condensador de poliester de 100 nF63 V
3 0,06 0,18
4.2 Regleta de 2 terminals per soldar enplaca
7 0,44 3,08
4.3 Tira de connector CI de 14 terminals 1 0,08 0,084.4 Resistència de carbó de 10 K, ±5 %
de tolerància, 1/4W12 0,02 0,24
4.5 Resistència variable de 10 K, ajustvertical, 1/4W
12 0,22 2,64
4.6 Resistència de carbó de 22 K, ±5 %de tolerància, 1/4W
12 0,02 0,24
4.7 Resistència variable de 470 K, ajustvertical, 1/4W
12 0,22 2,64
4.8 Circuit integrat LM 324 3 0,35 1,054.9 Placa de fibra de vidre
presensibilitzada positiva138 cm 0,04 5,52
4.10 Sòcol Dip 14 amb pins tornejats 3 0,60 1,804.11 Hores de muntatge 3 h 12,00 36,00
Total de la Placa d’ Entrades 53,47
Pressupost
158
6.3.5 Programa ASM per la Placa de Monitoritzacio
NUM DESCRIPCIÓ UNITATS PREU TOTAL
5.1 Hores de programació 80 h 16 €/h 1.280,00Total del Programa 1.280,00
6.3.6 Programa ASM per la Placa de Monitoritzacio per PC
NUM DESCRIPCIÓ UNITATS PREU TOTAL
6.1 Hores de programació 80 h 16 €/h 1.280,00Total del Programa 1.280,00
6.3.7 Programa Visual Basic
NUM DESCRIPCIÓ UNITATS PREU TOTAL
7.1 Hores de programació 120 h 16 €/h 1.920,00Total del Programa 1.920,00
6.3.8 Disseny de Prototipus
NUM DESCRIPCIÓ UNITATS PREU TOTAL
8.1 Hores d’ investigació 180 h 20 €/h 3.600,00Total del Programa 3.600,00
Pressupost
159
6.4 Resum del Pressupost
El preu dels diferents components i materials, poden variar el seu preu degut a lescondicions de mercat o segons el proveï dor.
El preu inclou els components i el muntatge. En aquest pressupost no s’ incloul’ ordinador que ha d’ anar a la central, el qual es necessari per fer anar la placa demonitoritzacio per PC i el programa Gestió Remota 1.0.
Tampoc inclou el preu de la font d’ alimentació, en el cas que fos necessari degut aque les plaques que van a la maquina dispensadora no la poden aconseguir de la mateixa.
6.4.1 Pressupost d’ Execució
6.4.1.1 Preu Base PC
DESCRIPCIÓ UNITATS PREU TOTAL
Placa de monitoritzacio per PC 1 397,64 397,64Placa interfície telefònica 1 50,93 50,93Programa ASM per la placa de monitoritzacioper PC
1 1.280,00 1.280,00
Programa Visual Basic 1 1.920,00 1.920,00Total 3.648,57
6.4.1.2 Preu per cada Maquina Dispensadora
DESCRIPCIÓ UNITATS PREU TOTAL
Placa de monitoritzacio 1 345,88 345,88Placa interfície telefònica 1 50,93 50,93Placa d’ entrades 1 53,47 53,47Programa ASM per la placa de monitoritzacio 1 1.280,00 1.280,00
Total 1.730,28
6.4.1.3 Total Pressupost d’ Execució
DESCRIPCIÓ UNITATS PREU TOTAL
Preu base PC 1 3.648,57 3.648,57Preu per cada maquina dispensadora 1 1.730,28 1.730,28Preu disseny prototipus 1 3.600,00 3.600,00
Pressupost d’ Execució Material 8.978,85
Pressupost
160
6.4.2 Pressupost d’ Execució per Contracte
Pressupost d’ execució material: 8.978,85
Despeses generals: 13% 1.167,25
Benefici industrial: 6% 538,73
Pressupost d’execució per contracte: 10.684,83
6.4.3 Pressupost de Licitació
Pressupost d’execució per contracte: 10.684,83
IVA : 16% 1.709,57
Pressupost de licitació: 12.394,40
El Pressupost de licitació ascendeix a DOTZE MIL TRES-CENTESNORANTA-QUATRE AMB QUARANTA CÈNTIMS D’ EURO (12.394,40 €).
Tarragona a 30 de gener de 2.002
José Antonio Agraz MillatEnginyer Tècnic en Electrònica Industrial
Plec de Condicions
161
7 Plec de Condicions
Plec de Condicions
162
7.1 Condicions Generals
7.1.1 Introducció
El present projecte desenvolupa un sistema de gestió remota de maquinesdispensadores via línia telefònica.
Donada la condició de “Final de carrera” del projecte, les consideracions de tipuscontractual posseeixen un caràcter de suposició.
El present plec de Condicions té per objecte definir al contractista l’ abast del treballi de la seva execució quantitativa.
L’ abast del treball del Contractista inclou el disseny i preparació de tots els plànols,diagrames, llista de material i requisits per l’ adquisició i instal·lació del treball.
7.1.2 Reglament i Normes
Totes les unitats d’ obra s’ executaran complint les prescripcions indicades alsReglaments de Seguretat i Normes Tècniques d’ obligat compliment per aquest tipusd’ instal·lació, tant d’ àmbit nacional, autonòmic com municipal, així com totes les altresestablertes al projecte.
S’ adaptaran a mes, a les presents condicions particulars que complementaran lesindicades pels Reglaments i Normes citades.
7.1.3 Materials
Tots els materials emprats seran de primera qualitat, compliran les especificacions itindran les característiques indicades al projecte i a les normes tècniques generals.
Tota especificació o característica de materials que figurin en un sol dels documentsdel Projecte, tot i que no figuri als altres, es igualment obligatòria.
En cas d’ existir contradicció o omissió als documents del projecte, el contractistaobtindrà l’ obligació de posar-ho de manifest al tècnic Director de l’ obra, qui decidiràsobre el particular. En cap cas podrà suplir la falta directament, sense l’ autoritzacióexpressa.
Plec de Condicions
163
No es podran emprar materials que no hagin estat acceptats pel director Tècnic.
7.1.4 Execució del Projecte
Començament. El contractista donarà començament al projecte en el plaç que hifiguri al contracte establert amb la Propietat o , en el seu defecte, als quinze deies del’ adjudicació definitiva de l’ obra.
El contractista esta obligat a notificar per escrit al Tècnic director la data d’ inici delstreballs.
Plaç d’ execució. L’ obra s’ executarà en el plaç que s’ estipuli al contracte subscritamb la propietat o en el seu defecte en el que figuri a les condicions d’ aquest Plec.
Quan el ritme de treball establert pel contractista, no sigui el normal, o be a peticiód’ una de les parts, es podrà convenir una programació d’ inspeccions obligatòries d’ acordamb el pla d’ obra.
Llibre d’ ordres. El contractista disposarà durant la realització del projecte d’ unLlibre d’ Ordres en que s’ escriuran les que el Tècnic Director estimi donar-li a traves del’ encarregat o persona responsable, sense perjudici de les que doni per ofici quan hocregui necessari i que tindrà l’ obligació de signar l’ assabentat.
7.1.5 Interpretació i Desenvolupament
El Director Tècnic es la persona a que li correspon interpretar els documents delprojecte, a ell se li ha de sotmetre qualsevol dubte, aclaració o contradicció que sorgeixidurant l’ execució de l’ obra, sempre amb la suficient antelació en funció de la importànciade l’ assumpte.
El contractista es fa responsable de qualsevol error de l’ execució motivat per la noconsulta i conseqüentment haurà de refer a costa seva els treballs que corresponguin a lacorrecta interpretació del projecte.
El contractista ha de fer tot el necessari per la bona execució de l’ obra, encara queno s’ hagi expressat al projecte.
Plec de Condicions
164
El contractista ha de notificar per escrit o personalment al director d’ obra, les datesen que quedaran preparades per inspecció, cadascuna de les parts del projecte o peraquelles que, totalment o parcialment hagin, posteriorment, de quedar ocultes.
7.1.6 Treballs Complementaris
El contractista ha de realitzar tots els treballs complementaris necessaris per executarel projecte tal i com estava previst, encara que en ell no figurin explícitament aqueststreballs complementaris. Tot això sense variació de l’ import contractat.
7.1.7 Modificacions
El contractista esta obligat a realitzar les variacions ( ampliacions, reduccions omodificacions ) del projecte sempre que aquestes no suposin una variació sobre el globalprojectat superior al 25 %.
Si el contractista, desitja realitzar alguna modificació, ho haurà de notificar per escrital Tècnic Director, si es considera raonable i s’ accepta, serà confirmada per escrit, aixícom les noves condicions econòmiques que mútuament s’ acordin. Si l’ anterior no esdona com s’ especifica, no s’ acceptarà modificació alguna.
La valoració es farà d’ acord amb els valors establerts al pressupost pel Contractista ique ha estat pres com a base del contracte.
7.1.8 Realització Defectuosa
Quan el contractista trobi qualsevol unitat de treball que no s’ ajusti a l’ especificat alprojecte o en aquest Plec de Condicions, el Tècnic Director podrà acceptar-la o refusar-la,en el primer cas, aquest fixarà el preu que cregui just per arreglar les diferencies que hihaguessin, estan obligat el Contractista a acatar aquesta valoració, en l’ altra cas, esreconstruirà a expenses del Contractista la part mal executada sense que sigui motiu dereclamació econòmica o d’ ampliació del plaç d’ execució.
Plec de Condicions
165
7.1.9 Mitjans Auxiliars
Seran de compte del Contractista tots els mitjans i maquines auxiliars que siguinprecises per l’ execució del projecte. En el seu us estarà obligat a fer complir tots elsReglaments de Seguretat en el treball vigents i a utilitzar els mitjans de protecció als seusoperaris.
7.1.10 Recepció del Projecte
Recepció provisional. Un cop acabats els treballs, tindrà lloc la recepció provisionali per això es practicarà en ells un detingut reconeixement pel tècnic Director i la Propietaten presencia del Contractista, aixecant acta i començant a córrer des d’ aquell dia el plaç degarantia si es troben en estat d’ ésser admesos.
De no ser admesos es farà constar a l’ acta i es donaran instruccions al Contractistaper subsanar els defectes observats, fixant-se per tal un plaç, expirat el qual es procedirà aun nou reconeixement a fi de procedir a la recepció provisional.
Plaç de garantia. El plaç de garantia serà com a mínim d’ un any, comptant des dela data de recepció provisional, o be el que s’ estableixi al contracte també comptant desde la mateixa data. Durant aquest període queda a càrrec del Contractista la conservaciódel sistema i reparació dels desperfectes, si be subsistiran les responsabilitats que hi puguitenir per defectes i deficiències de causa dubtosa.
7.1.11 Responsabilitats
El contractista es responsable de l’ execució dels treballs com fixa el projecte i hauràde reconstruir tota part que no s’ ajusti al programa, sense servir d’ excusa la raó de que eldirector d’ obra hagi examinat i reconegut l’ obra.
El contractista es l’ únic responsable de les possibles errades comeses per ell o el seupersonal, així com dels accidents produï ts a la propietat, veï ns o tercers a causa de lainexperiència o mètodes inadequats.
El contractista es l’ únic responsable de l’ incompliment de les disposicions vigentsen matèria laboral respecte del seu personal i, per tant, els accidents que poguessinsobrevindré i els drets que d’ ells se’ n poguessin derivar.
Plec de Condicions
166
7.1.12 Fiança
Al contracte s’ establirà la fiança que el contractista haurà de dipositar en garantiadel seu compliment, o es convindrà una retenció sobre els pagaments realitzats a comptedel treball executat.
De no estipular-se la fiança al contracte s’ entén que s’ adopta com a garantia unaretenció del 5 % sobre els pagaments a compte citats.
En el cas de que el contractista es negues a fer pel seu compte els treballs per ultimarel projecte en les condicions contractades, o a atendre la garantia, la Propietat podràordenat executar-les a un tercer, abonant el seu import amb càrrec a la retenció o fiança,sense perjudici de les accions legals a que tingui dret la Propietat si amb l’ import de lafiança no hi hagués prou.
La fiança retinguda s’ abonarà al contractista en un plaç no superior a trenta dies uncop signada l’ acta de recepció definitiva de l’ obra.
7.2 Condicions Tècniques
7.2.1 Condicions de les Plaques de C.I.
Les plaques del circuit imprès hauran d’ ésser dissenyades pel fabricant sota lessegüents normes:
§ Amplada de les pistes de senyal. 0.5 mm.
§ Amplada de les pistes alimentació: 2 mm.
§ Els condensadors de desacoblament hauran d’ anar situats els mes a proppossible del piu d’ alimentació.
§ Dimensions dels taladres:
• 0.85 mm pels circuits integrats i components discrets.
• 1 mm pels connectors.
• 1.25 mm per les regletes.
• 3 mm pels taladres de subjecció de la placa.
Totes les plaques un cop sortides de producció hauran d’ ésser testades, de tal formaque l’ índex d’ errades en pistes, sigui inferior a l’ 1%.
Plec de Condicions
167
7.2.2 Condicions del Components Electrònics
La premissa bàsica a seguir en la compra dels components electrònics, es buscarcomponents de marques de reconegut prestigi i que posseeixin un índex de rebuig enproducció, inferior al 20 %.
Així per exemple, es recomana la utilització de components de la casa MOTOROLAo qualsevol de les seves subsidiàries ( RCA. AMD ) que fins avui han demostrat un moltalt grau de fiabilitat dels components subministrats.
No es recomana recórrer sota cap concepte a les plèiades de fabricant d’ orient quehan sorgit a Corea, Singapur, Malàisia, etc., ja que en anteriors produccions han posat demanifest un baixíssim grau de fiabilitat, donant-se el cas de trobar partides enceres decomponents que als 6 mesos de funcionament han fallat íntegrament.
7.2.3 Condicions del Muntatge de Plaques
El muntatge de plaques haurà d’ ésser realitzat per inserció automatitzada, ja quel’ índex d’ errors es pràcticament nul, no així quan es recorre al muntatge manual decomponents.
La soldadura del les plaques ha d’ ésser realitzada per onada, amb estany de bonaqualitat i un cop finalitzat el procés, les plaques han d’ estar perfectament netejades ambalgun producte específic basat en fluor, dels molts que hi ha disponibles al mercat.
De cada partida de plaques produï des, al menys 10 d’ elles hauran d’ ésserverificades en un forn a 40 graus centígrads i en funcionament de tal forma que s’ elsproporcioni l’ equivalent a 6 mesos de funcionament ininterromput durant les proves, siguisuperior al 20 %, la partida sencera haurà d’ ésser retirada i substituï da per una de nova.
Plec de Condicions
168
7.3 Condicions Facultatives
7.3.1 Normes a Seguir
El disseny de la instal·lació elèctrica estarà d’ acord amb les exigències orecomanacions exposades a l’ ultima edició dels següents codis:
§ Reglament Electrotècnic de Baixa Tensió i Instruccions complementaries.
§ Normativa UNE.
§ Normativa DIN.
§ Pla nacional i ordenança general de Seguretat i Higiene al treball.
§ Normes de la Companyia Subministradora.
§ Publicacions del Comitè Electrotècnic Internacional ( CEI ).
§ Allò indicat en aquest plec de condicions amb preferència a tots els codis inormes.
7.3.2 Personal
El Contractista tindrà al capdavant de l’ obra un encarregat amb autoritat sobre elsaltres operaris i coneixements acreditats i suficients per l’ execució del projecte.
L’ encarregat rebrà, complirà i transmetrà les instruccions i ordres del TècnicDirector de l’ obra.
El contractista tindrà el nombre i classe d’ operaris que facin falta pel volum inaturalesa dels treballs que es realitzin, els quals seran de reconeguda aptitud iexperimentats en els treballs que es realitzin, els quals seran de reconeguda aptitud iexperimentats en l’ ofici. El Contractista estarà obligat a separar de la realització delprojecte, a aquell personal que, a judici del Tècnic Director, no compleixi amb les sevesobligacions, realitzi el treball defectuosament, be per falta de coneixements o per obrar demala fe.
Plec de Condicions
169
7.3.3 Reconeixements i Assajos Previs
Quan així sigui estimat oportú pel Tècnic director, aquest podrà encarregar i ordenarl’ anàlisi, assaig o comprovació dels materials, elements o instal·lacions, be sigui a lafabrica d’ origen, laboratoris oficials o a la mateixa obra, segons cregui mes convenient,encara que aquests no estiguin indicats en aquest plec.
En els cas de discrepància, els assajos o proves s’ efectuaran al laboratori oficial queel Tècnic Director d’ obra designi.
Les despeses ocasionades per aquestes proves i comprovacions, aniran a compte delContractista.
7.3.4 Assajos
Abans de la posada en servei del sistema elèctric, el Contractista haurà de fer elsassajos adequats per provar, per la sencera satisfacció del Tècnic Director del projecte, quetot l’ equip, aparells i cablejat han estat instal·lats correctament d’ acord amb les normesestablertes i estan en condicions satisfactòries pel seu funcionament.
7.3.5 Assajos d’ Aparellatge
Abans de posar l’ aparellatge sota tensió, es mesura la resistència d’ aï llament decada equip entre fase i terra.
Les mesures han de repetir-se amb els interruptors en posició de funcionament.
Tot relé de protecció que sigui ajustable serà calibrat i assajat, fent servir uncomptador de cicles, caixa de carrega, amperímetre i voltímetre, segons es necessiti.
Es disposarà, en la mesura del possible, d’ un sistema de protecció selectiva. D’acord amb això, els relés de protecció s’ escolliran i coordinaran per aconseguir un sistemaque permeti actuar primer el dispositiu d’ interrupció mes proper a la falta.
Tots els interruptors automàtics es col·locaran en posició de prova i cada interruptorserà tancat i disparat des del seu interruptor de control. Els interruptors hauran d’ ésserdisparats per accionament manual i aplicant corrent als relés de protecció. Es comprovarantots els enclavaments.
Plec de Condicions
170
7.4 Condicions Econòmiques
7.4.1 Preus
El contractista presentarà, al formalitzar-se el contracte, relació dels preus de lesunitats de treball que integren el projecte, els quals d’ ésser acceptats tindran valorcontractual i s’ aplicaran a les possibles variacions que hi puguin haver.
Aquest preus unitaris, s’ entén que comprenen l’ execució total de la unitat delprojecte, incloent tots els treballs fins i tot els complementaris i els materials així com lapart proporcional d’ imposició fiscal, les carregues laborals i altres depeses repercutibles.
En cas d’ haver de realitzar-se unitats de treball no previstes al projecte, es fixarà elseu preu entre el Tècnic Director i el Contractista abans d’ iniciar la obra i es presentarà ala propietat per la seva acceptació o no.
7.4.2 Abonament del Projecte
El contracte s’ haurà de deixar detalladament la forma i plaços en que s’ abonaran lesparts del projecte. Les liquidacions parcials que puguin establir-se tindran caràcter dedocuments provisionals a bon compte, subjecte a les certificacions que resultin de laliquidació final. No suposant, aquestes liquidacions, aprovació ni recepció de les obres quecomprenen.
Acabades les obres es procedirà a la liquidació final que s’ efectuarà d’ acord amb elscriteris establerts al contracte.
7.4.3 Revisió de Preus
Al contracte s’ establirà si el contractista te dret a revisió de preus i la formula aaplicar per calcular-la. En defecte d’ aquesta ultima, s’ aplicarà a judici del Tècnic Directoralgun dels criteris oficials acceptats.
7.4.4 Penalitzacions
Per retràs en els plaços d’ entrega de les obres, es podrà establir taules depenalitzacio i les seves quanties i demores es fixaran al contracte.
Plec de Condicions
171
7.4.5 Contracte
El contracte es formalitzarà mitjançant un document privat, que podrà elevar-se aescriptura a petició de qualsevol de les parts. Comprendrà l’ adquisició de tots elsmaterials, transport, ma d’ obra, mitjans auxiliars per l’ execució de l’ obra projectada en elplaç estipulat, així com la reconstrucció de les unitats defectuoses, la realització de lesobres complementaries i les derivades de les modificacions que s’ introdueixin durant l’execució, aquestes ultimes en els termes previstos.
La totalitat dels documents que componen el Projecte tècnic de l’ obra seranincorporats al contracte i tant el contractista com la Propietat hauran de signar-los entestimoni de qui els coneixen i accepten.
7.4.6 Rescissió del Contracte
Causa de rescissió: Es consideren causes suficients per la rescissió del contracte lessegüents:
1. Mort o incapacitació del Contractista.
2. El trenc del contractista.
3. Modificació del projecte quan es produeixi alteració en mes o menys el 25 % delvalor contractat.
4. Modificació de les unitats d’ obra en nombre superior al 40 % de l’ original.
5. La no iniciació dels treballs en el plaç estipulat quan sigui per causes alienes a lapropietat.
6. La suspensió de les obres ja iniciades sempre que el plaç de suspensió siguisuperior a 6 mesos.
7. Incompliment de les condicions del Contracte quan impliqui mala fe.
8. Acabament del plaç d’ execució d’ obra sense haver arribat a completar aquesta.
9. Actuació de mala fe en l’ execució dels treballs.
10. Delegar o subcontractar la totalitat o part dels treballs a tercers sensel’ autorització del Tècnic Director i de la propietat.
Plec de Condicions
172
7.4.7 Liquidació en cas de Rescissió del Contracte
Sempre que es rescindeixi el contracte per causes anteriors o be per acordd’ ambdues parts, s’ abonarà al Contractista les unitats del projecte executat i els materialsarreplegats que reuneixen les condicions i siguin necessaris pel mateix.
Quan es rescindeixi el contracte portarà implícit la retenció de la fiança per obtenirles possibles despeses de conservació del període de garantia i els derivats delmanteniment fins la data de nova adjudicació.
Tarragona a 30 de Gener de 2002
José Antonio Agraz Millat
Enginyer Tècnic Electrònica Industrial
173
8 Resum del Projecte
174
Gestió Remota per Línia Telefònica deMaquines Dispensadores Automàtiques
AUTOR: José Antonio Agraz MillatDIRECTOR: Jesús Brezmes Llecha
Resum. En aquest projecte s’ ha dissenyat un sistema de baix cost per la gestióremota per línia telefònica de maquines dispensadores automàtiques. Esta composatper un equip situat en la central de l’ empresa i un conjunt de maquines dispensadoresautomàtiques que quan falta algun producte ho comuniquen a la central mitjançant lalínia telefònica. Des de la central, amb el programa Gestió Remota, es reben lesalarmes i es pot interrogar a les maquines per saber com es troben i així el tècnic demanteniment pot planificar el seu treball i estalviar-se desplaçaments innecessaris. Lacentral està formada per un PC, el programa Gestió Remota i dos mòduls, una placaper bus ISA i una placa interfície telefònica. En les maquines dispensadores hi ha tresmòduls: una placa de monitorització, una placa d’ entrades i una placa d'interfícietelefònica. Els mòduls de les maquines i el de la central es troben interconnectats atraves de la línia telefònica.
Titulació: Enginyer Tècnic Electrònica Industrial
Data Presentació: ( Febrer – 2002 ).
Annexes
175
9 Annexes
Annexes
176
9.1 Llistats de Programes
9.1.1 Programa ASM Placa Monitoritzacio
;USES 8031
;FLAGS
FLAG_P14 EQU 0FLAG_P15 EQU 1ID EQU 2POSICIO_PAR EQU 3FINAL EQU 4CRC_OK EQU 5TRAMA_OK EQU 6PAGINA2 EQU 7
;CONSTANTS
SEGON EQU 200MS_5 EQU 139MINUT EQU 60
;TEMPS EN MINUTS, ENTRE INTENTS PER TORNAR A TRUCAR,;DESPRÉS D' UNA CONNEXIÓ ERRÒNIA
MINUTS EQU 1INTENTS_TRUCADA EQU 3TIMEOUTS EQU 1RECEPCIO_OK EQU 0EMISSIO_OK EQU 0NO_DATA EQU 80HNO_TRAMA_END EQU 40HSEGONS_2 EQU 40SEGONS_3 EQU 60SEGONS_10 EQU 200SEGONS_12_8 EQU 0MAX_TIMEOUTS EQU 10L_TRAMA EQU 5L_TRAMA-2 EQU 3L_TRAMA_DATA EQU 8L_TRAMA_D-2 EQU 6HEADER_ACK EQU 3HEADER_DATA EQU 1HEADER_END EQU 4NUM_FINAL EQU 10
Annexes
177
;NUMERO DE LECTURES CONSECUTIVES DE LES;ENTRADES QUE S' HAN DE FER PERQUÈ ES;CONSIDERI COM A VALIDA. SI ES FICA 0,;SON 256
NUM_LECTURES EQU 0
;VARIABLES O PUNTERS
ID_EPROM EQU 700HTELEFON_EPROM EQU 702HCONTADOR EQU 31HTIMER1 EQU 32HTIMER2 EQU 33HTIMER3 EQU 34HTIMER4 EQU 35H
;EN AQUESTES POSICIONS DE MEMÒRIA ES GUARDEN;ELS VALORS DE LES ENTRADES
ENTRADES_LSB EQU 36HENTRADES_MSB EQU 37H
;INDICA SI S' HA DE TORNAR A TRUCAR DESPRÉS;D' UNA CONNEXIÓ FALLIDA
ERROR_TRUCADA EQU 38HSTATUS EQU 39H
;EN AQUESTES POSICIONS DE MEMÒRIA ES GUARDA;L' IDENTIFICADOR DE LA PLACA
IDH EQU 59HIDL EQU 5AHBUF_EMISSIO EQU 6DHBUF_RECEPCIO EQU 75HEND_BUFFER EQU 7DHEND_BUFFER_E EQU 7EHEND_BUFFER_R EQU 7FHBUFFER_AUX EQU 40HEND_BUF_R_A EQU 7AH ;BUF_RECEPCIO + L_TRAMAEND_BUF_R_D EQU 7DH ;BUF_RECEPCIO + L_TRAMA_DATAEND_BUF_E_A EQU 70H ;BUF_EMISSIO + L_TRAMA-2END_BUF_E_D EQU 73H ;BUF_EMISSIO + L_TRAMA_D-2NUMTRAMA EQU 76H ;BUF_RECEPCIO + 1BUFFER_ID EQU 59HBUFFER_N_TEL EQU 5BHLIMIT_IDENT EQU 5BHLIMIT_N_TEL EQU 6DH
Annexes
178
;INDICA QUIN ES EL NUMERO MES GRAN QUE ES POT ADMETRE;QUAN S' INTRODUEIX L' IDENTIFICADOR ( 9 ) O EL NUMERO;DE TELÈFON ( 10 )
LIMIT_DIGIT EQU 30H
ORG 0000HLJMP INICI
;RSI INTERRUPCIÓ EXTERNA INT0
ORG 0003H;POWERDOWNORL PCON,#02RETI
;TAULA DE DADES NECESSÀRIA PER GENERAR;ELS TONS DTMF
ORG 0020HDB 1CH,0FFH,2AH,1EHDB 1CH,0B2H,38H,21HDB 1CH,0FFH,38H,1EHDB 1CH,0D2H,38H,1BHDB 53H,0B2H,33H,21HDB 53H,0FFH,33H,1EHDB 53H,0D2H,33H,1BHDB 85H,0B2H,2EH,21HDB 85H,0FFH,2EH,1EHDB 85H,0D2H,2EH,1BH
INICI:
;INT0 PER NIVELL BAIXMOV TCON,#00
;HABILITAR INT0MOV IE,#81H
;INICIALITZACIONS
LCALL PENJAR
;INICIALITZACIO CONVERSORS D/A I PIU PORTADORA ( PE )MOV A,#6EHMOVX @R0,A
MOV ERROR_TRUCADA,#0MOV ENTRADES_LSB,#0MOV ENTRADES_MSB,#0
MOV CONTADOR,#NUM_LECTURES
Annexes
179
;SI DESPRÉS D' UN RESET, ES POLSA ELS DOS;POLSADORS, LLAVORS NO ES CARREGA EL ID NI;EL NUMERO DE TELÈFON QUE ES TROBA A LA;MEMÒRIA EPROM ( S' UTILITZA PER TAL DE;REALITZAR PROVES )
JNB P1.4,MIRAR_EPROMJNB P1.5,MIRAR_EPROMLJMP FI_COMPROVACIO
;COMPROVA SI L' IDENTIFICADOR O EL;NUMERO DE TELÈFON ES TROBEN A LA;MEMÒRIA EPROM O MEMÒRIA DE PROGRAMA
MIRAR_EPROM:
MOV DPTR,#ID_EPROMMOV A,#0MOVC A,@A+DPTRMOV R0,AMOV A,#1MOVC A,@A+DPTRMOV R1,AORL A,R0JZ COMPROVAR_TELEFONMOV IDH,R0MOV IDL,R1
COMPROVAR_TELEFON:MOV A,#2MOVC A,@A+DPTRCJNE A,#0AH,CARREGAR_TELEFONLJMP FI_COMPROVACIO
CARREGAR_TELEFON:MOV R0,#0MOV R1,#BUFFER_N_TELMOV DPTR,#TELEFON_EPROM
BUCLE_CARREGA_TELEFON:MOV A,R0MOVC A,@A+DPTRMOV @R1,AINC R0INC R1CJNE A,#0AH,BUCLE_CARREGA_TELEFON
FI_COMPROVACIO:
Annexes
180
;PROGRAMA PER INTRODUIR EL NUMERO DE TELÈFON EN LA;MEMÒRIA DEL MICROCONTROLADOR. IMPLEMENTA UN;SISTEMA ANTIRREBOT PER SOFTWARE PER ALS POLSADORS;D' ENTRADA.
;PER DETERMINAR QUIN ES L' ÚLTIM NUMERO QUE S'HA;INTRODUÏT, S' UTILITZA EL CODI NUMERO 10 O 0AH;PER INDICAR EL FINAL.
;ELS POLSADORS ES TROBEN CONNECTATS EN ELS BITS P1.4 I P1.5;P1.4 ES EL POLSADOR QUE INCREMENTA EL NUMERO, TAMBÉ ES QUI;INDICA QUE S'HA D'INTRODUIR EL NUMERO DE TELÈFON.;P1.5 ES EL POLSADOR QUE DESPLAÇA ELS DÍGITS, TAMBÉ ES QUI;INDICA QUE S'HA D'INTRODUIR L' IDENTIFICADOR DE LA PLACA.
;DESACTIVA EL DISPLAYLCALL DISABLE_7SEG
;INICIALITZACIO DEL ÍNDEX QUE SERVEIX PER ACCEDIR;ON ES GUARDA EL NUMERO DE TELÈFON
MOV R0,#BUFFER_N_TEL
;REGISTRE ÍNDEX P1.4 = 1MOV R4,#00H
;REGISTRE ÍNDEX P1.4 = 0MOV R5,#00H
;REGISTRE ÍNDEX P1.5 = 1MOV R6,#00H
;REGISTRE ÍNDEX P1.5 = 0MOV R7,#00H
MOV R1,#00HMOV R2,#00HMOV R3,#00HMOV LIMIT_DIGIT,#11
;INICIALITZACIONS
SETB POSICIO_PARCLR ID
Annexes
181
;DURANT UN CERT TEMPS, ESPERA L' ORDRE PER INTRODUIR;L' IDENTIFICADOR O EL NUMERO DE TELÈFON
BUCLE_ESP_INTRO:
JB P1.4,INI_DISPLAYJNB P1.5,NO_IDSETB ID
;INICIALITZACIO DEL ÍNDEX QUE SERVEIX PER ACCEDIR;ON ES GUARDA L' IDENTIFICADOR DE LA PLACAMOV R0,#BUFFER_ID
;QUAN S' INTRODUEIX EL ID LLAVORS, HA DE VALDRÉ 10MOV LIMIT_DIGIT,#10
INI_DISPLAY:
CLR ALCALL VISU_7SEGLCALL DELAY_PULSADOR_ACTIVATLJMP P14
NO_ID:NOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOP
Annexes
182
NOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPDJNZ R3,BUCLE_ESP_INTROMOV R3,#00HDJNZ R2,BUCLE_ESP_INTROLJMP VISUA_ID
;LECTURA DELS POLSADORS AMB EL SISTEMA ANTIRREBOTS
P14:JNB P1.4,P15
;ESBORRA ÍNDEX P1.4 = 0
MOV R5,#00HJB FLAG_P14,P15
;INCREMENTA ÍNDEX P1.4 = 1
INC R4CJNE R4,#255,P15
;SI ESTA PITJAT EL POLSADOR DE DESPLAÇAMENT;LLAVORS NO S' INCREMENTA ELS DÍGITS
JB FLAG_P15,P15
Annexes
183
;ACTIVA EL FLAG_P14 QUE INDICA QUE EL;POLSADOR DEL BIT P1.4 ESTA ACTIVAT
SETB FLAG_P14
;INCREMENTA LA XIFRAINC R1MOV A,R1CJNE A,LIMIT_DIGIT,P15MOV R1,#00H
;QUAN ES TRACTA DEL ID NO S' HA DE PERMETRE;INTRODUIR UN 10 EN R1
P15:MOV A,R1LCALL VISU_7SEG
JNB P1.5,ESBORRA_FLAG_P14
;ESBORRA ÍNDEX P1.5 = 0
MOV R7,#00HJB FLAG_P15,ESBORRA_FLAG_P14
;INCREMENTA ÍNDEX P1.4 = 1
INC R6CJNE R6,#255,ESBORRA_FLAG_P14
;ACTIVA EL FLAG_P15SETB FLAG_P15
CLR ALCALL VISU_7SEG
;DEPENEN DEL FLAG ID, ES REALITZA LA CARREGA DEL ID;O DEL NUMERO DE TELÈFON
JNB ID,NUM_TELEFON
;L' IDENTIFICADOR ( ABCD ) ES GUARDA D' AQUESTA FORMA;EN IDH AB;EN IDL CD
JNB POSICIO_PAR,POS_INPARMOV A,R1SWAP AMOV @R0,ACLR POSICIO_PARLJMP LIMIT_ID
Annexes
184
POS_INPAR:
;TRANSFEREIX R1 A LA MEMÒRIA ON ES GUARDA EL ID
MOV A,R1ORL A,@R0MOV @R0,AINC R0SETB POSICIO_PAR
LIMIT_ID:
;FICA A ZERO LA XIFRA QUE ES VISUALITZA
MOV R1,#00H
CJNE R0,#LIMIT_IDENT,ESBORRA_FLAG_P14
;DESACTIVACIO DEL DISPLAY
LCALL DISABLE_7SEGLJMP VISUA_ID
NUM_TELEFON:
;TRANSFEREIX R1 A LA MEMÒRIA ON ES GUARDA EL TELÈFON
MOV @R0,01H
;PASSA AL SEGÜENT DÍGIT
INC R0
;SI ES EL FINAL DEL NUMERO DE TELÈFON, LLAVORS EL VISUALITZA
CJNE R1,#NUM_FINAL,LIMIT_TEL
;DESACTIVAR DISPLAY
LCALL DISABLE_7SEGLJMP VISUA_ID
LIMIT_TEL:
;FICA A ZERO LA XIFRA QUE ES VISUALITZA
MOV R1,#00H
CJNE R0,#LIMIT_N_TEL,ESBORRA_FLAG_P14
;DESACTIVACIO DEL DISPLAY
LCALL DISABLE_7SEG
Annexes
185
LJMP VISUA_ID
ESBORRA_FLAG_P14:JB P1.4,ESBORRA_FLAG_P15
;ESBORRA ÍNDEX P1.4 = 1
MOV R4,#00H
;INCREMENTA ÍNDEX P1.4 = 0
INC R5CJNE R5,#255,ESBORRA_FLAG_P15
;ESBORRA FLAG_P14
CLR FLAG_P14
ESBORRA_FLAG_P15:JB P1.5,P14
;ESBORRA ÍNDEX P1.5 = 1
MOV R6,#00H
;INCREMENTA ÍNDEX P1.5 = 0
INC R7CJNE R7,#255,P14
;ESBORRA FLAG_P15
CLR FLAG_P15LJMP P14
VISUA_ID:
;ES CARREGA R0 AMB LA POSICIÓ DE MEMÒRIA;QUE APUNTA AL COMENÇAMENT DEL BUFFER ON;ES GUARDA EL ID
MOV R0,#BUFFER_IDLCALL DELAY
BUCLE_VISU_ID:
MOV A,@R0SWAP A
LCALL VISU_7SEGLCALL DELAY
Annexes
186
;DESACTIVACIO DEL DISPLAY
LCALL DISABLE_7SEGLCALL DELAY
MOV A,@R0LCALL VISU_7SEGLCALL DELAY
;DESACTIVACIO DEL DISPLAY
LCALL DISABLE_7SEGLCALL DELAY
INC R0
CJNE R0,#LIMIT_IDENT,BUCLE_VISU_ID
VISUA:
;ES CARREGA R0 AMB LA POSICIÓ DE MEMÒRIA;QUE APUNTA AL COMENÇAMENT DEL BUFFER ON;ES GUARDA EL NUMERO DE TELÈFON
MOV R0,#BUFFER_N_TELLCALL DELAY
BUCLE_VISU:MOV A,@R0INC R0CJNE A,#NUM_FINAL,LIMIT_TEL2LJMP FI_VISU
LIMIT_TEL2:
LCALL VISU_7SEGLCALL DELAY
;DESACTIVACIO DEL DISPLAY
LCALL DISABLE_7SEGLCALL DELAY
CJNE R0,#LIMIT_N_TEL,BUCLE_VISU
FI_VISU:
LJMP BUCLE_CENTRAL
COMPROVAR_ENTRADES:DJNZ CONTADOR,MIRAR_TRUCADAMOV CONTADOR,#NUM_LECTURES
Annexes
187
;ACTUALITZACIÓ DELS VALORS DE LES;ENTRADES EN MEMÒRIA
MOV ENTRADES_LSB,R2MOV ENTRADES_MSB,R3LJMP FER_TRUCADA
BUCLE_CENTRAL:
;MIRA SI HA DE TORNAR A TRUCAR A CAUSA;D' UNA CONNEXIÓ ANTERIOR FALLIDA
MOV A,ERROR_TRUCADAJNZ TEMPORITZADOR
LLEGIR_ENTRADES:
;SI NO S' HA DE TORNAR A TRUCAR, LLAVORS;ES LLEGEIXEN LES ENTRADES
LCALL LLEGIR_ENTRADES_0_7MOV R2,A
LCALL LLEGIR_ENTRADES_8_11MOV R3,A
;REALITZA UNA OPERACIÓ AND AMB EL VALOR;NEGAT DE LES ENTRADES ANTERIORS PER;EVITAR QUE UNA ENTRADA QUE ENCARA ESTA;ACTIVADA FACI QUE TORNI A TRUCAR
MOV A,ENTRADES_LSBXRL A,#0FFHANL A,R2MOV B,A
MOV A,ENTRADES_MSBXRL A,#0FFHANL A,R3ORL A,B
JNZ COMPROVAR_ENTRADESMOV CONTADOR,#NUM_LECTURES
MIRAR_TRUCADA:
LCALL HI_HA_TRUCADAJZ BUCLE_CENTRAL
Annexes
188
REBRE_TRUCADA:
LCALL DESPENJAR
;S' EMET UN POLS DE PORTADORA PER TAL;DE SINCRONITZAR-SE AMB L' ALTRA UNITAT
LCALL DELAY3
;PORTADORA ONMOV A,#66HMOVX @R0,ALCALL DELAY3
;PORTADORA OFFMOV A,#6EHMOVX @R0,A
LCALL DELAY2
LCALL INI_SERIE
;INICI DE LA TRANSMISSIÓ DE DADES
LCALL SERIELCALL PENJAR
;VISUALITZA LA XIFRA QUE INDICA L' ESTAT;DE LA COMUNICACIÓ SÈRIE
PUSH ACCLCALL VISU_7SEGPOP ACC
;VERIFICACIÓ DEL RESULTAT DE LA TRANSMISSIÓ ( 0 OK )
JNZ BUCLE_CENTRAL
;SI HI HAGUT UN ERROR DE CONNEXIÓ, PERÒ POSTERIORMENT,;HA REBUT UNA TRUCADA CORRECTA, LLAVORS S' ESBORRA EL;FLAG D' ERROR_TRUCADA
MOV ERROR_TRUCADA,#0
LJMP BUCLE_CENTRAL
Annexes
189
;DELAY PER OBTINDRÉ EL TEMPS ENTRE TRUCADES;QUAN S' HA PRODUÏT UN ERROR EN LA COMUNICACIÓ;I S' HA DE TORNAR A INTENTAR
TEMPORITZADOR:
INC TIMER1MOV A,TIMER1CJNE A,#MS_5,LLEGIR_ENTRADESMOV TIMER1,#0INC TIMER2MOV A,TIMER2CJNE A,#SEGON,LLEGIR_ENTRADESMOV TIMER2,#0INC TIMER3MOV A,TIMER3CJNE A,#MINUT,LLEGIR_ENTRADESMOV TIMER3,#0INC TIMER4MOV A,TIMER4CJNE A,#MINUTS,LLEGIR_ENTRADESMOV TIMER4,#0
FER_TRUCADA:
;COMPROVACIÓ DEL NUMERO DE TELÈFON
MOV R0,#BUFFER_N_TELCJNE @R0,#NUM_FINAL,HI_HA_TELEFONLJMP MIRAR_TRUCADA
HI_HA_TELEFON:
LCALL DISABLE_7SEGLCALL DESPENJAR
;ES NECESSARI UN PETIT DELAY DESPRÉS DE DESPENJAR,;PER TAL DE PODER TRUCAR
LCALL DELAY
LCALL INI_TRUCADA
LCALL TRUCAR
CLR TR0LCALL INI_TIMER0MOV R7,#0SETB TR0
Annexes
190
;BUCLE DE SINCRONISME AMB LA PORTADORA;SI NO REP RES DINTRE DEL TEMPS PREFIXAT,;DONA PER ACABADA LA CONNEXIÓ AMB ERROR
MOV R2,#0MOV R3,#0
NIVELL_ALT:
JNB TF0,COMPROVAR_NIVELL_ALT:CLR TF0LCALL INI_TIMER0INC R7CJNE R7,#SEGONS_12_8,COMPROVAR_NIVELL_ALT:CLR TR0LJMP NOCON
COMPROVAR_NIVELL_ALT:MOV A,P3JB ACC.0,NIVELL_ALT2INC R2CJNE R2,#255,NIVELL_ALTLJMP NIVELL_BAIX
NIVELL_ALT2:MOV R2,#0LJMP NIVELL_ALT
NIVELL_BAIX:
JNB TF0,COMPROVAR_NIVELL_BAIX:CLR TF0LCALL INI_TIMER0INC R7CJNE R7,#SEGONS_12_8,COMPROVAR_NIVELL_BAIX:CLR TR0LJMP NOCON
COMPROVAR_NIVELL_BAIX:MOV A,P3JNB ACC.0,NIVELL_BAIXINC R3CJNE R3,#255,NIVELL_BAIXLJMP FI_SYNC
NIVELL_BAIX2:MOV R3,#0LJMP NIVELL_BAIX
FI_SYNC:
LCALL DELAY2
Annexes
191
CLR TR0LCALL INI_SERIE
;INICI DE LA TRANSMISSIÓ DE DADES
LCALL SERIELCALL PENJAR
;VISUALITZA LA XIFRA QUE INDICA L' ESTAT;DE LA COMUNICACIÓ SERIE
PUSH ACCLCALL VISU_7SEGPOP ACC
;VERIFICACIÓ DEL RESULTAT DE LA TRANSMISSIÓ ( 0 OK )
JNZ NOCON
;SI HI HAGUT UN ERROR DE CONNEXIÓ, PERÒ POSTERIORMENT,;HA REBUT UNA TRUCADA CORRECTA, LLAVORS S' ESBORRA EL;FLAG D' ERROR_TRUCADA
MOV ERROR_TRUCADA,#0LJMP BUCLE_CENTRAL
NOCON:
LCALL PENJAR
;INICIALITZACIO DEL DELAY ENTRE TRUCADES
MOV TIMER1,#0MOV TIMER2,#0MOV TIMER3,#0MOV TIMER4,#0
;PER DEFECTE, QUAN ES PRODUEIX UN ERROR;EN LA COMUNICACIÓ, ES DISPOSA DE DOS;INTENTS MES
MOV A,ERROR_TRUCADAJNZ DEC_INTENTSMOV ERROR_TRUCADA,#INTENTS_TRUCADA
DEC_INTENTS:DEC ERROR_TRUCADALJMP BUCLE_CENTRAL
Annexes
192
;EN AQUEST BUCLE, S' ESPERA FINS QUE LES ENTRADES;DELS POLSADORS ESTIGUIN A NIVELL BAIX, ABANS DE;PROCEDIR A LA ENTRADA DEL ID O DEL NUMERO DE TELÈFON
DELAY_PULSADOR_ACTIVAT:
;GUARDA ELS REGISTRES R2 I R3 EN LA PILA
PUSH 02HPUSH 03HMOV R2,#00HMOV R3,#00H
MENTRES_PULSADOR_ACTIVAT:
JB P1.4,MENTRES_PULSADOR_ACTIVATJB P1.5,MENTRES_PULSADOR_ACTIVATDJNZ R3,MENTRES_PULSADOR_ACTIVATMOV R3,#00HDJNZ R2,MENTRES_PULSADOR_ACTIVATPOP 03HPOP 02HRET
;DADES NECESSÀRIES PER OBTENIR ELS TONS PER AL SISTEMA DTMFORG 0300H
;1336 HZDB 20H,20H,40H,40H,00H,00H,00H,00H,00H,00H,40HDB 40H,20H,60H,60H,10H,10H,50H,50H,30H,30H,30HDB 30H,30H,50H,50H,10H,10H,60H
;697 HZDB 06H,02H,02H,02H,04H,04H,04H,04H,00H,00H,00HDB 00H,00H,00H,00H,00H,00H,00H,04H,04H,04H,04HDB 02H,02H,02H,06H,06H,06H,01H,01H,01H,01H,05HDB 05H,05H,05H,03H,03H,03H,03H,03H,03H,03H,03HDB 03H,03H,05H,05H,05H,05H,01H,01H,01H,06H,06H
;770 HZDB 06H,02H,02H,02H,04H,04H,04H,00H,00H,00H,00HDB 00H,00H,00H,00H,00H,00H,04H,04H,04H,02H,02HDB 02H,06H,06H,06H,01H,01H,01H,05H,05H,05H,03HDB 03H,03H,03H,03H,03H,03H,03H,03H,03H,05H,05HDB 05H,01H,01H,01H,06H,06H
;852 HZDB 06H,02H,02H,04H,04H,04H,00H,00H,00H,00H,00HDB 00H,00H,00H,00H,04H,04H,04H,02H,02H,02H,06HDB 06H,01H,01H,01H,05H,05H,05H,03H,03H,03H,03HDB 03H,03H,03H,03H,05H,05H,05H,05H,01H,01H,06HDB 06H
Annexes
193
;1209 HZDB 60H,20H,40H,40H,40H,00H,00H,00H,00H,00H,00HDB 40H,40H,20H,20H,60H,10H,10H,50H,50H,50H,30HDB 30H,30H,30H,30H,30H,50H,50H,10H,10H,60H
;1477 HZDB 20H,20H,40H,40H,00H,00H,00H,00H,40H,40H,20HDB 20H,60H,10H,10H,50H,50H,30H,30H,30H,30H,50HDB 50H,10H,10H,60H
ORG 0400H
;1336 HZDB 20H,20H,40H,40H,00H,00H,00H,00H,00H,00H,40HDB 40H,20H,60H,60H,10H,10H,50H,50H,30H,30H,30HDB 30H,30H,50H,50H,10H,10H,60H
;941 HZDB 06H,02H,02H,04H,04H,04H,00H,00H,00H,00H,00HDB 00H,00H,00H,04H,04H,04H,02H,02H,06H,06H,01HDB 01H,05H,05H,05H,03H,03H,03H,03H,03H,03H,03HDB 03H,05H,05H,05H,01H,01H,06H,06H
;S' HA DE SELECCIONAR LA PAGINA2 PER TAL DE LLEGIR;L' INFORMACIÓ NECESSÀRIA PER GENERAR ELS TONS DEL;NUMERO ZERO.
DTMF:PUSH 00JNZ NOPAGINA2SETB PAGINA2
NOPAGINA2:RL ARL AADD A,#020HMOV DPH,#00HMOV DPL,ACLR AMOVC A,@A+DPTRMOV R0,AMOV A,#01MOVC A,@A+DPTRMOV R1,AMOV A,#02MOVC A,@A+DPTRMOV R2,AMOV A,#03MOVC A,@A+DPTRMOV R3,AMOV R4,02HDEC R4
Annexes
194
MOV R5,03HDEC R5MOV DPH,#03HMOV DPL,#00HJNB PAGINA2,TONSMOV DPH,#04HCLR PAGINA2
TONS:DJNZ R2,BUCLE_DTMF3MOV A,R4MOV R2,A
BUCLE_DTMF:DJNZ R3,BUCLE_DTMF4MOV A,R5MOV R3,A
BUCLE_DTMF2:MOV A,R2ADD A,R0MOVC A,@A+DPTRMOV R6,AMOV A,R3ADD A,R1MOVC A,@A+DPTRORL A,006H
;DESACTIVACIO DE LA PORTADORAORL A,#08H
;TREU LES DADES PEL PORT 0, COM SI ES TRACTES;D' ESCRIURE EN RAM EXTERNA
MOVX @R0,AJNB TF0,BUCLE_DTMF5CLR TF0DJNZ R7,TONSPOP 00RET
BUCLE_DTMF3:LJMP BUCLE_DTMF
BUCLE_DTMF4:LJMP BUCLE_DTMF2
BUCLE_DTMF5:NOPLJMP TONS
Annexes
195
PAUSA:
;VALOR QUE HA DE TENIR ELS D/A I EL PIU DE CONTROL;DE LA PORTADORA ( PE )
MOV A,#6EHMOVX @R0,AMOV R7,#02
;DELAY D' UNS 130 MS, BASAT EN EL TIMER 0 ( 65536 uS)
BUCLE_PAUSA:
JNB TF0,BUCLE_PAUSACLR TF0DJNZ R7,BUCLE_PAUSARET
;SUBRUTINA QUE ENVIA UNA TRAMA
ENVIAR:
;DESHABILITA LA RECEPCIÓ DE DADES SÈRIE
CLR RENPUSH 01MOV R1,#BUF_EMISSIO
ENVIAR_BYTE:MOV A,@R1MOV SBUF,AMOV A,R1INC R1JNB TI,$
CLR TIDEC ACJNE A,END_BUFFER_E,ENVIAR_BYTEPOP 01
;HABILITA LA RECEPCIÓ DE DADES SÈRIESETB RENRET
;SUBRUTINA QUE REP UN CARÀCTER
REBRE:JNB RI,RETORNA
;ESBORRA EL FLAG RI
CLR RIMOV A,SBUFMOV @R1,A
Annexes
196
;MIRA EL HEADER DE LA TRAMA PER ESPECIFICAR;EL SEU TAMANY ( 8 BYTES TRAMA DE DADES I 5 BYTES;TRAMA DE ACK )
CJNE R1,#BUF_RECEPCIO,INC_INDEXCJNE A,#HEADER_DATA,INC_INDEX
;ESPECIFICA EL TAMANY DE LA TRAMA DE DADES (8 BYTES)
MOV END_BUFFER_R,#END_BUF_R_DINC_INDEX:INC R1MOV A,R1
RETORNA:RET
;INICIALITZACIO DEL PORT SÈRIE
INI_SERIE:
MOV STATUS,#0
;NUMEROTRAMAMOV R2,#00
;INTENTSMOV R3,#00
;TIMER 0 MODE DE 16 BITS (MODE 1);TIMER 1 MODE DE 8 BITS AMB PRECARREGA (MODE 2)MOV TMOD,#21H
;TIMER PER A OBTINDRÉ "128 BPS"MOV TL1,#00CHMOV TH1,#00CH
;BIT SMOD A 0ANL PCON,#7FH
;ACTIVACIÓ DEL TIMER 1 ( GENERADOR DE BAUDS )SETB TR1
;PORT SÈRIE EN MODE 1 (SM2 = 0), HABILITAR RECEPCIÓ (REN = 0);(RI B0) (TI B1)MOV SCON,#40H
;INICIALITZACIO DELS FLAGS RI I TICLR RICLR TI
Annexes
197
;HABILITAR LA RECEPCIÓSETB REN
RET
;RUTINA QUE S’ ENCARREGA DE LA COMUNICACIÓ DE DADES VIA SÈRIE.;EN L' ACUMULADOR RETORNA COM HA ANAT LA CONNEXIÓ
SERIE:
;PREPARAR TRAMA DE DADES
MOV BUF_EMISSIO,#HEADER_DATA
;NUMERO DE TRAMAMOV BUF_EMISSIO+1,#00H
;MSB IDENTIFICADOR TARGETAMOV A,IDHMOV BUF_EMISSIO+2,A
;LSB IDENTIFICADOR TARGETAMOV A,IDLMOV BUF_EMISSIO+3,A
;MSB ENTRADESMOV A,ENTRADES_MSBMOV BUF_EMISSIO+4,A
;LSB ENTRADESMOV A,ENTRADES_LSBMOV BUF_EMISSIO+5,A
MOV R0,#BUF_EMISSIOMOV R1,#BUF_EMISSIOMOV END_BUFFER_E,#END_BUF_E_DMOV END_BUFFER,END_BUFFER_E
;CÀLCUL DEL CRC 16 BITS DE LA TRAMA DE DADES
LCALL CRC
ENVIAR_TRAMA:LCALL ENVIAR
LCALL INI_TIMER0MOV R7,#0
;ACTIVA EL TIMER 0 PER CONTROLAR ELS TIMEOUTSSETB TR0
Annexes
198
;INICIALITZACIONS DELS BUFFERS
MOV END_BUFFER_R,#END_BUF_R_AMOV R1,#BUF_RECEPCIO
ESP_ACK:JNB TF0,RECEPCIO_ACKCLR TF0LCALL INI_TIMER0INC R7CJNE R7,#SEGONS_3,RECEPCIO_ACKMOV R7,#00
;INTENTS++INC R3
;DONA PER ACABADA CORRECTAMENT LA CONNEXIÓ SI;JA S' HA REBUT EL PRIMER ACK
CJNE R2,#00,CONNEXIO_OK
;TORNAR A ENVIAR LA TRAMACJNE R3,#MAX_TIMEOUTS,ENVIAR_TRAMA
;S' HA SUPERAT EL MÀXIM DE TIMEOUTS I ES DONA;PER ACABADA LA COMUNICACIÓ I ES RETORNA COM;HA ANAT AL ACUMULADOR
MOV A,STATUSADD A,#1LJMP FI_SERIE
RECEPCIO_ACK:LCALL REBRECJNE A,END_BUFFER_R,ESP_ACK
;COMPROVACIÓ DEL CRC DE LA TRAMA REBUDA
MOV R0,#BUF_RECEPCIOMOV END_BUFFER,END_BUFFER_RLCALL CRCJNB CRC_OK,NOACK
MOV STATUS,NUMTRAMAINC STATUS
MOV A,#01ADD A,R2
;COMPROVACIÓ DEL NUMERO DE TRAMA DEL ACK REBUTCJNE A,NUMTRAMA,NOACK
Annexes
199
;NUMEROTRAMA++INC R2
;INTENTS = 0MOV R3,#00
;PARAR EL TIMER 0CLR TR0MOV R7,#00
;INICIALITZACIO
MOV END_BUFFER_R,#END_BUF_R_AMOV R1,#BUF_RECEPCIO
;ENVIA LA TRAMA DE PETICIÓ DE FINALITZACIO I DESPRÉS LA;TRAMA QUE INDICA EL FINAL DE LA CONNEXIÓ
MOV BUF_EMISSIO,#HEADER_END
;NUMERO DE TRAMAMOV BUF_EMISSIO+1,02
;CAMP DE CONTROL ( RESERVAT PER AMPLIACIÓ )MOV BUF_EMISSIO+2,#00H
MOV R0,#BUF_EMISSIOMOV END_BUFFER_E,#END_BUF_E_AMOV END_BUFFER,END_BUFFER_ELCALL CRCLCALL ENVIAR
;ACTIVAR EL TIMER 0SETB TR0
CJNE R2,#02,ESP_ACK
CONNEXIO_OK:MOV A,#EMISSIO_OKLJMP FI_SERIE
NOACK:CLR TR0
;INTENTS++INC R3
;DONA PER ACABADA CORRECTAMENT LA CONNEXIÓ SI;JA S' HA REBUT EL PRIMER ACK
CJNE R2,#00,CONNEXIO_OK
Annexes
200
CJNE R3,#MAX_TIMEOUTS,ENVIAR_TRAMA
;S' HA SUPERAT EL MÀXIM DE TIMEOUTS I ES DONA;PER ACABADA LA COMUNICACIÓ I ES RETORNA COM;HA ANAT AL ACUMULADOR
MOV A,STATUSADD A,#1
FI_SERIE:CLR RENCLR TR0CLR TR1CLR RICLR TIRET
; LA POSICIÓ DE MEMÒRIA END_BUFFER CONTE LA POSICIÓ FINAL DEL; BUFFER I EL REGISTRE R0 L' INICIAL
CRC:
;ESBORRA EL FLAG QUE INDICA QUE EL CRC ES CORRECTECLR CRC_OK
;ES GUARDA EL CONTINGUT DEL REGISTRE R0, R1, R2 I R3
PUSH 00PUSH 01PUSH 02PUSH 03MOV R2,#00MOV R3,#00
CALCUL_CRC:MOV A,@R0XRL 03H,A
;ÍNDEX PER FER EL RECORREGUT DE TOT EL BYTE
MOV R4,#8RECORRERBYTE:CLR CMOV A,R2RLC AMOV R2,AMOV A,R3RLC AMOV R3,AJNC NOCARRYXRL 02H,#21HXRL 03H,#10h
NOCARRY:
Annexes
201
DJNZ R4,RECORRERBYTEINC R0MOV A,R0CJNE A,END_BUFFER,CALCUL_CRCMOV R1,AMOV @R1,03HINC R1MOV @R1,02HCJNE R2,#00,CRC_NO_OKCJNE R3,#00,CRC_NO_OKSETB CRC_OK
CRC_NO_OK:POP 03POP 02POP 01POP 00RET
;FUNCIÓ QUE RETORNA EL RESULTAT EN EL ACC;SI P3.5 ESTA A 0 RETORNA UN 1 AL ACC, EN EL;ALTRE CAS RETORNA UN ZERO
HI_HA_TRUCADA:CLR AJB P3.5,RET_HI_HA_TRUCADAMOV A,#01
RET_HI_HA_TRUCADA:RET
;HABILITA EL DISPLAY
ENABLE_7SEG:SETB P1.6RET
;DESHABILITA EL DISPLAY
DISABLE_7SEG:CLR P1.6RET
DESPENJAR:SETB P3.3RET
PENJAR:CLR P3.3RET
Annexes
202
INI_TIMER0:
;TIMER 0 EN MODE 16 BITS PER A UN PERÍODE DE 50 MS
MOV TL0,#0B0HMOV TH0,#03CHRET
;VISUALITZA EL CONTINGUT DELS 4 BITS LSB DEL ACUMULADOR
VISU_7SEG:
;ES CARREGA AL P2 EL VALOR QUE HA D' ANAR AL DECO 7 SEGMOV P2,A
;VALOR QUE HA DE TENIR ELS D/A I EL PIU DE CONTROLMOV A,#6EH
;ESCRIU AL DECO 7 SEGMOVX @R0,ALCALL ENABLE_7SEGRET
INI_TRUCADA:
;TIMER 0 EN MODE 1 (16 BITS);PER A UN PERÍODE DE 65536 USMOV TMOD,#01HMOV TL0,#00HMOV TH0,#00H
;INICIALITZACIO DEL PUNTER A MEMÒRIA DE PROGRAMAMOV DPH,#03HMOV DPL,#00H
SETB TR0MOV R0,#BUFFER_N_TELRET
Annexes
203
;RUTINA QUE LLEGEIX EL NUMERO DE MEMÒRIA I;REALITZA LA MARCACIO DTMF
TRUCAR:MOV A,@R0INC R0
;ES MIRA SI S' HA ARRIBAT A L' ULTIMA XIFRA
CJNE A,#NUM_FINAL,LIMIT_NUMLJMP FI_TRUCAR
LIMIT_NUM:
;S' INICIALITZA EL REGISTRE QUE DETERMINA LA;DURACIÓ DELS TONS ( 130 MS )
MOV R7,#02LCALL DTMFLCALL PAUSA
CJNE R0,#LIMIT_N_TEL,TRUCARFI_TRUCAR:RET
; DELAY D' APROXIMADAMENT 1 SEGON DE DURACIÓ
DELAY:PUSH 02HPUSH 03HMOV R2,#0HMOV R3,#0H
BUCLE_DELAY:NOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPDJNZ R3,BUCLE_DELAYDJNZ R2,BUCLE_DELAYPOP 03HPOP 02HRET
Annexes
204
; DELAY D' APROXIMADAMENT 0,5 SEGONS DE DURACIÓ
DELAY2:PUSH 02HPUSH 03HMOV R2,#0HMOV R3,#0H
BUCLE_DELAY2:NOPNOPNOPNOPNOPNOPDJNZ R3,BUCLE_DELAY2DJNZ R2,BUCLE_DELAY2POP 03HPOP 02HRET
; DELAY D' APROXIMADAMENT 0,2 SEGONS DE DURACIÓ
DELAY3:PUSH 02HPUSH 03HMOV R2,#0HMOV R3,#0H
BUCLE_DELAY3:NOPDJNZ R3,BUCLE_DELAY3DJNZ R2,BUCLE_DELAY3POP 03HPOP 02HRET
;SUBRUTINA QUE RETORNA AL ACUMULADOR EL;VALOR DE LES 8 ENTRADES LSB
LLEGIR_ENTRADES_0_7:PUSH 02HMOV A,P1ANL A,#0FHMOV R2,AMOVX A,@R0ANL A,#0FHSWAP AORL A,R2POP 02HRET
Annexes
205
;SUBRUTINA QUE RETORNA AL ACUMULADOR EL;VALOR DE LES 4 ENTRADES MSB
LLEGIR_ENTRADES_8_11:MOVX A,@R0ANL A,#0F0HSWAP ARET
;INTRODUCCIÓ DEL IDENTIFICADOR I DEL NUMERO DE TELÈFON;A LA MEMÒRIA EPROM
;IDENTIFICADOR, SI NO ES GUARDA A LA MEMÒRIA, PER;DEFECTE S' HA DE FICAR A 0000
;EXEMPLE D' IDENTIFICADOR 1234;DB 12H,34H
ORG 0700HDB 00H,00H
;NUMERO DE TELÈFON, SI NO ES GUARDA A LA MEMÒRIA, PER;DEFECTE AL PRIMER BYTE HA DE TINDRÉ 0AH QUE INDICA QUE;NO HI HA CAP NUMERO DE TELÈFON. SI ES VOL GUARDAR EL;NUMERO DE TELÈFON A MEMÒRIA, PER INDICAR EL SEU FINAL;S' HA DE COL·LOCAR 0AH.
;EXEMPLE DE NUMERO DE TELÈFON 977000000;DB 9,7,7,0,0,0,0,0,0;DB 0AH INDICADOR DE FINAL DE NUMERO
ORG 0702HDB 0AH
Codi 1. Programa ASM Placa Monitoritzacio
Annexes
206
9.1.2 Programa ASM Placa Monitoritzacio per PC
;USES 8031
;FLAGS
BSC EQU 0E7H ;ACC.7
BSE EQU 097H ;P1.7
FLAG_P14 EQU 0
FLAG_P15 EQU 1
ID EQU 2
POSICIO_PAR EQU 3
FINAL EQU 4
CRC_OK EQU 5
TRAMA_OK EQU 6
PAGINA2 EQU 7
LLEGIR_DATA EQU 8
;INDICA SI ESTA ACTIVAT EL MODE TEST
TEST EQU 9
;CONSTANTS
DATA EQU 10H
TRUCADA EQU 20H
CONNEXIO_CORRECTA EQU 30H
ERROR_SERIE EQU 40H
ERROR_CONNEXIO EQU 50H
NO_LINIA EQU 60H
MARCAR EQU 70H
;INDICA QUE ES PASSI A MODE TEST
MODE_TEST EQU 11
;INDICA QUE ES PASSI A MODE NORMAL
MODE_NORMAL EQU 12
INTENTS_TRUCADA EQU 3
TIMEOUTS EQU 1
RECEPCIO_OK EQU 0
Annexes
207
EMISSIO_OK EQU 0
NO_DATA EQU 80H
NO_TRAMA_END EQU 40H
SEGONS_2 EQU 40
SEGONS_3 EQU 60
SEGONS_10 EQU 200
SEGONS_12_8 EQU 0
MAX_TIMEOUTS EQU 10
L_TRAMA EQU 5
L_TRAMA-2 EQU 3
L_TRAMA_DATA EQU 8
L_TRAMA_D-2 EQU 6
HEADER_ACK EQU 3
HEADER_DATA EQU 1
HEADER_END EQU 4
NUM_FINAL EQU 10
;VARIABLES O PUNTERS
;EN AQUESTES POSICIONS DE MEMÒRIA ES GUARDEN
;ELS VALORS DE LES ENTRADES
ENTRADES_LSB EQU 36H
ENTRADES_MSB EQU 37H
;INDICA SI S' HA DE TORNAR A TRUCAR DESPRÉS
;D' UNA CONNEXIÓ FALLIDA
ERROR_TRUCADA EQU 38H
STATUS EQU 39H
;EN AQUESTES POSICIONS DE MEMÒRIA ES GUARDA
;EL VALOR DE L' IDENTIFICADOR
IDL EQU 59H
IDH EQU 5AH
BUF_EMISSIO EQU 6DH
BUF_RECEPCIO EQU 75H
END_BUFFER EQU 7DH
Annexes
208
END_BUFFER_E EQU 7EH
END_BUFFER_R EQU 7FH
BUFFER_AUX EQU 40H
END_BUF_R_A EQU 7AH ;BUF_RECEPCIO + L_TRAMA
END_BUF_R_D EQU 7DH ;BUF_RECEPCIO + L_TRAMA_DATA
END_BUF_E_A EQU 70H ;BUF_EMISSIO + L_TRAMA-2
END_BUF_E_D EQU 73H ;BUF_EMISSIO + L_TRAMA_D-2
NUMTRAMA EQU 76H ;BUF_RECEPCIO + 1
DADES EQU 77H ;BUF_RECEPCIO + 2
BUFFER_ID EQU 59H
BUFFER_N_TEL EQU 5BH
LIMIT_IDENT EQU 5BH
LIMIT_N_TEL EQU 6DH
;INDICA QUIN ES EL NUMERO MES GRAN QUE ES POT ADMETRE
;QUAN S' INTRODUEIX L' IDENTIFICADOR ( 9 ) O EL NUMERO
;DE TELÈFON ( 10 )
LIMIT_DIGIT EQU 30H
ORG 0000H
LJMP INICI
;TAULA DE DADES NECESSÀRIA PER GENERAR
;ELS TONS DTMF
ORG 0020H
DB 1CH,0FFH,2AH,1EH
DB 1CH,0B2H,38H,21H
DB 1CH,0FFH,38H,1EH
DB 1CH,0D2H,38H,1BH
DB 53H,0B2H,33H,21H
DB 53H,0FFH,33H,1EH
DB 53H,0D2H,33H,1BH
DB 85H,0B2H,2EH,21H
DB 85H,0FFH,2EH,1EH
DB 85H,0D2H,2EH,1BH
Annexes
209
INICI:
;INICIALITZACIO DEL REGISTRE D' ESTAT
MOV P1,#0
;ORDRE DE LATCH DEL REGISTRE D' ESTAT
SETB P3.2
LCALL PENJAR
;INICIALITZACIO CONVERSORS D/A I PIU PORTADORA
MOV A,#6EH
MOVX @DPTR,A
;FINS QUE EL REGISTRE DE CONTROL NO ESTIGUI A ZERO,
;ES QUEDARÀ AQUÍ ESPERANT-SE
INI_PLACA:
MOVX A,@R0
JNZ INI_PLACA
CLR TEST
LJMP BUCLE_CENTRAL
ACTIVAR_MODE_TEST:
SETB TEST
LJMP BUCLE_CENTRAL
DESACTIVAR_MODE_TEST:
CLR TEST
BUCLE_CENTRAL:
;LLEGEIX EL REGISTRE DE CONTROL DE LA PLACA
MOVX A,@R0
XRL A,#MARCAR
JZ FER_TRUCADA
Annexes
210
;COMPROVA SI HA REBUT L' ORDRE DE CANVIAR
;DE MODE DE FUNCIONAMENT
MOVX A,@R0
XRL A,#MODE_TEST
JZ ACTIVAR_MODE_TEST
MOVX A,@R0
XRL A,#MODE_NORMAL
JZ DESACTIVAR_MODE_TEST
;COMPROVA SI HI HA ALGUNA TRUCADA
LCALL HI_HA_TRUCADA
JZ BUCLE_CENTRAL
REBRE_TRUCADA:
LCALL DESPENJAR
;S' HA DE REALITZAR UN PETIT DELAY
;DESPRÉS DE DESPENJAR
LCALL DELAY3
;PORTADORA ON
MOV A,#66H
MOVX @DPTR,A
LCALL DELAY3
;PORTADORA OFF
MOV A,#6EH
MOVX @DPTR,A
LCALL DELAY3
LCALL INI_SERIE
;INICI DE LA RECEPCIÓ DE DADES
LCALL SERIE
LCALL PENJAR
Annexes
211
;VERIFICACIÓ DEL RESULTAT DE LA RECEPCIÓ ( 0 OK )
JNZ RECEPCIO_INCORRECTA
;ES COMUNICA AMB L' APLICACIÓ GESTIÓ REMOTA
MOV A,#CONNEXIO_CORRECTA
LCALL ESCRIPTURA_BUS_ISA
;ENVIA LES DADES OBTINGUDES DE LA COMUNICACIÓ
LCALL COPIAR_DADES
LJMP BUCLE_CENTRAL
RECEPCIO_INCORRECTA:
MOV A,#ERROR_SERIE
LCALL ESCRIPTURA_BUS_ISA
LJMP BUCLE_CENTRAL
FER_TRUCADA:
;INICIALITZACIO DEL ÍNDEX QUE SERVEIX PER ACCEDIR
;ON ES GUARDA EL NUMERO DE TELÈFON
MOV R0,#BUFFER_N_TEL
LLEGIR_NUMERO:
LCALL LECTURA_BUS_ISA
INC R0
CJNE A,#NUM_FINAL,COMPROBAR_LIMIT
LJMP MARCAR_NUMERO
COMPROBAR_LIMIT:
CJNE R0,#LIMIT_N_TEL,LLEGIR_NUMERO
MARCAR_NUMERO:
LCALL DESPENJAR
;ES NECESSARI UN PETIT DELAY DESPRÉS DE DESPENJAR, PER
;TAL DE PODER TRUCAR
LCALL DELAY
LCALL INI_TRUCADA
Annexes
212
LCALL TRUCAR
LCALL INI_TIMER0
MOV R7,#0
SETB TR0
;BUCLE DE SINCRONISME AMB LA PORTADORA
;SI NO REP RES DINTRE DEL TEMPS PREFIXAT,
;DONA PER ACABADA LA CONNEXIÓ AMB ERROR
MOV R2,#0
MOV R3,#0
NIVELL_ALT:
JNB TF0,COMPROVAR_NIVELL_ALT:
CLR TF0
LCALL INI_TIMER0
INC R7
CJNE R7,#SEGONS_12_8,COMPROVAR_NIVELL_ALT:
CLR TR0
LJMP NOCON1
COMPROVAR_NIVELL_ALT:
MOV A,P3
JB ACC.0,NIVELL_ALT2
INC R2
CJNE R2,#255,NIVELL_ALT
LJMP NIVELL_BAIX
NIVELL_ALT2:
MOV R2,#0
LJMP NIVELL_ALT
NIVELL_BAIX:
JNB TF0,COMPROVAR_NIVELL_BAIX:
CLR TF0
LCALL INI_TIMER0
INC R7
CJNE R7,#SEGONS_12_8,COMPROVAR_NIVELL_BAIX:
CLR TR0
LJMP NOCON1
Annexes
213
COMPROVAR_NIVELL_BAIX:
MOV A,P3
JNB ACC.0,NIVELL_BAIX
INC R3
CJNE R3,#255,NIVELL_BAIX
LJMP FI_SYNC
NIVELL_BAIX2:
MOV R3,#0
LJMP NIVELL_BAIX
FI_SYNC:
LCALL DELAY3
CLR TR0
LCALL INI_SERIE
;INICI DE LA RECEPCIÓ DE DADES
LCALL SERIE
LCALL PENJAR
;VERIFICACIÓ DEL RESULTAT DE LA RECEPCIÓ ( 0 OK )
JNZ NOCON2
MOV A,#CONNEXIO_CORRECTA
LCALL ESCRIPTURA_BUS_ISA
LCALL COPIAR_DADES
LJMP BUCLE_CENTRAL
NOCON1:
MOV A,#ERROR_CONNEXIO
LCALL ESCRIPTURA_BUS_ISA
LJMP TORNAR_BUCLE_CENTRAL
NOCON2:
MOV A,#ERROR_SERIE
LCALL ESCRIPTURA_BUS_ISA
TORNAR_BUCLE_CENTRAL:
LCALL PENJAR
LJMP BUCLE_CENTRAL
Annexes
214
;DADES NECESSÀRIES PER OBTENIR ELS TONS DTMF
ORG 0300H
;1336 HZ
DB 20H,20H,40H,40H,00H,00H,00H,00H,00H,00H,40H
DB 40H,20H,60H,60H,10H,10H,50H,50H,30H,30H,30H
DB 30H,30H,50H,50H,10H,10H,60H
;697 HZ
DB 06H,02H,02H,02H,04H,04H,04H,04H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,04H,04H,04H,04H
DB 02H,02H,02H,06H,06H,06H,01H,01H,01H,01H,05H
DB 05H,05H,05H,03H,03H,03H,03H,03H,03H,03H,03H
DB 03H,03H,05H,05H,05H,05H,01H,01H,01H,06H,06H
;770 HZ
DB 06H,02H,02H,02H,04H,04H,04H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,04H,04H,04H,02H,02H
DB 02H,06H,06H,06H,01H,01H,01H,05H,05H,05H,03H
DB 03H,03H,03H,03H,03H,03H,03H,03H,03H,05H,05H
DB 05H,01H,01H,01H,06H,06H
;852 HZ
DB 06H,02H,02H,04H,04H,04H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,04H,04H,04H,02H,02H,02H,06H
DB 06H,01H,01H,01H,05H,05H,05H,03H,03H,03H,03H
DB 03H,03H,03H,03H,05H,05H,05H,05H,01H,01H,06H
DB 06H
;1209 HZ
DB 60H,20H,40H,40H,40H,00H,00H,00H,00H,00H,00H
DB 40H,40H,20H,20H,60H,10H,10H,50H,50H,50H,30H
DB 30H,30H,30H,30H,30H,50H,50H,10H,10H,60H
;1477 HZ
DB 20H,20H,40H,40H,00H,00H,00H,00H,40H,40H,20H
DB 20H,60H,10H,10H,50H,50H,30H,30H,30H,30H,50H
DB 50H,10H,10H,60H
Annexes
215
ORG 0400H
;1336 HZ
DB 20H,20H,40H,40H,00H,00H,00H,00H,00H,00H,40H
DB 40H,20H,60H,60H,10H,10H,50H,50H,30H,30H,30H
DB 30H,30H,50H,50H,10H,10H,60H
;941 HZ
DB 06H,02H,02H,04H,04H,04H,00H,00H,00H,00H,00H
DB 00H,00H,00H,04H,04H,04H,02H,02H,06H,06H,01H
DB 01H,05H,05H,05H,03H,03H,03H,03H,03H,03H,03H
DB 03H,05H,05H,05H,01H,01H,06H,06H
;S' HA DE SELECCIONAR LA PAGINA2 PER TAL DE LLEGIR L' INFORMACIÓ
;NECESSÀRIA PER GENERAR ELS TONS DEL NUMERO ZERO.
DTMF:
PUSH 00
JNZ NOPAGINA2
SETB PAGINA2
NOPAGINA2:
RL A
RL A
ADD A,#020H
MOV DPH,#00H
MOV DPL,A
CLR A
MOVC A,@A+DPTR
MOV R0,A
MOV A,#01
MOVC A,@A+DPTR
MOV R1,A
MOV A,#02
MOVC A,@A+DPTR
MOV R2,A
MOV A,#03
MOVC A,@A+DPTR
MOV R3,A
MOV R4,02H
DEC R4
Annexes
216
MOV R5,03H
DEC R5
MOV DPH,#03H
MOV DPL,#00H
JNB PAGINA2,TONS
MOV DPH,#04H
CLR PAGINA2
TONS:
DJNZ R2,BUCLE_DTMF3
MOV A,R4
MOV R2,A
BUCLE_DTMF:
DJNZ R3,BUCLE_DTMF4
MOV A,R5
MOV R3,A
BUCLE_DTMF2:
MOV A,R2
ADD A,R0
MOVC A,@A+DPTR
MOV R6,A
MOV A,R3
ADD A,R1
MOVC A,@A+DPTR
ORL A,006H
;PORTADORA OFF
ORL A,#08H
;ENVIA LES DADES AL DOS CONVERSORS D/A DE 3 BITS
MOVX @R0,A
JNB TF0,BUCLE_DTMF5
CLR TF0
DJNZ R7,TONS
POP 00
RET
BUCLE_DTMF3:
LJMP BUCLE_DTMF
BUCLE_DTMF4:
LJMP BUCLE_DTMF2
Annexes
217
BUCLE_DTMF5:
NOP
LJMP TONS
PAUSA:
;VALOR QUE HA DE TENIR ELS D/A I EL PIU DE CONTROL
;DE LA PORTADORA ( PE )
MOV A,#6EH
MOVX @R0,A
MOV R7,#02
;DELAY D' UNS 130 MS, BASAT EN EL TIMER 0 ( 65536 uS)
BUCLE_PAUSA:
JNB TF0,BUCLE_PAUSA
CLR TF0
DJNZ R7,BUCLE_PAUSA
RET
;SUBRUTINA QUE ENVIA UNA TRAMA
ENVIAR:
;DESHABILITA LA RECEPCIÓ DE DADES SÈRIE
CLR REN
PUSH 01
MOV R1,#BUF_EMISSIO
ENVIAR_BYTE:
MOV A,@R1
MOV SBUF,A
MOV A,R1
INC R1
JNB TI,$
CLR TI
DEC A
CJNE A,END_BUFFER_E,ENVIAR_BYTE
POP 01
;HABILITA LA RECEPCIÓ DE DADES SÈRIE
SETB REN
RET
Annexes
218
;SUBRUTINA QUE REP UN CARÀCTER
REBRE:
JNB RI,RETORNA
;ESBORRA EL FLAG RI
CLR RI
MOV A,SBUF
MOV @R1,A
;MIRA EL HEADER DE LA TRAMA PER ESPECIFICAR
;EL SEU TAMANY ( 8 BYTES TRAMA DE DADES 5 BYTES
;TRAMA DE ACK )
CJNE R1,#BUF_RECEPCIO,INC_INDEX
CJNE A,#HEADER_DATA,INC_INDEX
;ESPECIFICA EL TAMANY DE LA TRAMA DE DADES (8 BYTES)
MOV END_BUFFER_R,#END_BUF_R_D
INC_INDEX:
INC R1
MOV A,R1
RETORNA:
RET
INI_TIMER0:
;TIMER 0 EN MODE 16 BITS PER A UN PERÍODE DE 50 MS
MOV TL0,#0B0H
MOV TH0,#03CH
RET
Annexes
219
;INICIALITZACIO DEL PORT SÈRIE
INI_SERIE:
;NUMEROTRAMA
MOV R2,#00
;INTENTS
MOV R3,#00
;TIMER 0 EN MODE 1 (16 BITS)
;TIMER 1 EN MODE 2 (8 BITS AMB PRECARREGA)
MOV TMOD,#21H
;TIMER PER A OBTINDRÉ "128 BPS"
MOV TL1,#00CH
MOV TH1,#00CH
;BIT SMOD A 0
ANL PCON,#7FH
;ACTIVACIÓ DEL TIMER 1 ( GENERADOR DE BAUDS )
SETB TR1
;PORT SÈRIE EN MODE 1 (SM2 = 0), HABILITAR RECEPCIÓ (REN = 0)
;(RI B0) (TI B1)
MOV SCON,#40H
;INICIALITZACIO DELS FLAGS RI I TI
CLR RI
CLR TI
;HABILITAR LA RECEPCIÓ
SETB REN
RET
Annexes
220
;RUTINA QUE S’ ENCARREGA DE LES COMUNICACIONS DE DADES VIA SÈRIE
;LES DADES SON GUARDADES EN UN BUFFER ( BUFFER AUX )
;EN L' ACUMULADOR ES RETORNA COM HA ANAT LA CONNEXIÓ
SERIE:
;TIMER 0 EN MODE 1 (16 BITS)
;TIMER 1 EN MODE 2 (8 BITS AMB PRECARREGA)
MOV TMOD,#21H
LCALL INI_TIMER0
MOV R7,#00H
;ACTIVA EL TIMER 0
SETB TR0
;INICIALITZACIONS
MOV END_BUFFER_E,#END_BUF_E_D
MOV END_BUFFER_R,#END_BUF_R_A
MOV R0,#BUF_EMISSIO
MOV R1,#BUF_RECEPCIO
CLR LLEGIR_DATA
CLR FINAL
MOV STATUS,#0
CLR TRAMA_OK
ESP_TRAMA:
JNB TF0,RECEPCIO
CLR TF0
LCALL INI_TIMER0
INC R7
;TIMEOUT DE RECEPCIÓ EN 2 SEGONS
;INICIALITZA ELS PUNTERS PER TAL
;DE PODER REBRE UNA ALTRA TRAMA
CJNE R7,#SEGONS_2,RECEPCIO
Annexes
221
;SI ES PRODUEIX UN TIMEOUT QUAN S' HA DE
;REBRE LA TRAMA DE FINALITZACIO, LLAVORS
;ES DONA PER FINALITZADA LA CONNEXIÓ I ES
;CONSIDERA QUE HA ESTAT CORRECTA
JNB FINAL,TIMEOUT
MOV A,#RECEPCIO_OK
ORL A,STATUS
LJMP FI_SERIE
TIMEOUT:
MOV R7,#00
;INTENTS++
INC R3
LCALL INI_TIMER0
;INICIALITZACIONS
MOV END_BUFFER_R,#END_BUF_R_A
MOV R1,#BUF_RECEPCIO
;SI ES SUPERA EL NUMERO MÀXIM DE TIMEOUTS, ES FINALITZA
;LES COMUNICACIONS INDICANT ERROR DE CONNEXIÓ
CJNE R3,#MAX_TIMEOUTS,MIRAR_MODE
MOV A,#TIMEOUTS
ORL A,STATUS
LJMP FI_SERIE
MIRAR_MODE:
;SI ES TROBA EN MODE TEST, SEMPRE QUE ES PRODUEIX
;UN TIMEOUT ENVIA UN ACK
JB TEST,PREPARAR_ACK
LJMP ESP_TRAMA
Annexes
222
RECEPCIÓ:
LCALL REBRE
;COMPROVA SI JA HA REBUT UNA TRAMA COMPLETA
CJNE A,END_BUFFER_R,ESP_TRAMA
MOV R1,#BUF_RECEPCIO
TRAMA_DADES:
CLR TRAMA_OK
MOV R0,#BUF_RECEPCIO
MOV END_BUFFER,END_BUFFER_R
LCALL CRC
;SI EL CRC NO ES CORRECTE, LLAVORS ESPERA
;A REBRE UN ALTRE TRAMA SENSE ENVIAR ACK
JNB CRC_OK,ESP_TRAMA
;PARAR EL TIMER 0
CLR TR0
MOV R7,#00
;INICIALITZACIO
MOV END_BUFFER_R,#END_BUF_R_A
MOV R1,#BUF_RECEPCIO
MOV A,NUMTRAMA
;COMPROVACIÓ DEL NUMERO DE TRAMA REBUT
CJNE A,02,PREPARAR_ACK
SETB TRAMA_OK
;NUMEROTRAMA++
INC R2
;INTENTS = 0
MOV R3,#00
Annexes
223
PREPARAR_ACK:
MOV BUF_EMISSIO,#HEADER_ACK
;NUMERO DE TRAMA
MOV BUF_EMISSIO+1,R2
;CAMP DE CONTROL ( RESERVAT PER A UNA POSSIBLE
;MODIFICACIÓ DEL PROTOCOL DE COMUNICACIONS )
MOV BUF_EMISSIO+2,#00H
MOV R0,#BUF_EMISSIO
MOV END_BUFFER_E,#END_BUF_E_A
MOV END_BUFFER,END_BUFFER_E
;CÀLCUL DEL CRC DE LA TRAMA DE ACK
LCALL CRC
ENVIAR_ACK:
LCALL ENVIAR
;ACTIVACIÓ DEL TIMER 0
SETB TR0
JNB TRAMA_OK,ESP_TRAMA
CLR TRAMA_OK
JNB FINAL,NO_FINAL
MOV A,#RECEPCIO_OK
ORL A,STATUS
LJMP FI_SERIE
NO_FINAL:
JNB LLEGIR_DATA,LLEGIR_DADES
SETB FINAL
LJMP ESP_TRAMA
LLEGIR_DADES:
SETB LLEGIR_DATA
MOV A,BUF_RECEPCIO
CJNE A,#HEADER_DATA,NO_HEADER_DATA
PUSH 00
PUSH 01
MOV R0,#BUFFER_AUX
Annexes
224
;R1 APUNTA ALS 4 BYTES DE
;DADES ( 2 ID + 2 DATA )
MOV R1,#DADES
MOV R4,#04H
;TRANSFERÈNCIA DE LES DADES AL BUFFER AUX (4 BYTES )
COPIAR:
MOV A,@R1
MOV @R0,A
INC R0
INC R1
DJNZ R4,COPIAR
POP 01
POP 00
ESP_DADES:
LJMP ESP_TRAMA
NO_HEADER_DATA:
ORL STATUS,#NO_DATA
LJMP ESP_TRAMA
FI_SERIE:
;SI S' HA REBUT LA TRAMA DE DADES, LLAVORS
;ES CONSIDERA QUE LA COMUNICACIÓ HA FINALITZAT
;DE FORMA CORRECTA
JNB LLEGIR_DATA,SALT_NO_OK
MOV A,#RECEPCIO_OK
SALT_NO_OK:
CLR REN
CLR TR0
CLR TR1
CLR RI
CLR TI
RET
Annexes
225
; LA POSICIÓ DE MEMÒRIA END_BUFFER CONTE LA POSICIÓ FINAL DEL
; BUFFER I EL REGISTRE R0 L' INICIAL
CRC:
;ESBORRA EL FLAG QUE INDICA QUE EL CRC ES CORRECTE
CLR CRC_OK
;ES GUARDA EL CONTINGUT DEL REGISTRE R0, R1, R2 I R3
PUSH 00
PUSH 01
PUSH 02
PUSH 03
MOV R2,#00
MOV R3,#00
CALCUL_CRC:
MOV A,@R0
XRL 03H,A
;ÍNDEX PER FER EL RECORREGUT DE TOT EL BYTE
MOV R4,#8
RECORRERBYTE:
CLR C
MOV A,R2
RLC A
MOV R2,A
MOV A,R3
RLC A
MOV R3,A
JNC NOCARRY
XRL 02H,#21H
XRL 03H,#10h
NOCARRY:
DJNZ R4,RECORRERBYTE
INC R0
MOV A,R0
CJNE A,END_BUFFER,CALCUL_CRC
MOV R1,A
MOV @R1,03H
Annexes
226
INC R1
MOV @R1,02H
CJNE R2,#00,CRC_NO_OK
CJNE R3,#00,CRC_NO_OK
SETB CRC_OK
CRC_NO_OK:
POP 03
POP 02
POP 01
POP 00
RET
;RETORNA EN EL ACC, ELS 4 BITS LSB QUE HA LLEGIT
;DEL REGISTRE DE CONTROL I QUE TAMBÉ HA GUARDAT EN
;MEMÒRIA
LECTURA_BUS_ISA:
;LECTURA DEL REGISTRE DE CONTROL, ESPERA A QUE L' APLICACIÓ GESTIÓ;REMOTA INDIQUI QUE VOL ESCRIURE
MOVX A,@R0
JNB BSC,LECTURA_BUS_ISA
;INDICA A L' APLICACIÓ GESTIÓ REMOTA QUE ESTA APUNT
;PER LLEGIR LES DADES DEL REGISTRE DE CONTROL
SETB BSE
;ORDRE DE LATCH DEL REGISTRE D' ESTAT
SETB P3.2
FI_LECTURA:
;LECTURA DEL REGISTRE DE CONTROL PER SABER SI POT
;AGAFAR LES DADES
MOVX A,@R0
JB BSC,FI_LECTURA
ANL A,#0FH
MOV @R0,A
;ESBORRA EL REGISTRE D' ESTAT
MOV P1,#0
;ORDRE DE LATCH DEL REGISTRE D' ESTAT
Annexes
227
SETB P3.2
RET
;RUTINA D' ESCRIPTURA, ESCRIU AL REGISTRE D' ESTAT
;EL CONTINGUT DEL ACUMULADOR
ESCRIPTURA_BUS_ISA:
MOV P1,A
;ORDRE DE LATCH DEL REGISTRE D' ESTAT
SETB P3.2
;INDICA INICI D' ESCRIPTURA
SETB BSE
;ORDRE DE LATCH DEL REGISTRE D' ESTAT
SETB P3.2
ESPERA_LECTURA:
;LECTURA DEL REGISTRE DE CONTROL, ESPERA A QUE L' APLICACIÓ GESTIÓ;REMOTA HAGI LLEGIT L' INFORMACIÓ
MOVX A,@R0
ANL A,#0F0H
CJNE A,#80H,ESPERA_LECTURA
;ESBORRA EL REGISTRE D' ESTAT
MOV P1,#0
;ORDRE DE LATCH DEL REGISTRE D' ESTAT
SETB P3.2
;S' ESPERA FINS QUE L' APLICACIÓ ESBORRA EL BIT
;BSC ( BIT DE MES PES DEL REGISTRE DE CONTROL )
FI_ESCRIPTURA:
MOVX A,@R0
JB BSC,FI_ESCRIPTURA
RET
Annexes
228
;RUTINA QUE ESCRIU EL BYTE INDICAT
;PEL PUNTER R0
ESCRIURE_BYTE_ISA:
;ESCRIU ELS 4 BITS MSB
MOV A,@R0
SWAP A
ANL A,#0FH
ORL A,#DATA
LCALL ESCRIPTURA_BUS_ISA
;ESCRIU ELS 4 BITS LSB
MOV A,@R0
ANL A,#0FH
ORL A,#DATA
LCALL ESCRIPTURA_BUS_ISA
RET
; DELAY D' APROXIMADAMENT 1 SEGON DE DURACIÓ
DELAY:
PUSH 02H
PUSH 03H
MOV R2,#0H
MOV R3,#0H
BUCLE_DELAY:
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
Annexes
229
NOP
NOP
NOP
DJNZ R3,BUCLE_DELAY
DJNZ R2,BUCLE_DELAY
POP 03H
POP 02H
RET
; DELAY D' APROXIMADAMENT 0,5 SEGONS DE DURACIÓ
DELAY2:
PUSH 02H
PUSH 03H
MOV R2,#0H
MOV R3,#0H
BUCLE_DELAY2:
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R3,BUCLE_DELAY2
DJNZ R2,BUCLE_DELAY2
POP 03H
POP 02H
RET
Annexes
230
; DELAY D' APROXIMADAMENT 0,2 SEGONS DE DURACIÓ
DELAY3:
PUSH 02H
PUSH 03H
MOV R2,#0H
MOV R3,#0H
BUCLE_DELAY3:
NOP
DJNZ R3,BUCLE_DELAY3
DJNZ R2,BUCLE_DELAY3
POP 03H
POP 02H
RET
;FUNCIÓ QUE RETORNA EL RESULTAT EN EL ACC.
;SI HI HA UNA TRUCADA RETORNA UN 1 AL ACC
;I EN EL ALTRE CAS RETORNA UN ZERO
HI_HA_TRUCADA:
CLR A
JNB P3.5,RET_HI_HA_TRUCADA
MOV A,#01
RET_HI_HA_TRUCADA:
RET
DESPENJAR:
SETB P3.3
RET
PENJAR:
CLR P3.3
RET
Annexes
231
INI_TRUCADA:
;TIMER 0 EN MODE 1 (16 BITS)
;PER A UN PERÍODE DE 65536 US
MOV TMOD,#01H
MOV TL0,#00H
MOV TH0,#00H
;INICIALITZACIO DEL PUNTER A MEMÒRIA DE PROGRAMA
MOV DPH,#03H
MOV DPL,#00H
SETB TR0
MOV R0,#BUFFER_N_TEL
RET
;RUTINA QUE LLEGEIX EL NUMERO DE TELÈFON
;DE MEMÒRIA I REALITZA LA MARCACIO DTMF
TRUCAR:
MOV A,@R0
INC R0
;MIRA SI HA ARRIBAT A L' ULTIMA XIFRA
CJNE A,#NUM_FINAL,LIMIT_NUM
LJMP FI_TRUCAR
LIMIT_NUM:
;S' INICIALITZA EL REGISTRE QUE DETERMINA LA
;DURACIÓ DELS TONS ( 130 MS )
MOV R7,#02
LCALL DTMF
LCALL PAUSA
CJNE R0,#LIMIT_N_TEL,TRUCAR
FI_TRUCAR:
RET
Annexes
232
;RUTINA QUE TRANSFEREIX LES DADES (4 BYTES ) A
;L' APLICACIÓ GESTIÓ REMOTA
COPIAR_DADES:
MOV R0,#BUFFER_AUX
MOV R4,#04H
BUCLE_COPIAR:
LCALL ESCRIURE_BYTE_ISA
INC R0
DJNZ R4,BUCLE_COPIAR
RET
Codi 2. Programa ASM Placa Monitoritzacio per PC
Annexes
233
9.1.3 Programa Visual Basic
El programa ha estat realitzat amb Visual Basic 6 amb el Service Pack 5 deMicrosoft Visual Studio 6.0. Esta composat pels següents formularis i mòduls:
• Form1: es el primer que es carrega en memòria i es el que s’ encarrega del’ icona del programa en la barra de tasques de Windows.
• Formulari1: es el formulari principal de l’ aplicació Gestió Remota 1.0. Desde aquest formulari es realitza la major part de les accions i també es el ques’ encarrega de mostrar als altres formularis.
• Formulari2: es el que mostra els detalls de les dades que s’ han rebut de lesmaquines dispensadores.
• Formulari3: es el formulari que permet l’ entrada de l’ informació de lesmaquines dispensadores per guardar-la a la base de dades.
• Formulari4: es el formulari que permet l’ entrada de l’ informació dels tipusde maquina per guardar-la a la base de dades.
• Formulari5: es el que mostra diferents opcions per configurar l’ aplicació.
• Formulari6: aquest formulari permet interrogar a les diferents maquinesdispensadores que es troben a la base de dades.
• Formulari7: s’ encarrega de mostrar el progrés de les interrogacions.
• Formulari8: mostra l’ informació sobre l’ aplicació Gestió Remota 1.0.
• Mòdul Declaracions: en aquest mòdul es fiquen les declaracions i els tipusnecessaris per a diferents funcions de l’ API de Windows.
• Mòdul Funcions: conte varies funcions que s’ utilitzen en diversos formularis.
• Mòdul Io32: en aquest mòdul es poden trobar les funcions mes bàsiques queutilitzen la llibreria WinIO.
• Mòdul ISA: aquí es troben les funcions que s’ encarreguen d’ accedir a laPlaca de Monitoritzacio per PC.
• Modul2: es troben diverses funcions publiques que manipulen elements delformulari principal.
• Modul3: hi ha varies funcions que utilitzen les funcions de l’ API deWindows.
• Mòdul WinIO: conte les declaracions de les diverses funcions de la llibreriaWinIO, que permet accedir directament al Hardware en Windows 9x,ME,NTi 2000.
Annexes
234
9.1.3.1 Form1
Dim Torn As BooleanDim t As NOTIFYICONDATA
Private Sub Form_Load()
'Comprova que no hagi en memòria un altra instància del programa
If App.PrevInstance ThenVisualitzarMissatge "Solament pot haver una instància activa.",vbInformation, "", NoLog
End End If
PathStr = App.Path
If Len(PathStr) > 3 Then PathStr = PathStr & "\" End If
Call GenerarLog("Inici aplicació", True) Call CarregarConfiguracio(PathStr & FitxerConfiguracio)
'Col·loca l’ icona de l’ aplicació en la barra de tasques
t.cbSize = Len(t) t.hwnd = pichook.hwnd t.uId = 1& t.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE t.ucallbackMessage = WM_MOUSEMOVE t.hIcon = Me.Icon t.szTip = "Gestió Remota 1.0" & vbNullChar Shell_NotifyIcon NIM_ADD, t Me.Hide App.TaskVisible = False
'Es carrega el formulari principal en memòria, però no es mostra
Load Formulari
'Si no esta activada l’ opció Inici Minimitzat, mostra elformulari 'principal
If (Not IniciMinimitzat) Then Formulari.Show End If
End Sub
Annexes
235
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
'Treu l’ icona del programa de la barra de tasques
t.cbSize = Len(t) t.hwnd = pichook.hwnd t.uId = 1& Shell_NotifyIcon NIM_DELETE, t
End Sub
Private Sub Mostrar_Click()
'Mostra el formulari principal Formulari.Show
End Sub
'Subrutina que vigila el ratolí quan es troba damunt de l’ icona de'l’ aplicació
Private Sub pichook_MouseMove(Button As Integer, Shift As Integer, xAs Single, y As Single)Static rec As Boolean, msg As Long
msg = x / Screen.TwipsPerPixelX
If rec = False Then rec = True Select Case msg Case WM_LBUTTONDBLCLK: Formulari.WindowState = vbNormal Formulari.Show Case WM_LBUTTONDOWN: Case WM_LBUTTONUP: Case WM_RBUTTONDBLCLK: Case WM_RBUTTONDOWN: Case WM_RBUTTONUP: Me.PopupMenu Menu End Select rec = False End If
End Sub
Annexes
236
'Subrutina que finalitza l' aplicació
Private Sub Sortir_Click()
SortirPrograma = True Unload Formulari Unload Me
End Sub
Private Sub Timer1_Timer()
'Mostra durant un moment la barra de tasques si es troba oculta
MostrarSystemTray
Torn = Not Torn
t.cbSize = Len(t) t.hwnd = pichook.hwnd t.uId = 1& t.uFlags = NIF_ICON
If Torn Then t.hIcon = Me.Icon Else t.hIcon = pichook.Picture End If
'Modifica l' icona de la barra de tasques
t.szTip = "Gestió Remota 1.0" & vbNullChar Shell_NotifyIcon NIM_MODIFY, t
End Sub
Codi 3. Form1
Annexes
237
9.1.3.2 Formulari1
Dim t As NOTIFYICONDATADim Indicador As IntegerDim Contador As IntegerDim Final As BooleanDim Fil As IntegerDim Colum As IntegerDim NumElements As LongDim ColorCaselles As LongDim ShowDialog As Boolean
'Constants que determinen el tamany del Grid
Const AmpladaGrid As Integer = 4070 + 10Const AmpladaCol0 As Integer = 700Const AmpladaCol1 As Integer = 1000Const AmpladaCol2 As Integer = 600Const AmpladaCol3 As Integer = 800Const AmpladaCol4 As Integer = 965
Const MaxFiles As Integer = 10Const MaxColumnes As Integer = 5Const TamanyFiles As Integer = 250
Private Sub BotoDetalls_Click()
'Mostra el formulari on es mostra tota l' informació sobre la'maquina seleccionada o l' ultima maquina
Formulari2.Show
End Sub
Annexes
238
Private Sub BotoInterrogar_Click()
If Not Consulta Then
Consulta = True
Set Taula(1) = Base.OpenRecordset("Tabla2")
'Es mira que la taula de la base de dades no estigui buida
If Not Taula(1).EOF Then
Call DeshabilitarMenus Call DeshabilitarBotons
'Mostra el formulari per interroga maquines dispensadores
Formulari6.Show
Else VisualitzarMissatge "No hi ha cap registre en la base de dades"
, vbInformation, "", ForçarLog End If
Consulta = False
End If
End Sub
'Subrutina utilitzada per realitzar la configuració del sistema, la'qual permet interrogar a una maquina dispensadora encara que no es'trobi a la base de dades
Private Sub BotoTest_Click()Dim StrTelefon As StringDim Missatge As StringDim r As Integer
StrTelefon = InputBox("Introduir un numero de telèfon","Mode Test")
If StrTelefon <> "" Then
Text1.Text = "Realitzant Consulta " Text1.Refresh
'Interroga a la maquina dispensadora, retorna un 0 si ha 'finalitzat la comunicació correctament
r = RealitzarConsulta(StrTelefon)
Annexes
239
If r <> 0 Then
If (r = NoEscriptura) Or (r = EscripturaIncompleta) Or(r = EscripturaPlaca) Then
Missatge = " (Error de E/S)" End If
VisualitzarMissatge "Error de marcacio " & Missatge,vbInformation, "", ModeLog + ForçarLog
End If End IfEnd Sub
Private Sub Form_Initialize()
'Evita que es pugui redimensionar el formulari principal
RemoveMenuItem Me
ShowDialog = True
MenuModeLog.Checked = (ModeLog <> 0) Menu3_1.Checked = IniciMinimitzat
ResultatIniDriver = Open_Driver()
If ResultatIniDriver = ObrirDriverOk Then
'Inicialitza la targeta de monitoritzacio per PC Call WriteToPort(Direcció, 0)
'Habilitació del timer que realitza l' enquesta del bus ISA Timer1.Enabled = True Else Text1.Text = "Error al obrir el driver"
'Es deshabilita el boto Interrogar Maquines i menú Mode Test BotoInterrogar.Enabled = False Menu3_3.Enabled = False
End If
'Fa que la matriu dinàmica, Maquines de dues dimensions tingui un element
NumElements = 0 ReDim Maquines(1, 0) As Integer
Call Inicialitzar
Annexes
240
'Control d’ errors, si es produeix un error al obrir la base de'dades, mostra el missatge d’ error corresponent. Després'mostra el quadre de diàleg Obrir Base de Dades un sol cop.'Si la primera base de dades que es selecciona no es correcta'llavors, ho indica i finalitza l’ aplicació
On Error GoTo NoDataBase
Set Base = OpenDatabase(DataBaseString)
Exit Sub
NoDataBase:
VisualitzarMissatge Err.Description, vbInformation, "", ForçarLog
If ShowDialog Then ShowDialog = False Call ShowOpenDialog(True) Resume End If
Unload Form1 Unload Me End
End Sub
'Modifica el tamany de les columnes i files del Grids. També'modifica l’alineació de les celes
Private Sub Inicialitzar()
With Grid1(0)
.ColWidth(0) = AmpladaCol0 .ColWidth(1) = AmpladaCol1 .ColWidth(2) = AmpladaCol2 .ColWidth(3) = AmpladaCol3 .ColWidth(4) = AmpladaCol4
.ColAlignment(0) = flexAlignCenterCenter .ColAlignment(1) = flexAlignLeftCenter .ColAlignment(2) = flexAlignRightCenter .ColAlignment(3) = flexAlignCenterCenter .ColAlignment(4) = flexAlignLeftCenter
.Height = 1 * (TamanyFiles + 2) + 100 .Width = AmpladaGrid + (MaxColumnes * 5) + 75
End WithWith Grid1(1)
Annexes
241
.Clear .Visible = False
.Height = MaxFiles * (TamanyFiles + 2) + 100 .Width = AmpladaGrid + (MaxColumnes * 5) + 75
Call RedimensionarGrid
.Visible = True
End With
End Sub
'Subrutina que redimensiona el segon Grid i ajusta l' alineació de'les celes
Private Sub RedimensionarGrid()Dim i As Integer
With Grid1(1)
.ColWidth(0) = AmpladaCol0 .ColWidth(1) = AmpladaCol1 .ColWidth(2) = AmpladaCol2 .ColWidth(3) = AmpladaCol3 .ColWidth(4) = AmpladaCol4
.ColAlignment(0) = flexAlignCenterCenter .ColAlignment(1) = flexAlignLeftCenter .ColAlignment(2) = flexAlignRightCenter .ColAlignment(3) = flexAlignCenterCenter .ColAlignment(4) = flexAlignLeftCenter
If .Rows > MaxFiles Then .Width = AmpladaGrid + (MaxColumnes * 5) + 75 + 240 Else .Width = AmpladaGrid + (MaxColumnes * 5) + 75 End If
For i = 0 To .Rows - 1 .RowHeight(i) = TamanyFiles Next i
End With
End Sub
Annexes
242
'Subrutina que introdueix l' identificador i el valor de les entrades'en una matriu dinàmica, on es guarda totes les dades rebudes en la'sessió
Private Sub Insertar(Ident As Integer, Inputs As Integer)
ReDim Preserve Maquines(1, NumElements) As Integer
Maquines(0, NumElements) = Ident Maquines(1, NumElements) = Inputs
NumElements = NumElements + 1
End Sub
'Subrutina que afegeix una fila mes al segon Grid o quadre Dades Rebudes
Private Sub InsertarFilaGrid()
If NumElements > MaxFiles Then Grid1(1).Rows = NumElements End If
End Sub
'Introdueix l' informació rebuda als dos Grids
Private Function InsertarGrid() As BooleanDim camps As Integer
If ModeTest Then Id = 0 End If
If Interrogacio Then MatDades(Identificador) = Id End If
'Comprova si l' identificador rebut es troba a la base de dades'i llavors en recupera l’ informació
camps = ConsultaSql(1, "Identificador", MatDades(Identificador), 0)
Annexes
243
'Si ha trobat l' identificador, mostra les dades als Grids
If camps > 0 Then
With Grid1(1)
.Visible = False
Id = MatDades(Identificador) Fila = NumElements Call Insertar(MatDades(Identificador), MatDades(Entrades)) Call InsertarFilaGrid Call RedimensionarGrid
.Row = NumElements - 1
'Hora en que es rep l' informació .Col = 0 Hora = Time .Text = Hora
'Tipus de maquina .Col = 1 .Text = Taula(0).Fields(1)
'Identificador de la placa .Col = 2 .Text = Taula(0).Fields(0)
'Localització de la maquina dispensadora .Col = 4 .Text = Taula(0).Fields(2)
'Estat de la maquina dispensadora .Col = 3 If MatDades(Entrades) = 0 Then .Text = "Correcte" Else .Text = "Incorrecte" End If
.Visible = True
'Envia un missatge al MsflexGrid per que realitzi un scroll 'cap a baix per mostrar l' ultima línia
SendMessage Grid1(1).hwnd, WM_VSCROLL, SB_BOTTOM, 0
End With
Annexes
244
With Grid1(0)
.Visible = False
.Row = 0
'Hora en que es rep l' informació .Col = 0 Hora = Time .Text = Hora
'Tipus de maquina .Col = 1 .Text = Taula(0).Fields(1)
'Identificador de la placa .Col = 2 .Text = Taula(0).Fields(0)
'Localització de la maquina dispensadora .Col = 4 .Text = Taula(0).Fields(2)
'Estat de la maquina dispensadora .Col = 3 If MatDades(Entrades) = 0 Then .Text = "Correcte" .CellBackColor = &HFFFF00 Else .Text = "Incorrecte" .CellBackColor = &HFF& End If
.Visible = True
End With
End If
InsertarGrid = (camps > 0)
End Function
Annexes
245
'Si rep el missatge de finalitzacio, però la variable SortirPrograma esta'a fals, el formulari principal s' oculta però no es surt del'programa. Els altres formularis son descarregats de memòria
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Unload Formulari2 Unload Formulari3 Unload Formulari4 Unload Formulari5 Unload Formulari6 Unload Formulari7 Unload Formulari8
If Not SortirPrograma Then Cancel = True Me.Hide End If
End Sub
'Quan el formulari principal es descarrega de memòria, es guarda la'configuració al fitxer, actualitza el fitxer de Log i tanca el driver.
Private Sub Form_Unload(Cancel As Integer)
GuardarConfiguracio (PathStr & FitxerConfiguracio) GenerarLog "Finalitzacio de l' aplicació"
If ResultatIniDriver = ObrirDriverOk Then Call Close_Driver End If
End Sub
Annexes
246
'Quan es produeix un click en el segon Grid amb el boto esquerre del'mouse, llavors guarda l' informació de la maquina que hi havia en'aquella fila, per consultar-la després amb el boto Detalls.
Private Sub Grid1_MouseDown(Index As Integer, Button As Integer,Shift As Integer, x As Single, y As Single)
With Grid1(1)
If Index = 1 Then
If Button = vbLeftButton Then
.Col = 2
If .Text <> "" Then Id = Val(.Text) .Col = 0 Hora = .Text Fila = .Row End If
.Col = 0
End If End IfEnd With
End Sub
'Menú IniciMinimitzat
Private Sub Menu3_1_Click() IniciMinimitzat = Not IniciMinimitzat Menu3_1.Checked = IniciMinimitzatEnd Sub
'Menú Opcions
Private Sub Menu3_2_Click() Call DeshabilitarMenus Call DeshabilitarBotons Formulari5.ShowEnd Sub
Annexes
247
'Menú Mode Test
Private Sub Menu3_3_Click()
'Aquí s' activa el Mode Test
If Not ModeTest Then
If ObrirBaseDeDadesTest Then
GenerarLog ("Inici Mode Test")
BotoTest.Visible = True BotoInterrogar.Enabled = False Menu2.Enabled = False MenuObrir.Enabled = False
'Amb aquesta variable s' indica que a l' hora de mostrar 'les dades, no s' utilitzi l' identificador que s' ha rebut
Interrogacio = True
'Canvia el mode de funcionament del programa de la placa de 'monitoritzacio per PC
CanviarMode Test
ModeTest = True
ElseVisualitzarMissatge "No es pot iniciar el Mode Test" &Chr(13) & Chr(10) & "(Error al obrir " & BaseDeDadesTest& ").", vbExclamation, "", ForçarLog
End If
Else
GenerarLog ("Retorn al Mode Normal") BotoTest.Visible = False BotoInterrogar.Enabled = True Menu2.Enabled = True MenuObrir.Enabled = True Interrogacio = False CanviarMode Normal Set Base = OpenDatabase(DataBaseString) ModeTest = False
End If
Menu3_3.Checked = ModeTest
End Sub
Annexes
248
'Menú Sobre l' Aplicació
Private Sub Menu4_0_Click() Call DeshabilitarMenus Call DeshabilitarBotons Formulari8.ShowEnd Sub
'Menú Maquines
Private Sub MenuMaquines_Click()Dim i As Integer
On Error GoTo DatabaseIncorrect
'Primer mira si hi ha algun Tipus de Maquina en la base de dades,'realitzant una consulta SQL, si no hi ha cap o indica i no mostra el'formulari per introduir l' informació de les maquines dispensadores
Sql = "SELECT Tabla2.TipusMaquina From Tabla2 WHERE(((Tabla2.TipusMaquina) Like '" & "*" & "'));"
Set Taula(0) = Base.OpenRecordset(Sql)
If Not Taula(0).EOF Then Taula(0).MoveLast i = Taula(0).RecordCount Taula(0).MoveFirst End If
If i > 0 Then Call DeshabilitarMenus Call DeshabilitarBotons Formulari3.Show Else
VisualitzarMissatge "S' ha d' introduir primer el tipus de maquina",vbInformation
End If
Exit Sub
DatabaseIncorrect:
VisualitzarMissatge Err.Description, vbInformation, "", ForçarLog
End Sub
Annexes
249
'Menú Sortir ( solament oculta el formulari principal )
Private Sub Menu1_1_Click() Unload MeEnd Sub
'Menú ModeLog
Private Sub MenuModeLog_Click() MenuModeLog.Checked = Not MenuModeLog.Checked
If MenuModeLog.Checked Then ModeLog = 1 Else ModeLog = 0 End IfEnd Sub
'Menú Obrir Base de Dades
Private Sub MenuObrir_Click() Call ShowOpenDialog(True)End Sub
'Menú Tipus Maquina
Private Sub MenuTipusMaquines_Click() Call DeshabilitarMenus Call DeshabilitarBotons Formulari4.ShowEnd Sub
'Menú Veure Log
Private Sub MenuVeureLog_Click()Dim DescripcioError As String
On Error GoTo FaltaNotepad Shell "notepad " & PathStr & FitxerLog, vbNormalFocusExit Sub
FaltaNotepad: DescripcioError = Err.Description If Err.Number = 53 Then DescripcioError = DescripcioError & " Notepad.exe" End If VisualitzarMissatge DescripcioError, vbCritical, ""End Sub
Annexes
250
'Subrutina on periòdicament es llegeix una direcció de l' espai E/S on'es troben mapejats el registres de la placa de monitoritzacio per PC
Private Sub Timer1_Timer()Dim aux2 As IntegerDim aux As ByteDim a As Byte
'Llegeix el registre d' Estat de la Placa de Monitoritzacio per PC
aux = ReadFromPort(Direcció)
'Si la placa es vol comunicar amb el programa, llavors activa el'bit BSE del registre d' Estat ( bit de mes pes del registre )
If (aux And BSE) Then
'El bits 6,5 i 4 del registre d' Estat, serveixen per indicar'com han anat les comunicacions. Si els 3 bits es troben a'zero, podria indicar que la placa esta enmig d' un procés'de lectura
If ((aux And &H70) <> 0) Then
Select Case (aux And &H70)
Case &H70 If (aux And &HF) = 0 Then Text1.Text = MostrarMissatges(&H70) End If
'Si la comunicació es correcta, llavors es llegeix les 'dades ( identificador i el valor de les entrades ). 'Tant l'identificador com els valors de les entrades, 'es tracta de 16 bits, encara que en les entrades 'solament s' utilitzen 12
Case &H10 aux2 = LlegirDades() Text1.Text = MostrarMissatges(&H10)
'Si les dades s' han llegit correctament de la placa, 'es procedeix a mostrar les dades en els Grids
Annexes
251
If aux2 >= 0 Then If InsertarGrid Then
'Codi de la Sistray Timer2.Enabled = True
ElseVisualitzarMissatge "S' ha rebut el Id " &Str(MatDades(Identificador)) & " que no es trobaa la base de dades", vbExclamation, "", ModeLog+ ForçarLog
End If Else 'Visualitzar error E/S
VisualitzarMissatge "Error de comunicació amb latargeta per PC", vbCritical, "", ModeLog +ForçarLog
End If
Case Else Text1.Text = MostrarMissatges(aux And &H70) aux2 = Llegir_Bus_Isa(Direcció)
If aux2 < 0 Then 'Visualitzar error E/S
VisualitzarMissatge "Error de comunicació amb latargeta per PC", vbCritical, "", ModeLog +ForçarLog
End If
End Select
a = aux And &H70
'Aquí es comprova si ha finalitzat la consulta de la 'maquina dispensadora
If (a = &H10) Or (a = &H40) Or (a = &H50) Then FinalConnexio = True End If
End If
End If
End Sub
Annexes
252
'Subrutina que mostra el quadre de diàleg Obrir Bases de Dades.'Mitjançant el seu paràmetre SaveDataBase, se li pot indicar si'aquesta base de dades es guarda com la base de dades per defecte
Private Sub ShowOpenDialog(SaveDataBase As Boolean)
On Error GoTo Cancel
With CommonDialog1 .FileName = "" .Filter = "Base de dades Access |*.mdb" .ShowOpen Set Base = OpenDatabase(.FileName)
If SaveDataBase Then DataBaseString = .FileName End If End WithExit Sub
Cancel:
'Si no es tracta del boto cancel·lar, es mostra la descripció de l' error
If Err.Number <> 32755 Then VisualitzarMissatge Err.Description, vbExclamation, "" End If
End Sub
Annexes
253
'Aquesta subrutina, canvia l' icona del programa quan l' aplicació'esta minimitzada en la barra de tasques
Private Sub Timer2_Timer()
If Me.WindowState = vbMinimized Then
Indicador = 3 Contador = Contador + 1
If Contador <= 4 Then
MostrarSystemTray t.cbSize = Len(t) t.hwnd = Form1.pichook.hwnd t.uId = 1& t.uFlags = NIF_ICON Or NIF_TIP
If (Contador Mod 2) = 0 Then t.hIcon = Form1.Icon Else t.hIcon = Form1.Picture1(Indicador) End If
t.szTip = "Gestió Remota 1.0" & vbNullChar Shell_NotifyIcon NIM_MODIFY, t Else Contador = 0 Timer2.Enabled = False End If Else Contador = 0 Timer2.Enabled = False End If
End Sub
Codi 4. Formulari
Annexes
254
9.1.3.3 Formulari2
Private Sub BotoAcceptar_Click()
'Descarrega el Formulari2 de memòria Unload Formulari2
End Sub
Private Sub Form_Load()Dim camps As Integer
'Evita que es pugui modificar el tamany del formulari
RemoveCancelMenuItem Me
Call DeshabilitarMenus Call DeshabilitarBotons
'L’ identificador 0, esta reservat per a realitzar proves en el'Mode Test. Quan es troba en aquest mode, l’ aplicació utilitza'la base de dades Test.mdb la qual sol conte una maquina amb'l’ identificador 0.
'Llavors depenen en el mode que es troba l’ aplicació, haurà de'canviar de base de dades per mostrar l’ informació d’ una'determinada maquina segons el seu identificador
If (Id > 0) And (Id < 10000) Then
If ModeTest Then Set Base = OpenDatabase(DataBaseString) End If
'Busca a la base de dades el registre que te com a 'identicador el valor de Id
camps = ConsultaSql(1, "Identificador", Id, 1)
If camps > 0 Then MostrarDades End If
If ModeTest Then Set Base = OpenDatabase(PathStr & BaseDeDadesTest) End If
Annexes
255
Else
If (Id = 0) And (Hora <> "") Then
If Not ModeTest Then Set Base = OpenDatabase(PathStr & BaseDeDadesTest) End If
'Busca a la base de dades el registre que te com a 'identicador el valor de Id
camps = ConsultaSql(1, "Identificador", Id, 1)
If camps > 0 Then MostrarDades End If
If Not ModeTest Then Set Base = OpenDatabase(DataBaseString) End If
End If
End IfEnd Sub
'Quan es descarrega el formulari, habilita els menús i els botons
Private Sub Form_Unload(Cancel As Integer) Call HabilitarMenus Call HabilitarBotons Formulari.BotoDetalls.SetFocusEnd Sub
Annexes
256
'Subrutina que mostra totes les dades de la maquina que s' ha rebut'en l' ultima comunicació o de la maquina que s' ha seleccionat en'el segon Grid ( quadre Dades Rebudes ) amb el ratolí al fer click'amb el boto esquerre sobre una fila del mateix
Private Sub MostrarDades()Dim camps As IntegerDim IdStr As StringDim aux As IntegerDim i As Integer
With Grid1
.Visible = False .ColAlignment(0) = flexAlignCenterCenter .ColAlignment(1) = flexAlignLeftCenter .ColAlignment(2) = flexAlignLeftCenter .ColAlignment(3) = flexAlignLeftCenter .Row = 0
'Hora .Col = 0 .Text = Hora
'Identificador .Col = 1 IdStr = LTrim(Str(Id))
Select Case (Len(IdStr)) Case 1 IdStr = "000" & IdStr Case 2 IdStr = "00" & IdStr Case 3 IdStr = "0" & IdStr End Select
.Text = "Id: " & IdStr
'Tipus de maquina .Col = 2 .Text = "Tipus:" .Col = 3 .Text = Taula(1).Fields(1)
.Row = 1 'Situació .Col = 0 .Text = "Situació:" .Col = 1 .Text = Taula(1).Fields(2) 'Telèfon
Annexes
257
.Col = 2 .Text = "Telèfon:" .Col = 3 .Text = Taula(1).Fields(3) .Visible = True
End With
'Accedeix a la segona taula per obtenir les descripcions 'de les entrades corresponents al Tipus de Maquina
camps = ConsultaSql(2, "TipusMaquina", Taula(1).Fields(1), 1)
If camps > 0 Then
With Grid2
.Visible = False aux = 1
'Aquí comprova quines entrades estan actives i 'mostra la seva descripció si es present a la 'base de dades
For i = 0 To camps - 2
If Maquines(Entrades, Fila) And aux Then
.Row = Int(i / 4) .Col = i Mod 4 .Text = ""
If Not IsNull(Taula(1).Fields(1 + i)) Then .Text = Taula(1).Fields(1 + i) End If
End If
aux = aux * 2
Next i
.Visible = True
End With
End If
End Sub
Codi 5. Formulari2
Annexes
258
9.1.3.4 Formulari3
Dim ComboStr As String
'Els botons que s' utilitzen per desplaçar-se pels registres de la'base de dades, formen una matriu de controls i sols tenen un event'i mitjançant la variable Index es pot saber quin es el boto que's’ ha pitjat
Private Sub Boto_Click(Index As Integer)
BotoEsborrar.Enabled = True BotoEdit.Enabled = True BotoAfegir.Enabled = True BotoConfirmar.Enabled = False
Select Case Index
'Primer Case 0 'Comprova que la base de dades no estigui buida
If Not Taula(2).EOF Or Not Taula(2).BOF Then Taula(2).MoveFirst End If
'Anterior Case 1 If Not Taula(2).BOF Then Taula(2).MovePrevious End If
'Següent Case 2 If Not Taula(2).EOF Then Taula(2).MoveNext End If
'Últim Case 3 'Comprova que la base de dades no estigui buida
If Not Taula(2).EOF Or Not Taula(2).BOF Then Taula(2).MoveLast End If
End Select
Call MostrarCampsEnd SubPrivate Sub BotoAcceptar_Click() 'Descarrega el Formulari3 de memòria
Annexes
259
Unload Formulari3End Sub
'En aquesta subrutina, s' esborren tots els TextBox i s' executa el'mètode AddNew del RecordSet
Private Sub BotoAfegir_Click()
Text1(4).Text = "" ComboStr = Combo1.List(0) Combo1.Text = ComboStr Text1(5).Text = "" Text1(6).Text = "" Text1(4).SetFocus Taula(2).AddNew
BotoAfegir.Enabled = False BotoEsborrar.Enabled = False BotoEdit.Enabled = False BotoConfirmar.Enabled = True
End Sub
'Subrutina que esborra un registre de la base de dades sinó es troba'buida. Utilitza el mètode Delete del RecordSet
Private Sub BotoEsborrar_Click()
If Not Taula(2).BOF And Not Taula(2).EOF Then Taula(2).Delete Taula(2).MoveFirst Call MostrarCamps Else Text1(4).Text = "" ComboStr = Combo1.List(0) Combo1.Text = ComboStr Text1(5).Text = "" Text1(6).Text = "" End If
End Sub
Private Sub BotoCancel_Click() Unload Formulari3End Sub
Annexes
260
'Aquesta subrutina confirma l' entrada de dades, quan s’ han'introduït de nous o simplement s' han editat. Utilitza el mètode'Update del RecordSet. Si hi ha algun camp que no es vàlid, ho'indica amb un MsgBox
Private Sub BotoConfirmar_Click()Dim i As Integer
On Error GoTo ErrorEntradaDades
If ComprobarCamps Then
Call AfegirCamps Taula(2).Update
Call MostrarCamps
BotoEsborrar.Enabled = True BotoEdit.Enabled = True BotoAfegir.Enabled = True BotoConfirmar.Enabled = False
ElseVisualitzarMissatge "Hi ha algun camp incorrecte.",vbInformation
End If
Exit Sub
ErrorEntradaDades:
VisualitzarMissatge Err.Description, vbCritical
End Sub
Annexes
261
'Subrutina que permet editar l' informació d' un registre de la base'de dades. Utilitza el mètode Edit del RecordSet
Private Sub BotoEdit_Click()
If Not Taula(2).BOF And Not Taula(2).EOF Then
Taula(2).Edit
BotoEsborrar.Enabled = False BotoAfegir.Enabled = False BotoConfirmar.Enabled = True BotoEdit.Enabled = False
Text1(4).SetFocus
End If
End Sub
Private Sub Combo1_Change()
Combo1.Text = ComboStr
End Sub
Private Sub Combo1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then KeyAscii = 0 SendKeys "tab" End IfEnd Sub
'Quan el Formulari3 s' activa, llavors passa'el focus al BotoAfegir
Private Sub Form_Activate() BotoAfegir.SetFocusEnd Sub
Annexes
262
'Inicialitza el formulari i carrega els Tipus de Maquina en el'ComboBox. També obre la primera taula i mostra el primer registre
Private Sub Form_Load()
RemoveCancelMenuItem Me
Do While Not Taula(0).EOF Combo1.AddItem Taula(0).Fields(0) Taula(0).MoveNext Loop
ComboStr = Combo1.List(0) Combo1.Text = ComboStr
Set Taula(2) = Base.OpenRecordset("Tabla1")
Call MostrarCamps
End Sub
Private Sub AfegirCamps()
Taula(2).Fields(0) = Text1(4).Text Taula(2).Fields(1) = Combo1.Text Taula(2).Fields(2) = Text1(5).Text Taula(2).Fields(3) = Text1(6).Text
End Sub
'Subrutina que comprova que no hi hagi cap camp buit i que en el'numero de telèfon, s' escrigui un numero amb la longitud adequada
Private Function ComprobarCamps() As BooleanDim Resultat As Boolean
Resultat = TrueResultat = EsNumero(Text1(6).Text) And (Len(Text1(6).Text) > 2)And ResultatComprobarCamps = (Text1(4).Text <> "") And (Text1(5).Text <> "")And Resultat
End Function
Annexes
263
'Mostra a traves dels TextBox i del ComboBox un registre de la base'de dades
Private Sub MostrarCamps()
If Not Taula(2).BOF And Not Taula(2).EOF Then Text1(4).Text = Taula(2).Fields(0) ComboStr = Taula(2).Fields(1) Combo1.Text = ComboStr Text1(5).Text = Taula(2).Fields(2) Text1(6).Text = Taula(2).Fields(3) Else Text1(4).Text = "" ComboStr = Combo1.List(0) Combo1.Text = ComboStr Text1(5).Text = "" Text1(6).Text = "" End If
End Sub
Private Sub Form_Unload(Cancel As Integer) Call HabilitarMenus Call HabilitarBotonsEnd Sub
Private Sub Text1_GotFocus(Index As Integer) Text1(Index).SelStart = 0 Text1(Index).SelLength = Len(Text1(Index).Text)End Sub
Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer) If KeyAscii = 13 Then KeyAscii = 0 SendKeys "tab" End IfEnd Sub
Codi 6. Formulari3
Annexes
264
9.1.3.5 Formulari4
Private Sub BotoAcceptar_Click() Unload Formulari4End Sub
Private Sub Form_Activate() BotoAfegir.SetFocusEnd Sub
Private Sub Form_Unload(Cancel As Integer) Call HabilitarMenus Call HabilitarBotonsEnd Sub
'Els botons que s' utilitzen per desplaçar-se pels registres de la'base de dades, formen una matriu de controls i sols tenen un event'i mitjançant la variable Index es pot saber quin es el boto que's’ ha pitjat. Després es visualitza el registre seleccionat
Private Sub Boto_Click(Index As Integer) BotoEsborrar.Enabled = True BotoEdit.Enabled = True BotoAfegir.Enabled = True BotoConfirmar.Enabled = False
Select Case Index Case 0 If Not Taula(3).EOF Or Not Taula(3).BOF Then Taula(3).MoveFirst End If
Case 1 If Not Taula(3).BOF Then Taula(3).MovePrevious End If
Case 2 If Not Taula(3).EOF Then Taula(3).MoveNext End If
Case 3 If Not Taula(3).EOF Or Not Taula(3).BOF Then Taula(3).MoveLast End If
End Select Call MostrarCampsEnd Sub
Annexes
265
'En aquesta subrutina, s’ esborren tots els TextBox i s’ executa el'mètode AddNew del RecordSet per començar a introduir l' informació'd’ un nou registre
Private Sub BotoAfegir_Click()Dim i As Integer
For i = 0 To 12 Text2(i).Text = "" Next i
Text2(0).SetFocus Taula(3).AddNew BotoAfegir.Enabled = False BotoEsborrar.Enabled = False BotoEdit.Enabled = False BotoConfirmar.Enabled = True
End Sub
'Subrutina que esborra un registre de la base de dades, sinó es'troba buida. Utilitza el mètode Delete del RecordSet
Private Sub BotoEsborrar_Click()Dim i As Integer
If Not Taula(3).BOF And Not Taula(3).EOF ThenSql = "SELECT Tabla1.* From Tabla1 WHERE (((Tabla1.TipusMaquina)='"& Taula(3).Fields(0) & "'));"
Set Taula(5) = Base.OpenRecordset(Sql)
If Not Taula(5).EOF Then Taula(5).MoveLast i = Taula(5).RecordCount Taula(5).MoveFirst End If
If i = 0 Then Taula(3).Delete Taula(3).MoveFirst Call MostrarCamps Else
VisualitzarMissatge "No es pot esborrar perquè encara esta en us",vbCritical, "Tipus de Maquina"
End If Else For i = 0 To 12 Text2(i).Text = "" Next i End IfEnd Sub
Annexes
266
'Aquesta subrutina confirma l’ entrada de dades, quan s’ han'introduït de nous o simplement s’ han editat. Utilitza el mètode'Update del RecordSet. Si hi ha algun camp que no es vàlid, ho'indica amb un MsgBox
Private Sub BotoConfirmar_Click()
On Error GoTo ErrorEntradaDades
If ComprobarCamps Then Call AfegirCamps Taula(3).Update Call MostrarCamps BotoEsborrar.Enabled = True BotoEdit.Enabled = True BotoAfegir.Enabled = True BotoConfirmar.Enabled = False End If
Exit Sub
ErrorEntradaDades:
VisualitzarMissatge Err.Description, vbExclamation
End Sub
'Subrutina que permet editar l' informació d' un registre de la base'de dades. Utilitza el mètode Edit del RecordSet
Private Sub BotoEdit_Click()
If Not Taula(3).BOF And Not Taula(3).EOF Then
Taula(3).Edit
BotoEsborrar.Enabled = False BotoAfegir.Enabled = False BotoConfirmar.Enabled = True BotoEdit.Enabled = False
Text2(0).SetFocus
End If
End Sub
Annexes
267
'Inicialitza el formulari i obre la segona taula per mostrar el'primer registre
Private Sub Form_Load()
RemoveCancelMenuItem Me
Set Taula(3) = Base.OpenRecordset("Tabla2") Call MostrarCamps
End Sub
Private Sub AfegirCamps()Dim i As Integer
For i = 0 To 12 If Text2(i).Text <> "" Then Taula(3).Fields(i) = Text2(i).Text End If Next i
End Sub
'Subrutina que comprova que no hi hagi cap camp buit
Private Function ComprobarCamps() As Boolean ComprobarCamps = (Text2(0).Text <> "")End Function
'Mostra a traves dels TextBox un registre de la base de dades
Private Sub MostrarCamps()Dim i As Integer
If Not Taula(3).BOF And Not Taula(3).EOF Then For i = 0 To 12 If Not IsNull(Taula(3).Fields(i)) Then Text2(i).Text = Taula(3).Fields(i) Else Text2(i).Text = "" End If Next i Else For i = 0 To 12 Text2(i).Text = "" Next i End IfEnd Sub
Annexes
268
Private Sub Text2_GotFocus(Index As Integer) Text2(Index).SelStart = 0 Text2(Index).SelLength = Len(Text2(Index).Text)End Sub
Private Sub Text2_KeyPress(Index As Integer, KeyAscii As Integer) If KeyAscii = 13 Then KeyAscii = 0 SendKeys "tab" End IfEnd Sub
Codi 7. Formulari4
Annexes
269
9.1.3.6 Formulari5
'Subrutina que actualitza varies de les opcions del programa
Private Sub BotoAcceptar_Click()Dim StrDelay As StringDim aux As Integer
If (Len(Text2.Text) > 0) And (Len(Text2.Text) < 3) Then
aux = Val(Text2.Text)
If (aux > 0) Then Delay = aux End If
End If
DataBaseString = Text3.Text
Select Case IndexOption Case 0 Direccio = &H300 Case 1 Direccio = &H310 Case 2 Direccio = &H320 Case 3 Direccio = &H330 End Select
Unload Formulari5
End Sub
Private Sub BotoCancel_Click() Unload Formulari5End Sub
Annexes
270
'Subrutina que mostra el quadre diàleg Obrir Base de Dades, per tal'de seleccionar quina es la que utilitzarà l’ aplicació. Si es'produeix algun error al obrir la nova base de dades, es mostra un'missatge que indica la causa del error.
Private Sub BotoObrir_Click()
On Error GoTo Cancel
With CommonDialog1
.Filter = "Base de Dades Access |*.mdb" .ShowOpen Set Base = OpenDatabase(.FileName) Text3.Text = .FileName DataBaseString = .FileName
End With
Exit Sub
Cancel:
'Si no es tracta del boto cancel·lar, es mostra la descripció de l’ error
If Err.Number <> 32755 Then VisualitzarMissatge Err.Description, vbExclamation, "" End If
End Sub
Annexes
271
Private Sub Form_Load()
RemoveCancelMenuItem Me
If ModeTest Then BotoObrir.Enabled = False End If
Text2.Text = Delay
Select Case Direccio Case &H300 Option1(0).Value = True Case &H310 Option1(1).Value = True Case &H320 Option1(2).Value = True Case &H330 Option1(3).Value = True End Select
Text3.Text = DataBaseString
End Sub
Private Sub Form_Unload(Cancel As Integer) Call HabilitarMenus Call HabilitarBotonsEnd Sub
Private Sub Option1_Click(Index As Integer) IndexOption = IndexEnd Sub
Private Sub Text2_GotFocus() Text2.SelStart = 0 Text2.SelLength = Len(Text2.Text)End Sub
Private Sub Text3_GotFocus() Text3.SelStart = 0 Text3.SelLength = Len(Text3.Text)End Sub
Codi 8. Formulari5
Annexes
272
9.1.3.7 Formulari6
Dim ComboStr As StringDim NumElements As Long
Const AmpladaGrid As Integer = 4070 + 10 + 200Const AmpladaCol0 As Integer = 450Const AmpladaCol1 As Integer = 1250 + 100Const AmpladaCol2 As Integer = 1250 + 100Const AmpladaCol3 As Integer = 1110Const MaxFiles As Integer = 10Const MaxColumnes As Integer = 4Const TamanyFiles As Integer = 250
Private Sub IniGrid()
With Formulari6.Grid1
.Visible = False .Clear .Height = MaxFiles * (TamanyFiles + 2) + 100 .Width = AmpladaGrid + (MaxColumnes * 5) + 75 Call RedimensionarGrid .Visible = True
End With
End Sub
'Subrutina que redimensiona el Grid del formulari
Private Sub RedimensionarGrid()Dim i As Integer
With Formulari6.Grid1
.ColWidth(0) = AmpladaCol0 .ColWidth(1) = AmpladaCol1 .ColWidth(2) = AmpladaCol2 .ColWidth(3) = AmpladaCol3
.ColAlignment(0) = flexAlignRightCenter .ColAlignment(1) = flexAlignLeftCenter .ColAlignment(2) = flexAlignLeftCenter .ColAlignment(3) = flexAlignCenterCenter
Annexes
273
If .Rows > MaxFiles Then .Width = AmpladaGrid + (MaxColumnes * 5) + 75 + 240 Else .Width = AmpladaGrid + (MaxColumnes * 5) + 75 End If
For i = 0 To .Rows - 1 .RowHeight(i) = TamanyFiles Next i
End With
End Sub
'Subrutina que s' encarrega de realitzar les consultes de Tipus de'Maquina, segons l’ adreça i segons el numero de telèfon. El'resultats son mostrats gràcies al Grid.
Private Sub Boto1_Click(Index As Integer)Dim camps As Integer
With Grid1
.Visible = False .Clear NumElements = 0 .Rows = MaxFiles Call RedimensionarGrid
Select Case (Index) Case 0 camps = ConsultaSql(1, "TipusMaquina", Combo1.Text, 5)
Case 1 camps = ConsultaSql(1, "Adreça", Text2(1).Text, 5)
Case 2 camps = ConsultaSql(1, "Telèfon", Text2(2).Text, 5)
End Select
Do While Not Taula(5).EOF InsertarRegistre (5) Taula(5).MoveNext Loop
.Visible = True
Annexes
274
If NumElements > 0 Then BotoIntMaquines.Enabled = True BotoIntMaquines.SetFocus Else BotoIntMaquines.Enabled = False End If
End With
End Sub
'Subrutina que realitza les consultes basades en l’ identificador.'També mostra els resultats en el Grid
Private Sub Boto2_Click()
With Grid1
.Visible = False .Clear NumElements = 0 .Rows = 10 Call RedimensionarGrid
If (Len(Text2(0).Text) > 0) Then
If SeleccionarMaquines(Text2(0).Text) Then Call InsertarRegistres Else .Visible = True
VisualitzarMissatge "Sintaxis incorrecta", vbInformation,"Interrogar Maquines"
End If
End If
.Visible = True
If NumElements > 0 Then BotoIntMaquines.Enabled = True BotoIntMaquines.SetFocus Else BotoIntMaquines.Enabled = False End If
End With
End Sub
Annexes
275
Private Sub BotoAcceptar_Click() Unload Formulari6End Sub
Private Sub BotoIntMaquines_Click() Me.Hide Formulari.Refresh Timer2.Enabled = TrueEnd Sub
Private Sub Combo1_Click() ComboStr = Combo1.TextEnd Sub
'Inicialitza el formulari i omple el ComboBox amb els diferents'Tipus de Maquina
Private Sub Form_Load()
RemoveCancelMenuItem Me
Call IniGrid
Sql = "SELECT Tabla2.TipusMaquina From Tabla2 WHERE(((Tabla2.TipusMaquina) Like '" & "*" & "'));"
Set Taula(5) = Base.OpenRecordset(Sql)
Do While Not Taula(5).EOF Combo1.AddItem Taula(5).Fields(0) Taula(5).MoveNext Loop
ComboStr = Combo1.List(0) Combo1.Text = Combo1.List(0)
End Sub
'Incrementa el numero de files del Grid si es necessari
Private Sub InsertarFilaGrid() If NumElements > MaxFiles Then Grid1.Rows = NumElements End IfEnd Sub
Annexes
276
Private Sub Form_Unload(Cancel As Integer) Call HabilitarMenus Call HabilitarBotonsEnd Sub
'Subrutina que mostra en el Grid totes les maquines que han estat'seleccionades per la consulta basada en l' identificador, si es'troben a la base de dades
Private Sub InsertarRegistres()Dim camps As IntegerDim i As IntegerDim j As Integer
Do While MatInt(0, i) <> 0
If MatInt(1, i) = 0 Then camps = ConsultaSql(1, "Identificador", MatInt(0, i), 5)
If camps <> 0 Then InsertarRegistre (5) End If
Else For j = MatInt(0, i) To MatInt(1, i) camps = ConsultaSql(1, "Identificador", j, 5)
If camps <> 0 Then InsertarRegistre (5) End If
Next j End If
i = i + 1
Loop
End Sub
Annexes
277
'Mostra en el Grid la maquina que s' ha obtingut de fer una consulta'i que es troba en el RecordSet
Private Sub InsertarRegistre(NumTaula As Integer)Dim i As Integer
With Grid1
NumElements = NumElements + 1
Call InsertarFilaGrid Call RedimensionarGrid
.Row = NumElements - 1
For i = 0 To 3 .Col = i .Text = Taula(NumTaula).Fields(i) Next i
End With
End Sub
'Subrutina que selecciona tot el que hi ha en un TextBox quan rep el'focus
Private Sub Text2_GotFocus(Index As Integer)
Text2(Index).SelStart = 0 Text2(Index).SelLength = Len(Text2(Index).Text)
End Sub
Annexes
278
'Subrutina que s' encarrega d' interrogar a les maquines que es'troben en el Grid
Private Sub RealitzarConsultes()Dim Missatge As StringDim r As IntegerDim i As Integer
With Grid1
Cancel = False
Do While (i <= (NumElements - 1) And Not Cancel)
.Row = i .Col = 0 Formulari.Text1.Text = "Realitzant consulta Id " & .Text Formulari.Text1.Refresh Formulari7.Label1.Caption = "Realitzant consulta Id " & .Text Formulari7.Label1.Refresh Call ActualitzarProgressBar(i) .Col = 3
r = RealitzarConsulta(.Text)
If r <> 0 Then .Col = 0
If (r = NoEscriptura) Or (r = EscripturaIncompleta) Or(r = EscripturaPlaca) Then
Missatge = " (Error de E/S)" End If
VisualitzarMissatge "Error de marcacio Id " & .Text &Missatge, vbInformation, "", ModeLog + ForçarLog
End If
i = i + 1
Loop
End With
End Sub
Private Sub Combo1_Change()
Combo1.Text = ComboStr
End Sub
Annexes
279
Private Sub ActualitzarProgressBar(Optional Valor As Integer)
With Formulari6.Grid1
If Valor = 0 Then Formulari7.ProgressBar1.Min = 0 Formulari7.ProgressBar1.Max = NumElements End If
Formulari7.ProgressBar1.Value = 1 + Valor Formulari7.ProgressBar1.Refresh
End With
End Sub
'Després d' un segon de pitjar el boto Interrogar Maquines, comença'la consulta i mostra el formulari7 que indica el progrés i la'maquina que s’ esta interrogant en aquell moment
Private Sub Timer2_Timer()
Timer2.Enabled = False
Formulari7.Show Formulari7.Refresh
Call RealitzarConsultes Formulari7.Label1.Refresh
Sleep (1000)
Unload Formulari7 Unload Me
End Sub
Codi 9. Formulari6
Annexes
280
9.1.3.8 Formulari7
Private Sub Command1_Click()
Cancel = True Formulari.Text1.Text = "Interrogació cancel·lada per l' usuari" Formulari.Text1.Refresh
End Sub
Codi 10. Formulari7
9.1.3.9 Formulari8
Private Sub Boto1_Click() Unload Formulari8End Sub
Private Sub Form_Load() RemoveCancelMenuItem Me
' Projecte Final de Carrera :' Gestió Remota per Línia Telefònica de' Maquines Dispensadores Automàtiques.' Autor: José Antonio Agraz Millat' Director: Jesús Brezmes Llecha
Label1.Caption = "Gestió Remota 32 Bits per" & Chr(13) & Chr(10)& "WinNT, Win9x i Win2000"
Label3.Caption = "Projecte Final de Carrera :" & Chr(13) &Chr(10) & "" & Chr(13) & Chr(10) & "Gestió Remota per LíniaTelefònica de" & Chr(13) & Chr(10) & "Maquines DispensadoresAutomàtiques." & Chr(13) & Chr(10) & "" & Chr(13) & Chr(10) &"Autor: José Antonio Agraz Millat" & Chr(13) & Chr(10) &"Director: Jesús Brezmes Llecha"
End Sub
Private Sub Form_Unload(Cancel As Integer) Call HabilitarMenus Call HabilitarBotonsEnd Sub
Codi 11. Formulari8
Annexes
281
9.1.3.10 Mòdul Declaracions
'Declaracions i funcions del API de Windows
Public Type NOTIFYICONDATA
cbSize As Long
hwnd As Long
uId As Long
uFlags As Long
ucallbackMessage As Long
hIcon As Long
szTip As String * 64
End Type
Public Const NIM_ADD = &H0
Public Const NIM_MODIFY = &H1
Public Const NIM_DELETE = &H2
Public Const WM_MOUSEMOVE = &H200
Public Const NIF_MESSAGE = &H1
Public Const NIF_ICON = &H2
Public Const NIF_TIP = &H4
Public Const WM_LBUTTONDBLCLK = &H203
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_LBUTTONUP = &H202
Public Const WM_RBUTTONDBLCLK = &H206
Public Const WM_RBUTTONDOWN = &H204
Public Const WM_RBUTTONUP = &H205
Public Declare Function Shell_NotifyIcon Lib "shell32" Alias"Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA)As Boolean
Public Const WM_VSCROLL As Long = &H115
Public Const SB_BOTTOM As Long = 7
Public Const WM_SETFOCUS = &H7
Public Const WM_ACTIVATE = &H6
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
Annexes
282
(ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, lParam As Any) As Long
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA"(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Const MF_BYPOSITION = &H400&
Public Const MF_REMOVE = &H1000&
Public Declare Function GetSystemMenu Lib "user32" (ByVal hwnd AsLong, ByVal bRevert As Long) As Long
Public Declare Function RemoveMenu Lib "user32" (ByVal hMenu AsLong, ByVal nPosition As Long, _
ByVal wFlags As Long) As Long
Codi 12. Mòdul Declaracions
Annexes
283
9.1.3.11 Mòdul Funcions
'Variables utilitzades per accedir a la base de dades
Global Base As DatabaseGlobal Taula(6) As RecordsetGlobal Sql As String
Global SortirPrograma As BooleanGlobal FinalConnexio As BooleanGlobal Interrogacio As BooleanGlobal Consulta As BooleanGlobal Cancel As Boolean
'Matrius de dues dimensions dinàmica
Global Maquines() As IntegerGlobal MatInt() As Integer
Global ResultatIniDriver As IntegerGlobal ModeLog As IntegerGlobal IniciMinimitzat As BooleanGlobal ModeTest As BooleanGlobal Id As IntegerGlobal Fila As IntegerGlobal Hora As StringGlobal PathStr As StringGlobal IndexOption As IntegerGlobal DataBaseString As String
'Constants
Public Const NoLog As Byte = 0Public Const ForçarLog As Byte = 2
'Nom de la base de dades que s' usa per defecte
Public Const BaseDeDades As String = "bd2000.mdb"Public Const BaseDeDadesTest As String = "Test.mdb"
Public Const FitxerLog As String = "Log.txt"Public Const FitxerConfiguracio As String = "GestioRemota.ini"
Annexes
284
'Funció que realitza una consulta SQL. Mitjançant els paràmetres, se'li pot especificar quina taula ha d’ utilitzar, el camp que ha'd’ utilitzar per realitzar la cerca, quin RecordSet utilitza i el'que es busca
Public Function ConsultaSql(NumTabla As Integer, Camp As String,IndexBusqueda As Variant, NumTaula As Integer) As LongDim camps As Integer
If VarType(IndexBusqueda) <> vbString ThenSql = "SELECT Tabla" & NumTabla & ".* From Tabla" & NumTabla & "WHERE (((Tabla" & NumTabla & "." & Camp & ")=" &IndexBusqueda & "));"
ElseSql = "SELECT Tabla" & NumTabla & ".* From Tabla" & NumTabla & "WHERE (((Tabla" & NumTabla & "." & Camp & ")=" & Chr(34) &IndexBusqueda & Chr(34) & "));"
End If
Set Taula(NumTaula) = Base.OpenRecordset(Sql)
If Not Taula(NumTaula).EOF Then Taula(NumTaula).MoveFirst camps = Taula(NumTaula).Fields.Count End If
ConsultaSql = camps
End Function
'Funció que retorna la descripció del codi Status
Public Function MostrarMissatges(Status As Integer) As StringDim m As String
Select Case Status Case -1 m = "Error al Obrir el Driver" Case 0 m = "Operació Ok" Case &H10 m = "Recepció de Dades" Case &H20 m = "Trucada" Case &H30 m = "Connexió Correcta" Case &H40 m = "Error Sèrie" Case &H50 m = "Error de Connexió" Case &H70 m = "Marcar"
Annexes
285
Case Else m = "Error " & Status End Select
MostrarMissatges = m
End Function
'Funció que mira si el contingut del String es numero
Public Function EsNumero(Num As String) As BooleanDim Resultat As BooleanDim Longitud As IntegerDim i As Integer
Longitud = Len(Num) Resultat = True
For i = 1 To LongitudResultat = ((Asc(Mid(Num, i, 1)) >= 48) And (Asc(Mid(Num, i, 1)) <= 57))And Resultat
Next i
EsNumero = Resultat
End Function
'Funció que comprova si existeix un fitxer, el nom del qual es passa'com a paràmetre
Public Function ExisteixFitxer(Fitxer As String) As Boolean
On Error GoTo NoFitxer
Open Fitxer For Input As #1 Close #1 ExisteixFitxer = True
Exit Function
NoFitxer:
ExisteixFitxer = False
End Function
Annexes
286
'Funció que carrega la configuració, si llegeix algun valor'incorrecte o es produeix algun error al llegir el fitxer on es'guarda la configuració, llavors carrega la configuració per defecte
Public Sub CarregarConfiguracio(NomFitxer As String)Dim Longitud As IntegerDim Str1 As StringDim Str2 As StringDim Str3 As StringDim Str4 As StringDim error As Boolean
'Control d' errors
On Error GoTo ConfigError
If ExisteixFitxer(NomFitxer) Then Open NomFitxer For Input As #1
If Not EOF(1) Then Input #1, Str1, Str2, Str3, Str4, IniciMinimitzat
Else error = True
End If
Close #1 Else
error = True End If
If not error then Str1 = Trim(Str1) Longitud = Len(Str1)
If (Longitud > 0) And (Longitud < 3) And (Val(Str1) > 0) Then Delay = Val(Str1) Else Delay = 10 End If
Str2 = Trim(Str2) Longitud = Len(Str2)
If Longitud = 1 Then IndexOption = Val(Str2)
Select Case IndexOption Case 0 Direccio = &H300 Case 1 Direccio = &H310
Annexes
287
Case 2 Direccio = &H320 Case 3 Direccio = &H330 End Select
Else IndexOption = 0 Direccio = &H300 End If
DataBaseString = Str3
Str4 = Trim(Str4) Longitud = Len(Str4)
If (Longitud = 1) Then ModeLog = Val(Str4) Else ModeLog = 0 End If
Else Delay = 10 Direccio = &H300 IndexOption = 0 DataBaseString = PathStr & BaseDeDades IniciMinimitzat = True End If
Exit Sub
ConfigError:
'Si s’ ha produït un error quan es llegia el fitxer, 'llavors es tanca i es carrega la configuració per defecte
If (Err.Number = 62) Or (Err.Number = 13) Then Close #1 End If
Delay = 10 Direccio = &H300 IndexOption = 0 DataBaseString = PathStr & BaseDeDades IniciMinimitzat = True
End Sub
Annexes
288
'Subrutina que guarda la configuració en un fitxer
Public Sub GuardarConfiguracio(NomFitxer As String)
Open NomFitxer For Output As #1Write #1, Str(Delay), Str(IndexOption), DataBaseString,Str(ModeLog), IniciMinimitzatClose #1
End Sub
'Subrutina que pot mostrar un missatge amb un MsgBox o be el pot'escriure al fitxer de Log. El missatge es passa a la variable del'mateix nom, després el paràmetre ConstanVb, defineix l’ icona que'apareixerà al MsgBox i els dos últims paràmetres son opcionals. Amb'el paràmetre Log, es pot fer que solament ho visualitzi amb un'MsgBox, o que el visualitzi i també el guardi al fitxer de Log o'que solament ho guardi al fitxer.
Public Sub VisualitzarMissatge(Missatge As String, ConstantVb As Integer,Optional Titol As String, Optional Log As Integer)
If (Log And 1) = 0 Then If (Titol <> "") Then MsgBox Missatge, ConstantVb, Titol Else MsgBox Missatge, ConstantVb End If End If
If Log > 0 Then Call GenerarLog(Missatge, False) End If
End Sub
'Subrutina que escriu en el fitxer de Log. Amb el paràmetre IniLog,'se l’ indica que també escrigui la capçalera amb la data
Public Sub GenerarLog(Missatge As String, Optional IniLog As Boolean) If IniLog Then Open PathStr & FitxerLog For Output As #2 Print #2, " Data " & Date Print #2, "" Else Open PathStr & FitxerLog For Append As #2 End If
Print #2, Time & " " & Missatge Close #2End Sub
Annexes
289
'Funció que interpreta un string que pot contenir diversos'identificadors separats per comes o intervals expressats amb guions.'Si es detecta algun error de sintaxis, retorna fals. En canvi si la'sintaxis es correcta, llavors guarda els identificadors i els'intervals en una matriu dinàmica de dues dimensions.
Public Function SeleccionarMaquines(S1 As String) As BooleanDim Interval As BooleanDim Fi As BooleanDim Longitud As IntegerDim aux As IntegerDim i As IntegerDim j As IntegerDim Char As StringDim Num As Long
ReDim MatInt(1, 0) As Integer Longitud = Len(S1)
If Longitud > 0 Then
i = 1 Char = Mid(S1, i, 1)
Do While ((Char <> " ") And (i <= Longitud) And Not Fi)
If LlegirNumero(S1, i, Num) Then
Char = Mid(S1, i, 1)
Fi = ((Char <> ",") And (Char <> "-") And (Char <> "")) Fi = Fi Or ((Char = "-") And Interval) Or (Num = 0)
Or (Num > 9999) Fi = Fi Or ((Not EsNumero(Char)) And (i = Longitud))
If (Char = "") Or (Char = ",") Then
ReDim Preserve MatInt(1, j) As Integer
If Interval Then MatInt(0, j) = aux MatInt(1, j) = Num Fi = Fi Or (aux >= Num) If j > 0 Then Fi = Fi Or (MatInt(0, j - 1) >= aux)
Fi = Fi Or (MatInt(1, j - 1) >= aux) End If Interval = False Else MatInt(0, j) = Num
Annexes
290
If j > 0 Then Fi = Fi Or (MatInt(0, j - 1) >= Num)
Fi = Fi Or (MatInt(1, j - 1) >= Num) End If End If
j = j + 1 End If
If (Char = "-") Then aux = Num Interval = True End If Else Fi = True End If
i = i + 1 Char = Mid(S1, i, 1)
Loop
ReDim Preserve MatInt(1, j) As Integer
End If
SeleccionarMaquines = Not ((i <= Longitud) Or Fi)
End Function
'Funció que llegeix un numero d’ un string. Comença a buscar un'numero en la posició que li indica el paràmetre i. Si no el troba'retorna fals. El paràmetre i es actualitzat i apunta al següent'caràcter. El valor del numero es retornat amb el paràmetre Num.
Public Function LlegirNumero(S1 As String, ByRef i As Integer, Num As Long)As BooleanDim Longitud As IntegerDim NumStr As String
Longitud = Len(S1)
Do While (EsNumero(Mid(S1, i, 1)) And (i <= Longitud) And(Longitud <> 0))
NumStr = NumStr & Mid(S1, i, 1) i = i + 1 Loop
Num = Val(NumStr) LlegirNumero = (Len(NumStr) <> 0)
End Function
Annexes
291
'Funció que realitza l’ interrogació d’ una maquina dispensadora.'Rep com a paràmetre un string que conte el numero de telèfon.'Retorna un 0 si la operació ha anat correctament i un numero'negatiu en el cas contrari.
Public Function RealitzarConsulta(StrTelefon As String) As IntegerDim Resultat As Integer
Resultat = MarcarNumero(StrTelefon)
If Resultat = 0 Then
FinalConnexio = False
'Bucle d' espera que permet executar altres events del programa
Do While (Not FinalConnexio) Sleep (10) DoEvents Loop
End If
RealitzarConsulta = Resultat
End Function
'Funció que obre la base de dades que s’ utilitza en el Mode Test,'si es produeix algun error al obrir-la, retorna fals.
Public Function ObrirBaseDeDadesTest() As Boolean
On Error GoTo NoDataBaseTest
Set Base = OpenDatabase(PathStr & BaseDeDadesTest)
ObrirBaseDeDadesTest = True
Exit Function
NoDataBaseTest:
ObrirBaseDeDadesTest = False
End Function
Codi 13. Mòdul Funcions
Annexes
292
9.1.3.12 Mòdul Io32
Global Const ErrorObrirDriver As Integer = -1Global Const ObrirDriverOk As Integer = 0
'Subrutina que escriu un byte (ValPort) en l' adreça de E/S que li'indica el paràmetre Addr
Public Sub WriteToPort(Addr As Long, ValPort As Byte)Dim Result As Boolean
Result = SetPortVal(Addr, ValPort, 1)
If (Result = False) Then MsgBox "Error ! amb WriteToPort.", vbOKOnly + vbCritical, "Warning!" End If
End Sub
'Funció que llegeix un byte (ValPort) en l' adreça de E/S que li'indica el paràmetre Addr
Public Function ReadFromPort(Addr As Long) As ByteDim Result As BooleanDim PortVal As Long
Result = GetPortVal(Addr, PortVal, 1)
If (Result = False) Then MsgBox "Error ! amb ReadFromPort.", vbOKOnly + vbCritical, "Warning!" End If
ReadFromPort = PortVal
End Function
'Tanca el driver. s' ha de cridar quan es finalitza l’ aplicació
Public Sub Close_Driver() Call ShutdownWinIoEnd Sub
Annexes
293
'Funció que obre el driver, s' ha de cridar abans de cridar cap de'les funcions anteriors
Public Function Open_Driver() As IntegerDim Result As BooleanDim PortVal As Long
On Error GoTo DriverError
If InitializeWinIo Then
Result = GetPortVal(0, PortVal, 1)
If (Result = False) Then MsgBox "No es pot obrir el driver!", 0, "Warning!" Open_Driver = ErrorObrirDriver Else Open_Driver = ObrirDriverOk End If
Else Open_Driver = ErrorObrirDriver MsgBox "No es pot obrir el driver!", 0, "Warning!" End If
Exit Function
DriverError:
VisualitzarMissatge Err.Description, vbExclamation, "", ForçarLog Open_Driver = ErrorObrirDriver
End Function
Codi 14. Mòdul Io32
Annexes
294
9.1.3.13 Mòdul ISA
Global Direccio As LongGlobal Delay As ByteGlobal MatDades(1) As Integer
Public Const Test As Byte = 11Public Const Normal As Byte = 12
Public Const BSE As Byte = &H80Public Const BSC As Byte = &H80Public Const NO_BSC As Byte = &H7FPublic Const NUM_FINAL As Byte = 10Public Const MARCAR As Byte = &H70Public Const Identificador As Byte = 0Public Const Entrades As Byte = 1Public Const Temps As Integer = 100
Public Const NoLectura As Integer = -1Public Const LecturaIncompleta As Integer = -2Public Const EscripturaCorrecta As Integer = 0Public Const NoEscriptura As Integer = -3Public Const EscripturaIncompleta As Integer = -4Public Const EscripturaPlaca As Integer = -5Public Const TelefonIncorrecte As Integer = -6
'Funció que llegeix 4 bits en el registre d' Estat de la placa de'Monitoritzacio per PC. Retorna un valor negatiu si s' ha produït'algun error.
Public Function Llegir_Bus_Isa(Addr As Long) As IntegerDim Data As IntegerDim i As IntegerDim aux As Byte
Data = NoLectura aux = ReadFromPort(Direccio)
'Comprova si la Placa de Monitoritzacio per PC vol escriure
If (aux And &HF0) > BSE Then
'Llegeix l' informació del Registre d' Estat
Data = ReadFromPort(Direccio)
'Indica a la placa, que ja ha realitzat la lectura
Call WriteToPort(Direccio, BSC)
Annexes
295
For i = 1 To Delay aux = ReadFromPort(Direccio) Next
'Comprova que la placa hagi esborrat el bit BSE
If (aux And BSE) = 0 Then
'Esborra el Registre de Control, per acabar el 'procés de lectura
Call WriteToPort(Direccio, 0) Else Data = LecturaIncompleta End If
End If
'Espera a que la placa hagi finalitzat tot el procés 'd’ escriptura
For i = 1 To Delay aux = ReadFromPort(Direccio) Next
Llegir_Bus_Isa = Data
End Function
'Funció que escriu 8 bits en el registre d' Estat de la placa de'Monitoritzacio per PC. Retorna un valor negatiu si s' ha produït'algun error.
Public Function Escriure_Bus_Isa(Valor As Byte, Addr As Long) As IntegerDim Status As IntegerDim i As IntegerDim aux As Byte
Status = NoEscriptura
'Abans d' escriure, s' ha de comprovar el Registre d' Estat
aux = ReadFromPort(Direccio)
If (aux And BSE) = 0 Then
'Indica a la placa de monitoritzacio que vol escriure 'en el Registre de Control
Call WriteToPort(Direccio, Valor Or BSC)
Annexes
296
'S’ espera perquè la placa tingui temps a preparar-se 'per llegir l’ informació
For i = 1 To Delay aux = ReadFromPort(Direccio) Next
'Comprova si la placa esta a punt per llegir les dades 'del Registre de Control
If (aux And BSE) Then
'Comprova que la placa de monitoritzacio no vulgui escriure
If ((aux And &H70) = 0) Then
'Escriu l' informació i també indica a la placa 'que ja la pot llegir
Call WriteToPort(Direccio, Valor And NO_BSC) Status = EscripturaCorrecta Else Status = EscripturaPlaca End If
Else Status = EscripturaIncompleta End If
End If
'Espera perquè la placa de monitoritzacio per PC acabi la lectura
For i = 1 To Delay aux = ReadFromPort(Direccio) Next
Escriure_Bus_Isa = Status
End Function
Annexes
297
'Funció que llegeix 16 bits en el registre d' Estat de la placa de'Monitoritzacio per PC. Retorna un valor negatiu si s' ha produït'algun error.
Public Function Llegir16Bits()Dim Error As BooleanDim Index As IntegerDim Data As IntegerDim aux As Integer
Index = 3
Do While ((Index >= 0) And (Not Error))
aux = Llegir_Bus_Isa(Direccio)
If aux >= 0 Then aux = aux And &HF Data = Data Or (aux * (16 ^ Index)) Index = Index - 1 Else Error = True Data = aux End If
Loop
Llegir16Bits = Data
End Function
'Subrutina que realitza la lectura de l' identificador i dels valors'de les entrades. Les dades les guarda en una matriu dinàmica de'dues dimensions. Retorna un valor negatiu si s' ha produït algun'error.
Public Function LlegirDades() As IntegerDim Error As BooleanDim Index As IntegerDim aux As Integer
Do While ((Index < 2) And (Not Error))
aux = Llegir16Bits()
If aux >= 0 Then If Index = Identificador Then MatDades(Index) = Hex(aux) Else MatDades(Index) = aux End If Else
Annexes
298
Error = True End If
Index = Index + 1
Loop
LlegirDades = aux
End Function
'Funció que te com a paràmetre d’ entrada un string que conte el'numero de telèfon que s’ ha d’ enviar a la Placa de Monitoritzacio'per PC per realitzar la marcacio. Retorna un valor negatiu si s’ ha'produït algun error.
Public Function MarcarNumero(StrTelefon As String) As IntegerDim Longitud As IntegerDim Resultat As IntegerDim aux As IntegerDim i As IntegerDim j As IntegerDim Digit As Byte
i = 1 Resultat = TelefonIncorrecte Longitud = Len(StrTelefon)
If (Longitud > 0) And (Longitud < 19) Then
Resultat = EscripturaCorrecta
If Not EsNumero(StrTelefon) Then Resultat = TelefonIncorrecte Else
'Marcar Call WriteToPort(Direccio, MARCAR)
For j = 1 To Delay aux = ReadFromPort(Direccio) Next j
End If
Do While ((Resultat = EscripturaCorrecta) And (i <= Longitud)) Digit = Val(Mid(StrTelefon, i, 1)) Resultat = Escriure_Bus_Isa(Digit, Direccio) i = i + 1 Loop
Annexes
299
If Resultat = EscripturaCorrecta Then If (Longitud < 18) Then Resultat = Escriure_Bus_Isa(NUM_FINAL, Direccio) End If End If
End If
MarcarNumero = Resultat
End Function
'Subrutina que modifica el mode de la rutina Sèrie de la Placa de'Monitoritzacio per PC per tal de facilitar la posta en marxa del'sistema.
Public Sub CanviarMode(Mode As Byte)Dim i As Integer
Call WriteToPort(Direccio, Mode)
For i = 1 To Delay * 2 ReadFromPort Direccio Next i
Call WriteToPort(Direccio, 0)
End Sub
Codi 15. Mòdul ISA
Annexes
300
9.1.3.14 Modul2
Public Sub HabilitarMenus()
Formulari.Menu1.Enabled = True
If Not ModeTest Then Formulari.Menu2.Enabled = True End If
Formulari.Menu3.Enabled = True Formulari.Menu4.Enabled = True Formulari.Menu5.Enabled = True
End Sub
Public Sub DeshabilitarMenus()
Formulari.Menu1.Enabled = False Formulari.Menu2.Enabled = False Formulari.Menu3.Enabled = False Formulari.Menu4.Enabled = False Formulari.Menu5.Enabled = False
End Sub
Public Sub HabilitarBotons()
Formulari.BotoDetalls.Enabled = True
If (ResultatIniDriver = ObrirDriverOk) And (Not ModeTest) Then Formulari.BotoInterrogar.Enabled = True End If
Formulari.BotoTest.Enabled = True
End Sub
Public Sub DeshabilitarBotons()
Formulari.BotoDetalls.Enabled = False Formulari.BotoInterrogar.Enabled = False Formulari.BotoTest.Enabled = False
End Sub
Codi 16. Modul2
Annexes
301
9.1.3.15 Modul3
'Subrutina que impedeix que es modifiqui el tamany d’ un formulari,'s’ ha de cridar en l’ event Load o Initialize d' un formulari
Public Sub RemoveMenuItem(frm As Form)Dim hSysMenu As Long
hSysMenu = GetSystemMenu(frm.hwnd, 0)
' Elimina el segon element del menú ( Tamany ) Call RemoveMenu(hSysMenu, 2, MF_BYPOSITION Or MF_REMOVE)
End Sub
'Subrutina que a part d’impedir que es modifiqui el tamany d’ un'formulari, també deshabilita el boto tancar del formulari. S’ ha de'cridar en l’ event Load o Initialize d’ un formulari
Public Sub RemoveCancelMenuItem(frm As Form)Dim hSysMenu As Long
hSysMenu = GetSystemMenu(frm.hwnd, 0)
' Elimina del menú el últim element (Tancar) Call RemoveMenu(hSysMenu, 6, MF_BYPOSITION Or MF_REMOVE)
' Elimina el penúltim element (Separador) Call RemoveMenu(hSysMenu, 5, MF_BYPOSITION Or MF_REMOVE)
' Elimina el segon element del menú ( Tamany ) Call RemoveMenu(hSysMenu, 2, MF_BYPOSITION Or MF_REMOVE)
End Sub
'Subrutina que passa el focus a la barra de tasques de Windows
Public Sub MostrarSystemTray()Dim Finestra As Long
Finestra = FindWindow("Shell_traywnd", "") SendMessage Finestra, WM_ACTIVATE, WM_SETFOCUS, 0
End Sub
Codi 17. Modul3
Annexes
302
9.1.3.16 Mòdul WinIO
'Declaracions de les funcions de la llibreria WinIO per accedir a la'placa de Monitoritzacio per PC
Declare Function GetPortVal Lib "WinIo.dll" (ByVal PortAddr AsInteger, ByRef PortVal As Long, ByVal bSize As Byte) As Boolean
Declare Function SetPortVal Lib "WinIo.dll" (ByVal PortAddr AsInteger, ByVal PortVal As Long, ByVal bSize As Byte) As Boolean
Declare Function InitializeWinIo Lib "WinIo.dll" () As BooleanDeclare Function ShutdownWinIo Lib "WinIo.dll" () As Boolean
Codi 18. Mòdul WinIO
Annexes
303
9.2 Informació Tècnica dels Components
Encara que no s’ ha utilitzat el circuit TEA 1064, si que s’ ha usat el TEA 1061 quees de la mateixa família encara que mes antic. La seva informació donarà una idea de comfunciona el circuit telefònic TEA 1061.
top related