Está en la página 1de 125

Universidad de Colima

FACULTAD DE INGENIERÍA MECÁNICA Y ELÉCTRICA

SISTEMA DE APOYO PARA LA REPARACIÓN DE


EQUIPOS DE AUDIO Y VIDEO

TESIS

QUE PARA OBTENER EL GRADO DE

MAESTRO EN CIENCIAS
ÁREA COMPUTACIÓN

PRESENTA

ING. JOSÉ ALEJANDRO CEJA MONTEJANO

ASESOR

M.C. ANDRES GERARDO FUENTES COVARRUBIAS

COQUIMATLÁN, COLIMA. AGOSTO DE 1999.


Facultad de Ingeniería Mecánicay Eléctrica
EXPEDIENTE 23 7
NUM. 97-0307

C. JOSE ALEJANDRO CEJA MONTEJANO


XOLLOPAN NUM. 880
COL. LOS ALMENDROS
VILLA DE ALVAREZ, COL.

Informo a usted que ha sido aprobado como tema de titulación para obtener
el grado de MAESTRO EN CIENCIAS AREA: COMPUTACION.

El solicitado por usted bajo el título ” SISTEMA DE APOYO PARA LA REPARACION DE


EQUIPOS DE AUDIO Y VIDEO “.

Desarrollado bajo los siguientes puntos:

1 .- INTRODUCCION
II .- DEFINICION DEL PROYECTO
III .- INVESTIGACION PRELIMINAR
IV .- DESARROLLO DEL SISTEMA
V .- IMPLEMENTACION
VI .- PRUEBAS
VII .- CONCLUSIONES
BIBLIOGRAFIA

Al mismo tiempo informo a usted que ha sido designado como asesor de


titulación a 1 suscrito C. M.C. ANDRES GERARDO FUENTES COVARRUBIAS.

En cada uno de los ejemplares de titulación que presente para examen,


deberá aparecer en primer término copia de

c.c.p.EXPEDIENTE ALUMNO
AGFC/merv*

Km 9 Carretera Colima-Coquimatián, AP. 299 l Colima, México l Teléfono 01 (332) 3 01 30


H. CONSEJO TECNICO DEL POSGRADO
EN CIENCIAS AREA: COMPUTACION
PRESENTE.

Por medio de este conducto informo que el C. JOSE


ALEJANDRO CEJA MONTEJANO
terminó su período de revisión de tesis:

” SISTEMA DE APOYO PARA LA REPARACION DE EQUIPOS DE AUDI0 Y VIDEO “.

Cuyo contenido es el siguiente :

1 .- INTRODUCCION
II .- DEFINICION DEL PROYECTO
III .- INVESTIGACION PRELIMINAR
IV .- DESARROLLO DEL SISTEMA
V .- IMPLEMENTACION
VI .- PRUEBAS
VII .- CONCLUSIONES
BIBLIOGRAFIA

El cual cumple con los requisitos necesarios para su aprobación, por lo cual
lo autorizo para su impresión.

c.c.p. EXPEDIENTE
AGFC/merv*
1

INTRODUCCIÓN ................................................................................................................................. 3

LO5 CENTROS DE FORMACIÓN PARA EL TRABAJO (CECATIS) .................................................................. 3


El CECATI 126 ....................................................................................................................................... 5
Apoyos en la elaboración de prototipos didácticos ................................................................. 5

DEFINICIÓN DEL PROYECTO ........................................................................................................... 7

EL SISTEMA DE APOYO PARA LA REPARACIÓN DE EQUIPO5 DE AUDI0 Y VIDEO.. ......................................... 7

INVESTIGACIÓN PRELIMINAR.. ...................................................................................................... 9

PROTOTIPOS EN EL MERCADO ....................................................................................................................... 9


CARACTERISTlCAS DEL ENTRENADOR DL 2402M ................................................................. 9
EL SIMULADOR DE FALLA.5 ............................................................................................................ 11
VS0 DEL SIMULADOR DE FALLAS ............................................................................................... 11
PROTOTIPO “RADIO GRABADORA DIDACTICA” ........................................................................... 15
Descripción general del prototipo ................................................................................................. 15
La fuente de alimentación.. ............................................................................................................ 16
El circuito del radio ........................................................................................................................... 16
CIRCUITO CONTROL DE TONO......................................................................................................................... 18
SECUENCIA BÁSICA DE LOCALIZACIÓN DE FALLAS EN EQUIPO ELECTRÓNICO ...................................... 24
Determinación dE los síntomas de una falla ............................................................................ 24
Ubicación del problema dentro de una unidad funcional o módulo.. ................................. 26
Utilización de diagramas. .............................................................................................................. 26
Aislamiento del problema dentro de un circuito ...................................................................... 27
Localización del problema específico ........................................................................................... 27
Desarrollo de un procedimiento sistemático de corrección de fallas ............................... 30
TECNOLOGíA PARA EL DESARROLLO DE SISTEMAS EXPERTOS .................................................................. 31
Lenguajes de representación del conocimiento ......................................................................... 31
Mecanismos de inferencia para reglas.. .................................................................................... 34
Valoración por encadenamiento hacia delante ........................................................................ 35
Valoración por encadenamiento hacia atrás ........................................................................... 36
COM (COMPONET OBJECT MODEL) Y L0S CONTROLES ACTIVEX ............................................................ 38
Controles ActiveX frente a controles ordinarios de Windows ............................................. 38
Controles ordinarios: Un marco de referencia .................................................................................... 38
Propiedades y métodos ............................................................................................................................. 39
Componente ..................................................................................................................................................... 41
Objeto ................................................................................................................................................................ 41
Automatización .............................................................................................................................................. 41
Controles ActiveX.. ....................................................................................................................................... 43
Documentos ActiveX.. ................................................................................................................................. 43
Componentes de código ActiveX ............................................................................................................ .43
2

DESARROLLO DEL SISTEMA ....................................................................................................... 45

Formulario
principal-.......................................................................................................................... 45
codigo del formulario principal ....................................................................................................... 45
codígo del formulario acreca de ................................................................................................... 46
MÓDULO H. T. M. L .................................................................................................................................... 47
FormULARlO TVyFormULARIO
Audio:. .................................................................................... ..4 7
Codigo del formulario html TV ........................................................................................................ 47
codigo del formulario html audio ................................................................................................. 48
EL MOTOR DE INFERENCIA .......................................................................................................................... 49
Revisión de la sección de color y video ............................................................................. 52

MODULO 1(MOTOR DE INFERENCIA TV) .................................................................................... .56

MODULO 2(MóDULO DE CONSULTA DE RADIO) ...................................................................... 80

OTROS FORMULARIO5 ................................................................................................................... 86


Codigo d e formulario d e respuestas tipS ............................................................................... ..8 6
codígo del formulario de mensaje ................................................................................................ 86
codigo del formulario de intetfaz en los modulo5 de consulta ............................................. 87
EL CONTROL ACTIVEX .................................................................................................................................. 8 8
Codigo del archivo de recursos del control SalidaPorPuerto.............................................. 88
SalidaPorPuerto............................................................................................................................. 90
SalidaPorPuerto.cpp ....................................................................................................................... 90
Otro5 formulario5 ........................................................................................................................... 109
Codigo del simulador de TV ........................................................................................................ 109
codigo del simulador de audio ........................................................................................................ 111

IMPLEMENTACIÓN ......................................................................................................................... 113

DESCRIPCIÓN DEL ENTORNO DE TRABAJO ................................................................................................. 113


En Televisión ........................................................................................................................................ 113
Audio ..................................................................................................................................................... 113
Consulta Acerca de.. ........................................................................................................................ 113
En Televisión ........................................................................................................................................ 113
En Radio ............................................................................................................................................... 114
Simulador ............................................................................................................................................. 115
Televisión .............................................................................................................................................. 115
Radio.. .................................................................................................................................................... 115
Ayuda ......................................................................................................................................................... 115
INTERFAZ ELECTRÓNICA PARA E L CONTROL D E L E NT R E N A D O R ................................................................. 116

PRUEBAS ....................................................................................................................................... 118

CONCLUSlONES ...................................................................................................................................................................................................... 119

BIBLIOGRAFIA ............................................................................................................................................ 121


3

Los Centros de formación para el trabajo (CECATIS).


Dentro del Sistema Educativo Nacional existen diversos organismos que
proporcionan servicios de capacitación para y en el trabajo, a fin de dar
respuesta a la5 diferente5 demanda5 del sector productivo y de servicios.
Destaca, por dedicarse exclusivamente a dicha tarea y por la magnitud de la
demanda que atiende, la Dirección General de Centro5 de Formación para el
Trabajo.

La Dirección General de Centro5 de Formación para el Trabajo (DGCFT) es un


órgano centralizado de la Administración Pública Federal, dependiente de la
Subsecretaría de Educación e Investigación Tecnológica5 (5EIT) de la
Secretaría de Educación Pública (SEP); tiene bajo su responsabilidad la
formación para y en el trabajo, misma que se imparte en lo5 Centro5 de
Capacitación para el Trabajo Industrial (CECATI) y a través de los Institutos
Descentralizados Estatales de Formación para el Trabajo, lo5 que operan con
la participación de lo5 gobierno5 federal y estatal y del sector productivo de
bienes y servicios.

El tipo de servicio educativo que proporciona la DGCFT difiere de lo5


tradicionales por su definida orientación ocupacional. Esto exige que los
programa5 de estudios se deriven de un análisis ocupacional de la5 área5 a
la5 que se va a destinar la capacitación, de forma que se asegure que el
egresado sea capaz de desempeñarse competentemente en ellos.

Para la impartición de la formación para el trabajo, la DGCFT dispone de una


infraestructura que comprende 198 CECATI, que cuentan con: 385 aulas, 1441
talleres, 56 laboratorio5 y 4116 anexos; así como 51 unidades móviles de
capacitación, cuya modalidad consiste en llevar el servicio a lo5 grupo5
4

sociales en situación de desventaja económica y social en las zonas


rurales y urbanas.

El servicio en general no exige antecedentes académicos, está dirigido a


persona que saben leer, escribir, y que cuentan con conocimientos de
aritmética, geometría básicas, sin embargo existen algunos cursos que, por
su naturaleza o ámbito laboral donde se desempeñará él capacitando,
requieren determinados prerrequisitos académicos.

El docente en este tipo de planteles es generalmente un técnico profesional


en la rama industrial o de servicios o bien, un profesional con estudios de
licenciatura. En todos los casos el docente cuenta con experiencia laboral en
la especialidad que imparte. Excepcionalmente, es un práctico ampliamente
reconocido en el ámbito de su especialidad. Adicionalmente a su preparación
básica, el personal docente recibe en el ejercicio de su trabajo, cursos de
perfeccionamiento pedagógico y cursos de actualización técnica.
EL CECATI 126

En el municipio de Armería se encuentra el centro de capacitación para


trabajo 126 (CE.CA.T.1. 126) en el cual se cuenta con la especialidad de
electrónica en esta especialidad se imparten los modos de electrónica básica
reparación de radio A M. y F . M., reparación de televisión, y reparación de
videocaseteras

Como se mencionó en el centro de capacitación para el trabajo 126 se cuenta


con el área de electrónica en la cual es necesario contar con auxiliares
didácticos que permitan llevará cabo la capacitación de personal en los
diferentes módulos que ofrece hoy, a parte que el área de electrónica ha
tenido un gran desarrollo tecnológico en el cual los sistemas se han
sofisticado de ahí la importancia que contar con auxiliares modernos en este
caso con equipos de cómputo que nos permitan desarrollar la actividad de
capacitación de una manera eficiente en este caso un sistema experto puede
venir a apoyar enormemente la tarea de un instructor a la vez que puede
permitir que los alumnos se entren y explotar de una manera más eficiente lo5
equipos de cómputo aunque se cuenta en el plantel

APOYO5 EN LA ELABORACIÓN DE PROTOTIPOS DIDÁCTICO5

Actualmente los centros de capacitación para trabajo tienen programas de


apoyo para la elaboración de prototipos didácticos que vengan a sustituir a
prototipos del mercado o en su defecto se mejoren los prototipos que hay que
en la actualidad por otro lado la computadora viene a ser un instrumento
didáctico muy útil, el cual en nuestro sistema no está haciendo explotado
todavía.

Debido a lo anterior fue que se tuvo la inquietud de desarrollar un equipo


como entrenador y a la vez nos diéramos apoyo de una computadora para
conjuntar una herramienta de capacitación muy útil, la cual explotará por un
lado los recursos de un equipo de cómputo logrando con esto captar mayor
atención en los alumnos despertando más su interés y por otro lado se
logrará una mejor capacitación de personal en menos tiempo ya que al
actualizar la base de datos del conocimiento se estarán actualizando
6

también los programas de estudio en este caso podemos recurrir a


técnicos mucho muy experimentados para que aporten su conocimiento y
dejar a la computadora la tarea de instrucción y de esta manera se llevará
acabo una mejor labor de capacitación.
Definición del proyecto

El sistema de apoyo para la reparación de equipos de audio


y video

En este proyecto se desarrolló una interfaz que permite en conjunto con la


computadora elaborar un sistema experto para el entrenamiento de personal
en la reparación equipos de audio o video en donde básicamente lo queremos
es adaptar un equipo existente del mercado y colocar una interfaz con la
computadora para de esa manera tener un entrenador que permita simular
fallas a la vez de capacitar al usuario del sistema y de esa manera
retroalimentar una base de conocimiento que permita a los usuarios del
sistema el auto aprendizaje a la vez de contar con un elemento didáctico en la
impartición de las clases de capacitación.

En la actividad de reparación de equipos electrónicos influye mucho la


experiencia que tenga el técnico por lo que se hace necesario tener una base
sólida de conocimiento para de esa manera efectuar las tareas de reparación
de una forma más eficiente y sin ningún problema. Debido a lo anterior un
sistema experto resulta de un gran apoyo para personas que no tienen
experiencia o que desean desarrollar esta actividad como un medio de auto
empleo aparte de que este sistema es un auxiliar didáctico muy bueno en los
centros de capacitación para el trabajo así como en cualquier institución
pública de educación o en cualquier centro de capacitación en esta área.
8

Este proyecto fue enfocado al desarrollo de un sistema experto que permita


a las personas aprender a reparar un equipo de audio o video, que viene a ser
un equipo modular o una televisión en este caso el entrenamiento de personal
en esta área requiere que las personas lleven acabo diagnósticos basándose
en el conocimiento de los sistemas que componen estos aparatos en lo que se
requiere bastantes horas entrenamiento en las cuales las personas van
adquiriendo experiencia de cada uno de los trabajos que han estado llevando
cabo.

Por otro lado como se quiso tener control sobre un prototipo didáctico de los
que hay en el mercado, utilizado como simulador de fallas se desarrolló un
control que permite a través de una interfaz de computadora provocar las
fallas del prototipo para que el alumno observe como se comporta el aparato
bajo condiciones de fallas, el control que se desarrolla que es un control
activex, este control activex es un control utilizado por cualquier lenguaje de
programación visual dicho control es desarrollado con el compilado visual C++
de Microsoft.

Para dar un mayor soporte al sistema se incluye un documento H. T. M. L. el


cual contiene los principios de funcionamiento del televisor y del radio la
ventaja de este documento ese contiene híper texto el cual hace que s e parte
de un tema a otro rápidamente acompañado de imágenes así que el
capacitado o usuarios del sistema podrá en cualquier momento reforzar sus
conocimientos sobre el funcionamiento de estos aparatos electrónicos de
manera interactiva.
9

Investigación Preliminar

Prototipos en el mercado

Existen actualmente en el mercado, diversos programa5 conteniendo


información de la5 fallas a que se ven sometido5 de lo5 diferente5 equipos
electrónico5 dependiendo de la marca, y una serie de sugerencias para la
reparación de los mismos. Estos programa5 son bases de datos; aunque
también existen en el mercado equipo5 didáctico5 en los cuales se puede
simular la5 fallas de los diferente5 aparato5 y permitan entrenar a lo5
alumnos más no se tiene conocimiento de un equipo apoyado por una
computadora o de algún sistema experto aplicado en la reparación de
equipos electrónico.

A continuación se da a conocer la5 características del entrenador de


televisión con que cuenta el CECATI 126

CARACTERISTICAS DEL ENTRENADOR DL 2402M

El entrenador de Televisión Didáctico modelo DL 2402M es un sistema


diseñado para ayudar al docente a explicar el funcionamiento de un receptor
de televisión en color y como localizar la5 faltas que en este se presentan.
Físicamente, el entrenador está formado por un gabinete metálico sostenido
por un marco que le da soporte. En el panel frontal están montado5
elemento5 modulare5 que constituyen la parte funcional del entrenador.

En la parte superior del panel frontal se tiene un diagrama a bloque5 del


televisor, donde cada bloque contiene punto5 de prueba que están
conectado5 al chasis del televisor en punto5 clave del circuito, para tomar
señales y medir nivele5 de voltaje se puede usar un osciloscopio multímetro o
frecuencímetro. Estos punto5 de prueba están constituidos por casquillos de
conexión de 2 mm. Para efectuar la conexión en estos punto5 se ha
10

proporcionado con el entrenador un cable con conector BNC y bananas de


2mm
En la parte izquierda del panel frontal está la pantalla del televisor. Al centro
se encuentra el chasis del televisor el cual tiene una cubierta de acrílico para
proteger a los alumnos de un posible choque eléctrico y al chasis de algún
daño accidental o provocado.

El estudio funcional del entrenador se puede realizar utilizando solo los


puntos de prueba del diagrama a bloques. Sin embargo, si se desea realizar
pruebas específicas sobre componentes en particular o hacer un estudio
profundo de ciertos aspectos del funcionamiento del televisor que haga
necesario acceder al chasis, es necesario tener en cuenta que por ia
intrínseca delicadeza de lo5 circuitos electrónicos por su elevado grado de
integración, además de que se pueden tocar puntos de tensión de trabajo
potencialmente peligrosos, se recomienda que se retire la cubierta de chasis
solo en presencia del instructor. En la parte posterior del entrenador además
cuenta con una pequeña ventana de plexiglás desmontable para tener acceso
a la placa del circuito del cinescopio, lo cual se debe realizar con las mismas
recomendaciones anteriores.

En la parte derecha del panel frontal está el simulador de fallas, con el cual se
pueden simular hasta 19 fallas individuales en el televisor o hacer
combinaciones de fallas. El simulador basa su funcionamiento en un
microprocesador y tiene como elementos de salida y entrada un indicador
alfanumérico y un teclado.

El entrenador tiene una fuente de alimentación, que está formada


básicamente por un transformador de aislamiento, un interruptor de acceso
accionado con llave y un interruptor magnetotérmico diferencia¡. Lo5 dos
interruptores se localizan abajo del simulador de fallas e incluyen un indicador
piloto que nos indica cuando el sistema está encendido.
ll

EL SIMULADOR DE FALLAS

Este simulador de fallas está controlado por un microprocesador y contiene


en memoria un programa con la5 posiciones de lo5 componentes en los cuales
se provocarán fallas. El simulador tiene una serie de relé5 que abren o cierran
un circuito para provocar la5 fallas.

A la vista, del panel frontal están:

+ Luz indicadora de encendido del simulador.


+ Indicador digital para la visualización de, los dato5 introducido5 en el
simulador mediante el teclado, tanto por el instructor como por el alumno.
+ Teclado de 16 teclas con símbolos numéricos, alfanuméricos y funcionales.
(El uso del teclado se explica mas adelante).
+ Conmutador de llave de do5 posiciones. En la posición izquierda
“TEACHER” se pueden simular fallas introduciendo el código
correspondiente. En la posición de la derecha ‘STUDENT”, el código
relativo a la falla está escondido y el alumno solo puede introducir la5
posiciones de los componente5 que cree averiados.
+ Conector para impresión. Con este conector, el instructor puede obtener
una impresión de la lista de intento5 que efectuó el alumno,

USO DEL SIMULADOR DE FALLA5

La simulación de una situación de falla se realiza mediante un microrelé, cuyo


contacto normalmente abierto o cerrado provoca un cortocircuito o una
interrupción. Cada situación de falla aparente genera en el televisor sÍntomas
de mal funcionamiento que el alumno debe detectar. El análisis de dichos
síntomas y su razonamiento permiten al alumno determinar el componente o
grupo de componente5 cuya eventual falla podría provocar los síntomas
apacentados,

En el diagrama eléctrico del televisor, todo5 lo5 componente5 tienen indicada


una posición representada por siglas. Estas siglas son la5 que se usan para
12

identificar un componente en particular y son la5 que se han usado para


programar el simulador de fallas.

Al programar una falla se han tomado en cuenta grupo5 de componente5 que


son aceptado5 por igual por el simulador para la activación de la falla, y para
la eliminación de la misma por parte del alumno.

Para la activación de una falla entre la5 que disponemos, es necesario que el
conmutador de llave esté en la posición izquierda “TEACHER”. (Más adelante
en el manual encontrará una lista de la5 fallas aparentes).

La5 fallas previstas se han elegido con criterio para que su simulación no
provoque daño5 permanente5 en el televisor, y que sean didácticamente
significativas. En alguna5 secciones del televisor se ha evitado la simulación
de fallas, en particular en la sección de alto voltaje y en los circuitos de la
fuente conmutada, para evitar riesgos a la5 personas y al equipo además de
la dificultad de la simulación de fallas en estos circuitos,

Cuando se enciende el simulador el conmutador de llave debe estar en la


posición de instructor. Al encender el simulador en el display se muestra la
frase “De Lorenzo - Italy’, seguido por la frase “(RD) Teacher Mode” para
indicar que después del inicio, el sistema está listo para actuar.

Enseguida, el instructor oprime la tecla de entrada y al hacerlo aparece la


frase
"INSERT FAULT NUMB= En este punto, el instructor debe teclear un número
del 1 al 19 que corresponde al número de la falla que desee que se manifieste
en el televisor, y enseguida teclear la tecla de entrada (Enter) Al hacer
esto la falla se manifiesta inmediatamente. Si desea puede agregar otra falla
tecleando otro número de falla. Después de esto, teclee entrada (Enter) y
luego ESC. Gire el conmutador con llave a la posición STUDENT y retire la
llave.

Al mover el conmutador de llave a la posición derecha (posición alumno)


aparece en el display la frase ‘De Lorenzo - Italy” seguido por la frase (RD)
STUDENT MODE: - El alumno teclea entrada (Enter) y aparece en el display la
13

frase INSERT FAULT CODE: seguido de la frase CODE= C donde la C


indica la sigla de un componente.

Lo5 componente5 del televisor han sido clasificados con siglas de la siguiente
manera

R - Resistencia
C - Capacitar
D - Diodo
T - Transistor
L - Inductor o bobina
CQ - Cristal de cuarzo
FC - Filtro cerámico
SW - Interruptor
F - Fusible
CR - Receptor de control remoto
IC - Circuito Integrado
T5 - Transformador

Estas sigla5 se deben anteponer al número de componente que aparece en el


diagrama al momento de teclear el número del componente que se sospecha
defectuoso.

El alumno, siguiendo el método de análisis, introduce la5 siglas de LOS


componente5 que considera que puedan ser la causa de la falla y oprime
Enter (ENTER). Si la5 siglas que tecleo 5on la5 adecuadas, se restablecerá el
buen funcionamiento del televisor. Si no, podrá teclear la5 siglas de otro
componente. Si desea corregir la5 siglas tecleada5 ante5 de oprimir ENTER,
puede borrar Lo que escribió oprimiendo la tecla RES.

Está previsto que el alumno pueda introducir la5 siglas de 90 componentes,


cada una de la5 cuales se memoriza con un número de orden consecutivo.
Esta secuencia se puede visualizar en el display usando la5 tecla5 de flecha
hacia arriba y hacia abajo.
14

La introducción de las siglas de un componente que no coincida con la de


los componentes admisibles como causa de la falla, se indicará con la palabra
ERROR en el display, mientras que la introducción de siglas de componentes
exactos provocan la leyenda FAULT RESET.
15

DESCRIPCIÓN GENERAL DEL PROTOTIPO

Este prototipo se desarrolló en el CECATI 126 y consiste en un chasis


montado en un panel de acrílico en el cual se han montado lo5 circuito5 mas
representativos de la mayoría de equipos de audio, el cual sirve de apoyo en el
modulo de reparación de radio AM y FM, basándonos en el siguiente diagrama
a bloques:

( RADIO AM (

!+--l
RADIO FM

4
---7

SELECTOR
FUNCION ECUALIZADOR
VOLUMEN
Y
AMPLIFICADO
R

t-4 DE
POTENCIA

TOCA CINTAS

?
16

LA FUENTE DE ALlMENTACIÓN

Como se aprecia, la fuente consiste en un transformador reductor de voltaje,


de 127 a 12 volt5 de C.A.; donde posteriormente la corriente es rectificada,
por un puente de diodos, y filtrada por un capasitor en el chasis principal

DIODE

5OuF

I
DIODE
l DIODEE

Y-

EL CIRCUITO DEL RADIO

En este chasis, el radio lo conforman tres circuito5 integrados, en los cuales


se incluyen la5 siguientes funciones:
Cl AN213:
5intonizador de FM.
Cl AN220:
Sintonizador AM.
Amplificador FI tanto para AM como para FM.
Detector AM y detector FM.
Cl BA330
Decodificador FM estéreo.
17

Diagrama a bloques del radio

Sintonizador FM

decodificador
S e ñ a l FM stereo

Sintonizador Am,
Amplificafores FI y
d e t e c t o r AM/FM

DIAGRAMA A BLOQUES DE EL RADIO

Circuito del tocacintas.

En este circuito, es amplificada la señal de la cabeza del reproductor de


cintas, al usarse en la modalidad de “play “; o en su defecto es amplificada la
señal de audio que se quiera grabar hacia la cabeza del reproductor de cintas.
En este caso las funciones de grabar y reproducirse son controladas por el
interruptor de dirección de señal el cual es accionado por medio de la tecla
REC del mecanismo reproductor.

A continuación se da un diagrama a bloques de circuito del tocacintas.

interruptor de salida de señal


direccion de señal
record play

entradabrada
de señal

CI BA336
interruptor de
direccion de señal
record play
18

Interruptor selector de función

Este es un interruptor de tres posiciones las cuales son tocacintas AM y FM


como se puede apreciar su función es canalizar la señal de audio hacia el
control de tono y al amplificador de potencia de audio.
Este prototipo solo cuenta con solo tres medios de reproducción de sonido
como son el tocacintas, y emisiones de señales de radio AM y FM; no
obstante se pueden ir agregando más accesorios como serian reproductor de
COMPACT DISC y entradas auxiliares de sonido provenientes de algún medio
externo.

FM ----La-
TOCACINTAS

INTERRUPTOR SELECTOR DE FUNCIÓN

Circuito control de tuno

Aquí se ha agregado un circuito ecualizador consistente en filtros para las


siguientes frecuencias de 100 HZ, 250 HZ, !OOO HZ, 2500 HZ y 6000 HZ
posteriormente la señal de este ecualizador es enviada hacia un control de
tono el cual entrega la señal al control de volumen.

En este caso cada filtro atenúa o realza cada señal de la frecuencia por el
controlada, finalmente son mezcladas todas las señales provenientes de
cada filtro para ser enviadas finalmente a un control de tono.
19

En el diagrama a bloque mostrado a continuación se observa lo que se ha


explicado.

filtro
T 100hz

diagrama a bloques del ,,


ecualizador

filtro
*
T 250hz

I filtro

I, 7 2500hz

filtro
*
T 6000hz
20

Amplificador de potencia de audio

Este circuito es el que recibe la señal desde el control de tono por medio del
control de volumen para darle la potencia requerida para excitar los
altavoces. Este circuito amplificador está constituido por el circuito
integrado BA5406.

Amplificador de potencia
CI BA5406
21

Modo de operación

Este equipo permite la reproducción de cassettes y la recepción de señales de


AM y FM

Recepción de señales de FM
Coloque el interruptor selector de función en su posición derecha.
Sintonice una señal moviendo el control de sintonía.
si la señal es lo suficientemente fuerte usted logrará captar el
audio sin ningún problema, para mejorar la recepción gire la
antena de FM.

Recepción de señales de AM
Coloque el interruptor selector de función en su posición
intermedia.
Sintonice una señal moviendo el control de sintonía.
si la señal es lo suficientemente fuerte usted logrará captar el
audio sin ningún problema, para mejorar la recepción gire el panel
completo.

Reproducción de cassettes
Coloque el interruptor selector de función en su posición derecha.
Accione la tecla play.
si de sea adelantar o atrasar en la melodía presione las teclas de
avance o retroceso del mecanismo.

Ajuste del sonido


Mueva cada uno de lo5 controles del ecualizador par enfatizar el
sonido asta obtener la respuesta deseada, mas sin embargo para
logra un ajuste mas acentuado accione el control de tono.
22

Sub-objetivos que pretende reforzare1 prototipo.

Dadas las caracterÍsticas del prototipo este puede ser usado tanto para
identificar circuitos de radio como de audio, así como para verificar su
principio de funcionamiento lo cual lo hace un instrumento didáctico muy
versatil

A continuación se da una lista de los sub-objetivos en que puede ser utilizado


para reforzar su aprendizaje.

+ Explicar principios de la radio comunicación.


+ Diagnosticar y ajustar receptor superheterodino AM de válvulas Y
transistores.
+ Diagnosticar y ajustar receptor FM de válvulas y transistores.
+ Ajustar preamplificadores.
+ Ajustar filtros y controles de tono.
+ Reparar amplificadores de potencia.
+ Reparar instalaciones acústicas.
+ Diagnosticar y reparar fallas generales en aparatos en aparatos de radi o
AM y FM.
Aplicar medidas de higiene y seguridad en actividades de electrónica.
23

Circuitos del
radio

Alimentación

Diagrama a bloques que muestra la ubicación de algunos circuitos en el panel


24

Secuencia Básica De Localización Re Fallas En Equipo

Para proseguir con el desarrollo del sistema a continuación se describen lo5


aspectos generales, bajo los cuales se fundamentan los principio5 de la
reparación de equipo electrónico.

Existen cuatro pasos básicos en la secuencia de corrección de fallas:


1) Determinar los síntomas;
2) Ubicar el problema en una unidad funcional completa o módulo;
3) Aislar el problema en un circuito dentro del módulo;
4) Localizar el problema específico. En equipo5 muy sencillos o en aquellos
donde sólo hay. una unidad funcional, se omite el paso dos.

La5 seccíones restantes de este capitulo están dedicada5 a estos cuatro


pasos. Ante5 de abordar los detalles, examinemos lo que se indica en cada
uno.

DETERMINACIÓN DE LOS SÍNTOMAS DE UNA FALLA

Determinar los síntomas significa que se debe saber qué es lo que hace el
equipo cuando opera en forma normal y, más importante aún, que es capaz de
reconocer cuando el trabajo normal no se está realizando. La mayor parte de
los equipos 0 s i s t e m a s electrónicos tienen controle5 de operación,
instrumentos indicativo5 u otra5 ayuda5 integrada5 para evaluar su
funcionamiento. Hasta el sencillo radio de transistores posee una bocina, un
interruptor de encendido, un sintonizador de estaciones y un control de
volumen.

Debe analizar lo5 síntomas, normales y anormales, que producen los


indicadores integrado5 del equipo, con el fin de formularse la5 pregunta5
siguientes: ¿que se supone que haga el equipo?, ¿Hasta qué punto se está
realizando el trabajo?, ¿En qué parte del equipo puede estar el problema que
produce tale5 síntomas?
25

Desde luego, estas pregunta5 se modifican dé acuerdo con la situación


práctica.

Por ejemplo, si está reparando un sistema de estéreo y el usuario se queja


que “de repente el sonido empezó a escucharse mal”, el síntoma obvio es
distorsión. Esto puede verificarse con facilidad al encender el estéreo y
escuchar un disco, cinta o disco compacto en buen estado. Por otra parte, si
está dando servicio a un equipo digital y el usuario indica que “el indicador se
salta toda5 la5 lectura5 entre 003 y 007", el síntomas podría no ser tan
obvio. A meno5 que se le dé servicio a este equipo en forma regular y tenga
una rutina de diagnóstico (o magia negra), para detectar el problema, lea el
manual y verifique el síntoma empleando el procedimiento correcto (sino
resuelve nada, al meno5 elimina el aspecto problema del usuario).

La determinación del síntoma no significa que deba “atacar” al equipo con un


destornillador o herramienta de soldar, tampoco utilizar exhaustivamente el
instrumento de pruebas. Por el contrario, este primer paso en la corrección
de fallas se refiere en principio a su habilidad y sentido de observación
(incluida una inspección visual del equipo y, para cierta clase de mecanismos
complejos, el empleo de un conjunto de instrumentos que permitan observar
forma5 de onda de entrada y salida, medición de corriente, etc.), así como de
sus conocimiento5 de lo que se supone hace el equipo y la forma como
funciona. En general, para sistemas o aparato5 meno5 complejos, el paso de
determinación de lo5 síntomas representa advertir la5 indicaciones de
funcionamiento, tanto normales como anormales, manipulando lo5 controle5
de operación para obtener información y correlacionar los síntomas.

Al final de este paso, ya se sabe de cierto que algo está mal y tiene idea clara
de cuál es el problema, aunque no sabe con exactitud el área en donde está el
defecto. Esto se determina en el siguiente paso de la corrección de fallas.
26

UBICACIÓN DEL PROBLEMA DENTRO DE UNA UNIDAD FUNCIONAL 0


MÓDULO

Una vez confirmado5 y analizado5 lo5 síntomas, el siguiente paso consiste en


ubicar el problema en la unidad funcional más apropiada del equipo. Aun lo5
dispositivos electrónico5 sencillos pueden subdividirse en unidades o área5
que tienen un propósito o función definido. El término “función” se emplea aquí
para indicar una operación electrónica que se realiza en un área especifica del
equipo 0 sistema.

Por ejemplo, todo radiorreceptor, por sencillo que sea, tiene una sección de
radio frecuencia, una de frecuencia intermedia y otra de audio. En el caso de
aparato5 más complejos, como televisores, la5 funcione5 pueden subdividirse
en audio, video, sintonización, imagen y fuente de alimentación. Estas
funciones, al combinarse, constituyen el conjunto de un equipo completo que
permite se realice el propósito electrónico para el cual fue diseñado.

Para localizar problema5 de manera sistemática y lógica, debe conocer la5


unidades funcionales del equipo y correlacionar todo5 los síntomas
determinado5 con anterioridad para dichas unidades. De hecho, se hace una
estimación válida del área en la que puede estar el problema, a partir de lo5
síntomas. En un principio, puede seleccionar como el área probable del
problema diversas posibilidades de precisión técnica.

UTILIZACIÓN RE DIAGRAMA5

El paso de localización implica una amplia labor con diagramas, que incluye:
diagrama5 funcionales de bloque, esquemas y diagrama5 de cableado. De ahí
que el diagrama de bloque sea la fuente más lógica de información que se
utilizará en la localización de problema5 dentro de la unidad funcional o
sección.

Por desgracia, no todo5 los manuales de servicio incluyen un diagrama de


bloque. En equipo5 sencillos existe un diagrama esquemático general, que (en
ocasiones) sirve para el mismo propósito.
27

Por lo general, el esquema presenta demasiada información (gran parte


de ella no es directamente relacionada con el síntoma específico advertido),
para ser de máxima utilidad durante el paso de localización.

AISLAMIENTO DEL PROBLEMA DENTRO DE UN CIRCUITO

Después de localizar el problema dentro de un área funcional, el paso siguiente


consiste en aislar el problema dentro de un circuito en el área de la falla.
Para ello, concéntrese en los circuito5 del área que pudieran causar el
problema e ignore los restantes.

Por ejemplo, suponga que está revisando un equipo de comunicaciones que


contiene un transmisor, un receptor y una fuente de alimentación común. Si el
receptor opera normalmente, pero él transmisor no, puede ignorar tanto los
circuito5 del receptor como los de la fuente de alimentación y concentrarse en
los de transmisión.

El paso de aislamiento comprende la utilización de instrumentos de prueba5


como medidores, osciloscopios y generadores de señales para el rastreo de
señal y la sustitución de señal en el área donde se sospecha que está la falla.
se puede mediante estimaciones precisas y el empleo de los diagrama5
correspondientes, técnicas de encasillamiento, rastreo y sustitución de
señales, aislar el problema en un solo circuito defectuoso.

La5 herramienta5 y técnica5 de reparación no se emplean sino hasta después


de localizar y verificar el problema específico. Esto es, que en este punto
usted aún no “invade el aparato” con equipo de soldar y pinzas. En vez de ello,
está tratando de aislar el problema en un circuito defectuoso determinado,
de manera que una vez aislado pueda proceder a la reparación.

LOCALIZACIÓN DEL PROBLEMA ESPECÍFCA

Aunque este paso en la corrección de fallas se refiere sólo a la localización del


problema específico, incluye también un análisis final o revisión del
procedimiento completo y el empleo de técnica5 de reparación para remediar
28

el problema. Este análisis le permite determinar si algún otro mal


funcionamiento ocasionó la falla del componente localizado o si es la causa
real del problema.

La inspección por medio de los sentidos vista, olfato, oÍdo y tacto, resulta
muy útil cuando se pretende localizar un problema. Normalmente, esta
inspección se realiza en primer lugar, para reunir información que pueda
conducir con mayor rapidez a la parte defectuosa. (Aunque abarca todo5 lo5
sentidos, esta inspección se denomina a menudo en los manuales de servicio
como “inspección visual”.) Entre otro5 aspectos a buscar durante la
inspección visual, se encuentran lo5 componente5 quemados, carbonizado5 o
sobre calentados, arco5 voltaico5 en los circuitos y partes quemadas.

En aparato5 donde el acceso a los circuito5 es relativamente fácil, debe


efectuarse primero una rápida inspección visual. Después se revisa el
dispositivo activo transistor o circuito integrado. Siempre se recomienda una
inspección visual como primer paso en todo aparato. Como posible excepción,
está aquellos CUYO acceso a la mayor parte de los circuito5 es muy difícil;
pero contienen cierto5 componente5 (normalmente dispositivos activo5 como
transistores o circuito5 integrados), que pueden retirarse y probarse (o
reemplazarse) con facilidad.

El siguiente paso en la localización del problema específico en aparato5 que no


son digitales, consiste en el empleo de un osciloscopio para observar forma5
de onda y un medidor para leer voltajes. Como se expone en posteriores
capítulos, para la corrección de fallas digitales se requiere instrumental de
prueba5 especializado. A s i m i s m o , e l osciloscopio n o se e m p l e a t a n
ampliamente.

En el servicio a sistemas o aparato5 de comunicaciones, como en otro5


campo5 (televisores y videocaseteras), en virtud de que la5 forma5 de onda
en comunicaciones son de radiofrecuencia, frecuencia intermedia y señales de
radio, en lugar de impulsos (propio5 de lo5 c i r c u i t o digitales en televisores y
videocaseteras). No obstante, debe utilizarse el osciloscopio para medir la
envolvente de modulación de un equipo de comunicaciones. También se puede
usar como sustituto en la medición de voltajes. Desde luego, un medidor
29

convencional es mejor cuando se trata de verificar resistencia y


continuidad para señalar una par-te defectuosa.

Nótese que en la mayor parte de los manuales de servicio de hoy en día, los
voltajes (y tal vez las resistencias) se presentan a menudo en los diagramas
esquemáticos, aunque esta información puede aparecer también en forma de
tabla (siguiendo el estilo militar). No importa la información que esté
disponible ni la presentación que tenga, se debe ser capaz de aplicar el equipo
de pruebas, para llevar a cabo las mediciones.

Después de localizar el problema, debe realizarse el análisis final del


procedimiento completo de corrección de fallas para constatar el problema.
Hecho esto, podrá reparar la falla y comprobar que el aparato opere bien.
30

DESARROLLO DE UN PROCEDIMIENTO SISTEMÁTICO DE CORRECCIÓN


DE FALLA5

El desarrollo de un procedimiento sistemático y lógico de corrección de fallas


requiere:

Enfoque lógico del problema


Conocimiento del equipo
Interpretar la información de las pruebas
Utilizar la información obtenida en cada paso

Algunos técnicos consideran que el conocimiento del equipo comprende


recordar fallas pasadas y aspectos acerca de la localización de todos los
puntos de prueba, todos lo5 procedimientos de ajuste y así sucesivamente.
Este renfoque puede ser apropiado en la corrección de fallas en sólo una clase
de equipo; pero tiene poca relevancia en el desarrollo de un procedimiento o
enfoque básico de corrección.

Si bien es cierto que es útil recordar las fallas anteriores en un equipo, no


puede esperarse que, en cada caso, el mismo problema sea la causa de un
síntoma determinado. En cualquier aparato electrónico, diversas áreas
conflictivas pueden indicar, aproximadamente, los mismos síntomas.

Asimismo, al enfrentar un problema de corrección de fallas, no se debe


depender de la memoria en cuanto a lo5 procedimientos de ajuste, localización
de puntos de prueba, etc. Esta es una de las funciones de lo5 manuales de
servicio, que contienen diagramas e información del respectivo sistema o
equipo. El punto importante consiste en que se tiene que aprender a
convertirse en un corrector de fallas sistemático, y no en un experto en
memoria.
31

Tecnología para el desarrollo de Sistemas Expertos

En este apartado presentaremos alguna5 técnica5 utilizada5 para el


desarrollo de sistemas Expertos, de esta forma facilitaremos la lectura de
estas colaboraciones al lector no versado aún en técnica5 de sistemas
Expertos, así como para dar a conocer los principio5 de estos sistemas bajo
los cuales se desarrolló el módulo de consulta.

LENGUAJES DE REPRESENTACIÓN DEL CONOCIMIENTOS

El conocimiento de los experto5 debe formularse de tal forma, que pueda ser
almacenado en ordenadores y procesado y analizado por programas.
Esta imagen del conocimiento recibe el nombre de Representación del
conocimiento.

Lo5 lenguaje5 de representación del conocimiento son herramienta5 auxiliare5


que permiten una representación clara y comprensible del mismo.
Actualmente, la mayoría de ello5 hacen una clara distinción entre el
conocimiento y su procesamiento. Una de la5 divisiones no5 permite
diferenciar entre un conocimiento descriptivo (declarativo) y otro de
conclusorio. La parte declarativo y fácilmente representarle del conocimiento
se separa de la5 conclusiones que se extraen con el mismo.

Existen uno5 mecanismos de procesamiento que valoran el conocimiento y


extraen conclusiones de la parte declarativo, que están a la disposicón del
técnico encargado del desarrollo de un sistema Experto. No es necesario que
conozca su estructura interna, mientras no desee modificarlo5 pero sí
conocerá el funcionamiento de lo5 mecanismos de valoración. Lo5 lenguaje5
de representación del conocimiento se describen mediante:
32

+ la cantidad de lo5 formalismos disponibles en cada caso para la


representación del conocimiento, y

+ El funcionamiento de lo5 correspondientes mecanismos de valoración.

No existe un formalismo estándar para la representación. La razón salta a la


vista: los formalismos necesarios para representar el conocimiento son tan
variado5 y flexibles, como variado y flexible es el conocimiento humano. De
esta forma se garantiza que en cada caso concreto el conocimiento sé
represente adecuadamente, próximo a su formulación natural y, en
consecuencia, comprensible. Esto último es precisamente una condición “sine
qua non” para la existencia de sistemas Experto5 de amplio alcance.

Pero existen algunos formalismos de representación, que son básicos para la


mayoría de los Sistemas Experto5 actuales. En muchos casos puede
encontrarse una forma apropiada de representación del conocimiento,
modificando y ampliando individualmente formalismos ya existentes y
prácticos, o aplicándolo5 de forma combinada.

Más adelante se presentarán como ejemplo alguno5 de lo5 formalismos más


utilizado5 y sus mecanismos de valoración correspondientes.

Reglas

El conocimiento práctico se formula a menudo, en lenguaje coloquial, en forma


de un "Si . . . entonces”.

El experto también capta su conocimiento en parte o en su totalidad en


forma de reglas, por ejemplo “si la cantidad de fallo5 es mayor que 2,
entonces la pieza es inservible”.

La intención de la5 forma5 de representación del conocimiento basadas en


reglas es reproducir esta formulación natural. La forma de funcionamiento de
estos mecanismos de valoración se apoya aquÍ en el proceso pragmático del
hombre a la hora de extraer sus conclusiones mediante reglas.
33

Representación del conocimiento mediante regla5

Bajo el concepto genérico de Regla se esconden mucha5 variantes. Una


descripción detallada de los formalismo5 basados en regla5 sólo podrá valer
para una única variante.

En el presente apartado’sólo vamos a exponer los principio5 básicos de la5


forma5 de representación basadas en reglas.

La par-te “si...” de una regla se definirá, en adelante, como la Premisa y la


parte “entonces...” como la parte de la5 Conclusiones. La parte de la5
conclusiones puede contener Conclusiones y Acciones.

Un mecanismo de valoración de regla5 recibe el nombre de Mecanismo de


Inferencia.

Una regla especialmente sencilla es la siguiente:

Esta sencilla forma de regla es, sin embargo, poco potente para aplicaciones
reales. Sólo mediante ampliaciones de esta forma básica se alcanzan
formalismos útiles en la representación del conocimiento.

Una ampliación de la5 regla5 consiste en permitir la anudación lógica de


hecho5 y acciones en la premisa y en la parte de la5 conclusiones. Entonces,
una regla podría tener este aspecto:

Otra ampliación del formalismo de regla5 es la posibilidad de indicar valore5


de probabilidad (por ejemplo para lo5 hechos). Una regla podría ser:
34

Naturalmente, con esta representación está también implícitamente


ligada la capacidad del mecanismo de inferencia de manipular correctamente
la5 probabilidades.

Otra ampliación frecuentemente utilizada del formalismo de regla5 consiste


en la posibilidad de utilizar variable5 en lugar de hechos. El mecanismo de
inferencia correspondiente controla entonces la forma en que se otorgan
valore5 a la5 variables.

MECANISMOS DE INFERENCIA PARA REGLAS

El conocimiento del experto estará configurado, en parte o en su totalidad,


por una cantidad de regla5 y hechos. La interrelación de la5 distintas regla5
y sus e f e c t o 5 se c o n t r o l a a t r a v é s d e l m e c a n i s m o d e i n f e r e n c i a
correspondiente. El cual tiene que estar sintonizado con la variante especial
del formalismo concreto.

En adelante se explicarán de nuevo sólo los principio5 básicos para la


valoración de reglas.
Lo5 mecanismos de inferencia más utilizado5 en la actualidad se basan en
do5 principio5 que también pueden estar combinados:

- Valoración por encadenamiento hacia delante (accionado por datos)


- Valoración por encadenamiento hacia atrás (accionado por hipótesis y
orientado al objetivo)

Estos do5 principio5 básicos pueden describirse mediante una forma


especialmente sencilla de reglas. Estas regla5 son del tipo:

‘Si Hecho x es válido y Hecho y es válido, entonces vale también Hecho z


y además tiene que realizarse Acción a”.
35

VALORACIÓN POR ENCADENAMIENTO HACIA DELANTE

En la valoración por encadenamiento hacia delante sé parte de hechos


conocidos (datos).

Si las premisas se pueden concluir con estos hechos, entonces se realiza la


parte de las conclusiones. Se dice también que la regla “se dispara”.

Si se cumplen todas las premisas de varias reglas a la vez, dependerá de la


versión del mecanismo de inferencia cuál de las reglas concurrentes tiene que
dispararse. Existen diferentes estrategias para solucionar este conflicto,
propias de la forma de representación del conocimiento basada en reglas. En
las reglas con indicación de probabilidad se podrían disparar, por ejemplo,
aquellas reglas cuyas conclusiones contengan el valor de probabilidad más
elevado.

El resultado de “disparar” estas reglas puede acarrear la creación de nuevos


hechos (datos).

Asimismo, estos últimos pueden disparar, a su vez, nuevas reglas.

La valoración por encadenamiento hacia delante finaliza cuando ya no pueden


disparar más reglas o cuando el mecanismo de inferencia encuentra otro
criterio de finalización.
36

La solución del problema buscada a través de la valoración de la5 regla5


sólo puede consistir, por ejemplo, en haber alcanzado un determinando
objetivo o una última regla por disparar, que ofrezca, por ejemplo, un
diagnóstico.

La solución del problema puede elaborarse y memorizarse de forma sucesiva a


través del conjunto de regla5 disparadas. Este procedimiento permite, más
adelante, hacer un seguimiento de lo acontecido y proporcionar una
explicación de la5 conclusiones obtenidas.

VALORACIÓN POR ENCADENAMIENTO HACIA ATRÁS

En la valoración por encadenamiento hacia atrás se parte de la suposición de


una conclusión (hipótesis). La elección de esta hipótesis la realiza el
mecanismo de inferencia. Para ello utiliza dato5 obtenido5 generalmente
mediante preguntas hechas al usuario.

Si la primera hipótesis no es confirmada directamente por lo5 hecho5 ya


existentes en la base de conocimientos, se procede de la forma siguiente.

Se buscan regla5 que contengan esta hipótesis de arranque en la parte de la5


conclusiones.

Cuando se encuentren varia5 regla5 hará falta también estrategias de


solución de conflicto. Estas estrategias determinan en qué secuencia deben
analizarse las reglas afectadas. Podría, por ejemplo, procederse de tal forma,
que se trataran las primeras reglas encontradas.

Según la estrategia de solución de conflicto presente, se analizan las reglas


que contengan la hipótesis como conclusión, buscando si se cumplen o pueden
cumplirse sus premisas.

Una premisa se considera concluida, cuando existen los hecho5 que la


confirman.
37

Si éste no fuera el caso para todo5 los hecho5 de una premisa, se


t r a t a r í a n c a d a u n o d e los h e c h o 5 n o c o n f i r m a d o 5 c o m o h i p ó t e s i s
provisionales Estas hipótesis temporales se analizarán primero como la5
hipótesis de salida y, dado el caso, se confirmarán.

Por regla general se tienen que analizar varias hipótesis hasta que una de
ella5 se pueda confirmar. se alcanza una solución del problema cuando una o,
según el planteamiento, varia5 hipótesis de partida pueden ser confirmadas.
incluso el hecho de no haber podido confirmar ninguna hipótesis puede ser
considerado como resultado de una valoración.
38

CQM (Camponet Object Model) y los controles Activex

Para lograr la simulación de fallas en un prototipo didáctico es necesario


contar con un modulo de software que permita desde un puerto de la PC
mandar una señal para activar el correspondiente relevador de falla en el
simulado, en este caso se decido crear un control Activex para dicho
propósito por lo que se da a conocer los aspectos de esta tecnología en el
sistema operativo Windows 95.

CONTROLE5 ACTIVEX FRENTE A CONROLES ORDINARIO5 DE WlNDOWS

Un control ActiveX es un módulo’software que se inserta en el programa C++


igual que un control de Windows. Al meno5 eso es lo que parece al principio.
Merece la pena aquí analizar las similitudes y diferencia5 entre los controle5
ActiveX y lo5 controle5 que ya conocemos.

Controle5 ordinarios: Un marco de referencia

Los programadores de Visual Basic utilizamos controle5 ordinario5 de


Windows como el control de edición y el cuadro de lista, y vimos que los
controle5 comunes de Windows funcionan de una manera muy parecida.
Estos controle5 son todo5 ventana5 hija5 que 5e utilizan generalmente en
diálogos y que están representado5 mediante clases de la MFC como CEdit y
CTreeCtrl. El programa cliente siempre es el responsable de la creación de la
ventana hija del control.
Lo5 controle5 ordinario5 envían mensajes de orden de notificación (mensajes
estándares de Windows), como BN-CLICKED, al diálogo. Si se desea realizar
una acción sobre el control, se llama a una función miembro de la clase de
control en C++, que envía un mensaje de Windows al control. Lo5 controle5
5011 ventana5 en sí mismas. Toda5 la5 claSe de control de la MFC se derivan
de CWnd, por lo que si se desea obtener el texto de un control de edición, se
llama a CWnd::GetWindowText. Pero incluso esa función funciona enviando un
mensaje al control.
39

Los controles de Windows son una parte integral de Windows, aunque los
controles comunes de Windows estén en una DLL aparte. Otra especie de
control ordinario, el así llamado control personalizado, es un control creado
por el programador que actúa corno un control ordinario en cuanto a que
envía notificaciones WM_COMMAND a su ventana padre y que recibe
mensajes definidos por el usuario.

¿En qué son similares los controles ActiveX a los controles ordinarios?

Se puede considerar que un control ActiveX es como una ventana hija, igual
que un control ordinario. Si se desea incluir un control ActiveX en un diálogo,
se utiliza el editor de diálogos para colocarlo allí y el identificador del control
aparece en la plantilla del recurso. Si se crea un control ActiveX sobre la
marcha, se llama a la función miembro Create para una clase que representa
al control, habitualmente en el gestor WM_CREATE para la ventana padre.
Cuando se desea manipular un control ActiveX, se llama a la función miembro
de C++, igual que para un control de Windows. A la ventana que contiene un
control se le llama contenedor.

¿En qué son diferentes los controles ActiveX a los controles ordinarios?

Propiedades y métodos

Las características más destacadas de los controles ActiveX son las


propiedades y los métodos. Esas funciones miembro de C++, a las que se
llama para manipular un ejemplar de control, giran todas en tomo a las
propiedades y métodos. Las propiedades tienen nombres simbólicos que se
asignan a Índices enteros. Para cada propiedad, el diseñador del control
asigna un nombre de propiedad, como ColorSegPlano o EfectoCelda, y un tipo
de propiedad, como cadena, entero o double. Incluso hay un tipo de imagen
para los mapas de bits y lo5 iconos. El programa cliente puede establecer
una propiedad individual de un control ActiveX especificando el índice y
aceptando el valor devuelto adecuado. En ciertos casos, el ClassWizard
permite que definamos en la clase de ventana de cliente datos miembro que
están asociados a las propiedades de los controles que contiene la clase de
cliente. El código generado de Intercambio de datos de diálogo (PDX, Dialog
40

Data Exchange) intercambia los dato5 entre la5 propiedades del control
y los dato5 miembro de la clase de cliente.

Los método5 de los controle5 ActiveX son como funciones. Un método tiene
un nombre simbólico, un conjunto de parámetro5 y un valor devuelto. Se llama
a un método llamando a una función miembro en C++ de la clase que
representa al control. Un diseñador de controle5 puede definir lo5 método5
que necesite, como AñoAnterior, Controllnferior, etc.

Un control ActiveX no envía mensajes de notificación WM_ a su contenedor de


la manera en que lo hacen lo5 controle5 ordinarios; en su lugar, «dispara
sucesos». Un suceso tiene un nombre simbólico y puede tener una secuencia
arbitraria de parámetro5 realmente es una función de contenedor a la que
llama el control. Como los mensajes de notificación de control ordinarios, los
sucesos no devuelven un valor al control ActiveX. Como ejemplo5 de secesos
podemos citar Pulsación, TeclaLiberada y MesNuevo. Lo5 sucesos se asignan
en la clase cliente igual que los mensajes de notificación de control.

En el mundo de la MFC, lo5 controle5 ActiveX actúan igual que la5 ventana5
hijas, pero hay una capa significativa de código entre la ventana del
contenedor y la ventana del control. De hecho, es posible que el control ni
siquiera tenga una ventana. Cuando se llama a Create, la ventana del control
no se crea directamente; en cambio, se carga el código del control y se le da la
orden correspondiente a «activación in situ». El control ActiveX crea
entonces su propia ventana, a la cual la MFC permite el acce5o a través de un
puntero a CWnd. Sin embargo, no es una buena idea que el cliente utilice
directamente el hwnd del control.

Se utiliza una DLL para almacenar uno o más controle5 ActiveX, pero la DLL
tiene a menudo una extensión de archivo OCX en lugar de una extensión DLL.
El programa contenedor carga la5 DLL’5 cuando la5 necesita, utilizando
técnica5 de COM sofisticadas que se basan en el Registro de Windows. Por el
momento, simplemente acepte el hecho de que una vez que se especifica un
control ActiveX durante el diseño, será cargado durante la ejecución.
Obviamente, cuando se entrega un programa que requiere controle5 ActiveX
especiales, se tienen que incluir los archivos OCX y un programa de
configuración adecuado.
41

Para Ilegar a comprender COM, debe familiarizarse con los siguientes


términos y sus definiciones:

Componente

Una unidad de código ejecutable que proporciona funcionalidad. Los


componente5 los proporcionan 105 servidores que son archivos .exe, .dll u
.OCX. Lo5 servidores pueden contener más de un componente y lo5
componente5 proporcionan la5 plantilla5 a partir de la5 cuales se crean lo5
objetos. El Modelo de objeto5 componente5 (COM) especifica cómo se
crean lo5 componente5 y cómo la5 aplicaciones cliente se conectan con
dichos componentes. COM también procesa la5 solicitudes de la5
aplicaciones cliente para crear objetos.

Objeto

Una combinación de código y dato5 que se puede tratar como una unidad.
Lo5 objeto5 tienen una duración; es decir, se crean y se destruyen.

Automatización

La parte de la especificación COM que define un método estándar para la


creación de componente5 y el uso de los objetos. Lo5 objeto5 de
Automatización también se conocen como objeto5 programables.
Para el programador de aplicaciones cliente, un objeto recibe una entrada y
proporciona una salida, pero el programador no puede tener acceso a su
funcionamiento interno. Es más, lo5 programadores sólo necesitan saber
cómo pueden utilizar la funcionalidad ofrecida por los objetos.

Dicha funcionalidad se ofrece a través de una o varia5 interface5


publicadas. Estas interface5 son el medio por el que la5 aplicaciones
cliente se comunican con el componente.
42

Un componente ActiveX es una unidad de código ejecutable, como un


archivo .exe, .dll u .OCX, que sigue la5 especificaciones de ActiveX para
proporcionar objetos. Un componente ActiveX expone objeto5 que pueden
utilizar otra5 aplicaciones.
43

Con Visual Basic o Visual C++ es posible crear tres tipos de componentes
ActiveX:

+ controles ActiveX
+ documentos ActiveX
+ y componentes de código ActiveX.

Controles ActiveX

Lo5 controles ActiveX (antes llamados controles OLE) son elementos


estándar de la interfaz de usuario que se permiten ensamblar rápidamente
en formularios y cuadros de diálogo reutilizables.

Documentos ActiveX

Lo5 documentos ActiveX (antes llamados objetos documentos) son


componentes ActiveX que deben almacenarse y activarse desde una
aplicación cliente. La tecnología de documentos ActiveX es una extensión
de los documentos OLE. Expande la funcionalidad de la modificación visual
de los objetos incrustados y permite que las aplicaciones genéricas de
shell, como Internet Explorer, puedan albergar distintos tipos de
documentos.

Componentes de código ActiveX

Lo5 componentes de código (antes llamados servidores OLE) son


bibliotecas de objetos. Las aplicaciones cliente utilizan lo5 componentes de
código mediante la creación de objetos a partir de las clases
proporcionadas por el componente. Lo5 clientes llaman a las propiedades,
métodos y eventos proporcionados por el objeto.

Cualquier aplicación que admita Automatización estándar puede utilizar


los componentes de código ActiveX creados en Visual Basic. Esto incluye
Visual Basic, Microsoft Excel, Microsoft Access, Microsoft Project,
Microsoft Visual FoxPro y Microsoft Visual C++.
44

Visual Basic trata gran parte de la complejidad de crear componentes


de código ActiveX, incluida la creación automática de una biblioteca de
tipos y el registro automático del componente.
45

En este apartado se da a conocer la forma en que fue desarrollando el


sistema para lograr el objetivo planteado, por lo que se expone el código
fuente de cada uno de los módulos y objetos del sistema. Lo5 modulos que
se desarrollaron fueron lo5 siguientes:

FORMULARIO PRINCIPAL:

Este objeto es la ventana principal del sistema el cual contiene el menú


por medio del cual se tiene acceso a los diferentes módulos.

CODIGO DEL FORMULARIO PRINCIPAL

Private Sub Acerca_Click()


AcercaDe.Show 1
End Sub

Private Sub Audio_Click()


FormAudio.Show
End Sub

Private Sub Radi_Click()


FormSimuAudio.Show

End Sub
46

Private Sub radio_CIick()


prende = Asignar(“¿Enciende correctamente el radio?“)
sprende = True
salida = True
Call reglass

End Sub

Private Sub Salir-Click()


Unload Me
End Sub

Private Sub Tele_Click()


FormSimuTV.Show
End Sub

Private Sub Televìsion_Click()


FormTV.Show
End Sub

Private Sub televisor_Click()


If vist = False Then Form2.Show 1
1 -----------------------------------------------------------------------------------
W-enciende = Asignar(“Para describrir el por que no trabaja correctamente el”

& ” televisor responda a lo siguiente: ¿Enciende el televisor?“)


STV = True
SaleAsignar = True
Call Reglas
End Sub

CODIGO DEL FORMULARIO ACRECA DE

Private Sub Command1_Click()


Unload Me
End Sub
47

Mádulo H.T, M, L.

En el sistema existen dos formulario los cuales contienen documentos por


híper texto para describir el funcionamiento tanto del televisor como del radio,
para lograr esto se utilizó el control visualizador de páginas web, que se
utiliza en el explorador de Windows este es un control activex el cual está
disponible si se tiene instalado el Internet Explorer a partir de la versión 3.0,
cuando se dispone de este control existen funciones que nos permiten cargar
páginas H. T. M. L. y visualizarlas con todas sus propiedades, igual que
cuando usa el Internet Explorer

FORMULARIO TV Y FORMULARIO AUDIO:

Estos objetos son formularios que contienen un control WEB BROWSER,


los cuales muestran lo5 documentos HTML en los que se describe el
funcionamiento del radio y la televisión.

CODIGO DEL FORMULARIO HTML TV

Private Sub Form_Load()


’ With FormTV
' .Width = 4000
' .Height = 3000
‘End With
WebBrowserl .Visible = True
WebBrowserl .Navigate "c:documentos\”
_
& “funcionamiento del televisor. html”

End Sub

Private Sub Ocultar_Click()


WebBrowserl .Visible = False
End Sub

Private Sub Salir_Click()


Unload Me
End Sub
48

CODIGO DEL FORMULARIO HTML AUDI0

Private Sub Form_Load()


‘FormAudio.Height = 3000
‘FormAudio.Width = 4000
‘Webl .Visible = False
‘MsgBox (“Para ver una descripción del funcionamiento haga”
‘& “clic en Ver del Menú Archivo en el siguiente formulario”)
‘Webl .Visible = True
Web1 .Navigate “c:\documentos\radio.html”

End Sub
49

El motor de inferencia

En este apartado se muestra la función principal la cual contienen el motor


de inferencia para la consulta en el módulo de televisión y de radio, este
módulo funciona bajo un mecanismo de encadenamiento hacia atrás.
Para esto primero voy a describir la5 regla5 en la5 cuales se basan el
sistema de televisión, en estas regla5 los hecho5 que se evaluan sirven para
asignar nombre5 a variable5 booleanas, la5 pregunta5 son hecho5 que se
tienen que evaluar a consecuencia de evaluar un hecho, y los mensajes entre
comilla5 son la5 respuestas a los hecho5 que se evaluan y son el punto de
parada el motor de inferencia.

si el televisor enciende entonces verificar si ¿aparece brillo?


si el televisor no enciende entonces verificar si ifunciona el relevador?

Si aparece brillo entonces verificar que al sintonizar la ¿imagine es correcta?


Si no aparece brillo entonces verificar si ¿el control de brillantez opera
correctamente?

Si al sintonizar la imagen es correcta entonces verificar ¿altura y anchura


Son correctas?
si al sintonizar la imagen no es correcta entonces verificar si ¿el cambio de
canales se produce correctamente?

Si altura y anchura es correcto entonces verificar si ¿el sonido es normal?


Si altura y anchura no es correcto entonces verificar y ¿ escorrecto el nivel de
señal que provienen del oscilador vertical?

Si sonido normal es correcto entonces verificar si ienciende y luego se apaga


el televisor?
Si sonido normal no es correcto entonces verificar si existe ¿ausencia total
de sonido?

Si enciende luego se apaga el televisor entonces “revisar sistema de


protección por sobre voltaje.”
Si enciende y no se apaga pero hay mancha5 en el cinescopio “ entonces revise
50

lo5 ajustes de desviación y convergencia en la5 bobina5 de desviación y


los imane5 de pureza.”

Si funciona el relevador entonces verificar si ¿es correcto el voltaje del


rectificado 160 v?
Si no funciona el relevador entonces verificar si ¿es correcta la tensión
permanente?

Si voltaje del rectificador 160 v es correcto entonces verificar si ¿es correcto


el voltaje de salida del regulador?
Si voltaje del rectificador 160 v no es correcto entonces “reviste fusible,
rectificación y dispositivos asociados"

Si voltaje de salida del regulador es correcto “verificar el control de brillantez”


Si voltaje de salida del regulador no es correcto “revise el funcionamiento del
regulador mismo, y todo5 lo5 elemento5 que componen al circuito regulador”

Si es correcta la tensión permanente entonces verificar si ¿es correcta la


polarización al micro controlador?
Si no es correcta la tensión permanente entonces “revise fusible de entrada,
transformador, circuito rectificador y elemento5 de la fuente de tensión
permanente”

Si es correcta la polarización del micro controlador entonces verificar si ¿son


correcta la5 condiciones de operación del micro controlador?
Si no es correcta la polarización del micro controlador entonces “revise el
regulador de 5 volt5 al igual que la fuente de alimentación de 5 volts”

Si son correcta5 la5 condicione5 de operación del micro controlador entonces


verificar si ¿s correcto el cambio de 0 a 5 en la terminal de salida del
e
relevador?
Si no son correcta5 la5 condicione5 de operación del micro controlador
entonces verificar si ¿ e
s correcta la señal de reloj?

Si es correcto el cambio de 0 a 5 en la terminal de salida del relevador


entonces “revise el transistor excitador del relevador o el propio relevador”
Si no es correcto el cambio de 0 a 5 en la terminal de salida del relevador
51

entonces verificar si ies correcto el cambio de voltaje en la terminal de el


interruptor de encendido.?

5i es correcto el cambio voltaje en la terminal del interruptor de encendido


entonces “cambie el micro controlador”
Si no es correcto el cambio de voltaje en la terminal del interruptor de
encendido “revise o reemplace el interruptor encendido”

Si es correcta la señal de reloj entonces revise si ¿es correcto el pulso de


resta blecer?
Si no es correcta la señal de reloj entonces “revise el cristal oscilador”

Si es correcto el pulso de restablecer entonces “revise las señales de


sincronía hacia el micro controlador”
Si no es correcto el pulso de restablecer entonces “revise el circuito de
restablecer”

Si la señales de sincronía hacia el micro controlador son correctas entonces


“cambie en micro controlador”
Si las señales de sincronía hacia el micro controlador no son correctas
entonces “revise la sección de sincronía”

Si el control de brillo Ópera correctamente y existe brillo entonces verifique la


sección de color y video
Si el control de brillo Ópera correctamente y no existe brillo entonces verifique
el voltaje de polarización de la base del excitador horizontal

Si el voltaje de polarización de la base del excitador horizontal si es correcto


entonces “revise la etapa de salida horizontal, de estar dañado el transistor
de salida horizontal con puede que el regulador de la fuente ópera
correctamente y que la frecuencia del oscilador horizontal es correcta,
comprime el estado dinámico del fly back al igual que el de las bobinas de
desviación horizontal, ubicadas en el colector del transistor de salida
horizontal”

Si el voltaje de polarización de la base del excitador no es correcto entonces


“revise el oscilador horizontal, compruebe que la señal de sincronía horizontal
52

Sea correcta y que esta señal esté presente en el excitador del


transistor de salida horizontal revise el estado del transformador de entre
paso hacia este transistor.”

Si el cambio de canales si se produce correctamente entonces “revise la


sección de color y video”
Si el cambio de canales no se produce correctamente entonces verifique si
¿son correcta la5 condicione5 operación de sintonizador.?

Si son correcta5 la5 condicione5 de operación en sintonizador entonces


“cambie el sintonizador y revise la sección de frecuencia intermedia.”
Si no son correcta5 la5 condicione5 operación del sintonizador entonces
“revize todo5 lo5 componente5 que envían señales y extraen señales de
sintonizador así como de los componente5 encargado5 de la polarización de
sintonizador.”

Si la sección de frecuencia intermedia opera correctamente y no obtiene señal


entonces “revize el circuito de color video”
Si la sección de frecuencia de media no ópera correctamente entonces
“sustituya el circuito de la sección de frecuencia intermedia”

Revisión de la sección de color y video

Si existe falta de video, imagen con problema5 de nitidez, color o ambas


entonces verifique ¿las condicione5 de trabajo5 del circuito de color y video
son correctas?
Si no existe falta de video, imagen con problema5 de nitidez, color o ambas
entonces “revise la sección de barrido horizontal y vertical”

Si son correcta5 la5 condicione5 de trabajo del circuito de color y video


entonces verifique si ¿aparece señal de luminancia, color en la5 terminales
correspondientes del circuito de la jungla.?
Si no son correcta5 la5 condicione5 de trabajo del circuito de color y video
entonces “compruebe los circuito5 encargado5 de proporcionar dicha5
condicione5 como son señales de operación y polarización.”

Si aparece señal de luminancia, color en la5 terminales correspondientes del


53

circuito de jungla entonces verifique si ¿aparece la señales ry by y gy?


Si no aparece la señal de iluminación, color en las terminales correspondientes
del circuito de jungla entonces “compruebe el circuito comb filter”.

si aparece la señales r y by gy entonces verifique si ¿los amplificadores de


color recibe la señales r g b.?
Si no aparece la señales ry by gy entonces “la falla es probable por el circuito
integrado dañado. Antes de remplazar el circuito verifique lo5 ajustes de lo5
controles de color, de tinte, de nitidez.”

Si los amplificadores de color recibe la señales r g b entonces verifique si ¿son


normales las polarización es de lo5 amplificadores de color?
Si los amplificadores de color no recibe la señales r g b entonces “existe un
problema en el enlace del circuito procesador de color y video o lo5
amplificadores de color”

Si son normales las polarización es de lo5 amplificadores de color entonces


“revise lo5 niveles de señal blanco y negro ya que den no ser satisfactorio5
realice lo5 ajustes correspondientes, lo5 ajustes referidos son para el nivel de
blanco negro ajustes de temperatura para el nivel de color ajustes de pureza
y convergencia si el aparato no responde a estas ajustes entonces sustituya
el cinescopio
Si no son normales las polarizaciones de los amplificadores de color al
desconectarlos de la base del cinescopio, compruebe una vez más las
polarizaciones. Si éstas se han normalizado realice pruebas dinámicas del
cinescopio si persisten lo5 problemas de polarización compruebe elementos
relacionados a la rejilla de control.”

Revisión de la sección vertical

Si es correcto en nivel de señal que proporciona el oscilador vertical entonces


verifique si ¿se recibe que los amplificadores de salida vertical la señal de
dientes de Sierra del circuito oscilador.?
Si no es correcto el nivel de señal que proporciona el oscilador vertical
entonces “verifique la polarización de este circuito y el estado de cada uno de
los componentes de este circuito ya que si estos componentes están en buen
estado cambie el circuito oscilador”
54

Si se recibe en los amplificadores de salida vertical la señal de dientes de


Sierra del circuito oscilador entonces verifique si “aparece la señal
amplificada del amplificador de salida vertical”
Si no se recibe en lo5 amplificadores de salida vertical la señal de dientes de
Sierra entonces"revise el enlace de la señal de dientes de sierra entregada
por el circuito oscilador vertical”

Si aparece la señal amplificada del amplificadores de salida vertical entonces


“revise el estado de las bobinas de desviación.”
Si no aparece la señal amplificada del amplificador de salida vertical entonces
“compruebe la polarización del amplificador de señal vertical y el estado de
los controles asociados al amplificador.”

Si hay ausencia total de sonido entonces “revise la alimentación del


amplificador de potencia y de la bocina”
si no hay ausencia total de sonido entonces verifique si el nivel de señal de
sonido es correcto.

Si el nivel de señal de sonido es correcto entonces verifique si ¿se escucha un


zumbido.?
Si el nivel de señal de sonido no es correcto entonces “verifique el estado de
los capacitores, y los circuitos trampa de frecuencia intermedia de sonido.”

Si se escuchar un zumbido entonces “compruebe el filtraje de la unidad de


alimentación”
Si no se escucha un zumbido entonces verifique si ¿es intermitente el audio?

Si es intermitente el audio entonces "resolde la sección de sonido, compruebe


el control de volumen.”
Si no es intermitente el audio entonces verifique si ¿es gangoso?

Si es gangoso entonces “proceda a verificar el estado del amplificador de


potencia su polarización y el altavoz”
Si no es gangoso entonces “aparentemente no hay problema en el sonido
hasta si el sistema para correcta por su cuenta el problema y notifique lo al
programador”
55

Revisión del sistema de protección por sobre voltaje

Si enciende el televisor y éste se apaga poco después entonces verifique si


¿está dentro de lo especificado el voltaje de salida del regulador?
Si el televisor enciende y ya no se apaga entonces “el sistema de protección
está en buen estado así como el televisor"

Si no está dentro de lo especificado el voltaje de salida del regulador


entonces “revise el circuito del regulador y sus componente5 asociados"
Si está dentro de lo especificado el voltaje de salida del regulador
alimentación entonces revise si ¿es correcto el voltaje de referencia por sobre
voltaje.?

Si es correcto es voltaje de referencia por sobre voltaje entonces “revise la


sección del circuito de protección por sobre voltaje, recuerde que esta sección
recibe pulsos desde el transformador fly back”
Si no es correcto el voltaje de referencia por sobre voltaje entonces
“compruebe la línea de enlace en el diodo zener de referencia.”

Toda5 y cada una de estas regla5 como se obserba se basan en la forma si...
entonces, bajo esta forma cada condición es verdadera con un si y es falso
con un no, para producir estas regla5 y traducirla5 a sentencias de tipo If
. . ..Then del lenguaje Basic se hace uso de una macro para el procesador de
texto5 Word de Microsoft, esta macro tiene un formulario en el que a cada
condición del enunciado se le asigna una variable, la cual puede tener do5
posibles valore5 si o no, osea falso o verdadero, una vez que la variable es
definida se le asigna una variable de control, un valor falso para esta variable
de control permite marcar la regla que ha sido evaluada.

Lo que hace la función en la cual se implamenta el motor de inferencia es


verificar toda5 y cada una de la regla5 una vez que se le asigna un valor a
cada variable a través de un cuadro de diálogo en el cual se da a conocer la
condición bajo la cual se puede encontrar el aparato, la función es recursiva y
se llama a sí misma hasta dar una respuesta final, que es cuando se aísla el
componente defectuoso.
56

A continuación se muestra el código fuente de las funciones del motor de


inferencia:

Modulol(Mator deinferencia T V )
Motor de inferencia en el modulo de consulta de televisión

Option Explicit
Public vist As Boolean
Public SaleAsignar As Boolean
Public TV-enciende As Boolean
Public STV As Boolean

Public Aparece-Brillo As Boolean


Public SBRILLO As Boolean

Public indice As Integer


Public TempBool As Boolean
Public Nombre As String

Public Al-sintonizar As Boolean


Public Ssint As Boolean

Public ALto_Ancho As Boolean


Public Salt-anch As Boolean

Public Sonido-Normal As Boolean


Public Ssonido As Boolean

Public Enciende- Y-apaga As Boolean


Public Senci_apag As Boolean

Public Func_Rele As Boolean


Public SFuncRele As Boolean

Public Voltage_Reterno As Boolean


Public SVolt_Ret As Boolean

Public Voltage_Regulado As Boolean


Public SVolt_Reg As Boolean

Public Voltaje-StandBY As Boolean


Public SVolStdby As Boolean
57

Public Voltaje_al_MC As Boolean


Public SVoltMC As Boolean

Public Condicion_OP_MC As Boolean


Public SCondMC As Boolean

Public Var As Boolean


Public SVar_apag As Boolean

Public Cambio-Voltaje-Encend As Boolean


Public SCambVolt_enc As Boolean

Public Voltaje_OKswitch_encend As Boolean


Public SVol_OKswitc As Boolean

Public Pulsos-Reloj As Boolean


Public Spulsos As Boolean

Public Pulso-Reset As Boolean


Public SPulso_reset As Boolean

Public Señal-sic-Vertical As Boolean


Public Sseñal_vert As Boolean

Public Hay-Brillo As Boolean


Public SHayBrillo As Boolean

Public Voltaje_base_Horiz As Boolean


Public SVbHoriz As Boolean

Public Cambio_canal_Ok As Boolean


Public SCambCanal As Boolean

Public Turner_OK As Boolean


Public STurn_OK As Boolean

Public Circuito_FI_OK As Boolean


Public SFi As Boolean

Public Imagen-Mal As Boolean


Public SlmgMal As Boolean

Public Condiciones-Jungla As Boolean


Public SCond_jungla As Boolean

Public Señal-Croma-Lum As Boolean


Public SCromlum As Boolean
58

Public Señales-RYBYGY As Boolean


Public SSeñalesrybygy As Boolean

Public Señales-R-G-B-OK As Boolean


Public Srgb As Boolean

Public Pol_Amp_Color As Boolean


Public SPolampcol As Boolean

Public Pol_TRC As Boolean


Public SPolTRC As Boolean-

Public Señal_Osc_vertical As Boolean


Public SSeñalOscVert As Boolean

Public Señal_Vert_amplificadaOK As Boolean


Public SSeñalAmpVert As Boolean

Public Ausencia-total-Sonido As Boolean


Public SAusenciaSound As Boolean

Public Nivel_Audio_OK As Boolean


Public Snivel_Audio As Boolean

Public Sumbido_en_sonido As Boolean


Public SSumb_sond As Boolean

Public Audio_Intermitente As Boolean


Public SAudio_int As Boolean

Public Sonido_Gangoso As Boolean


Public SSond_Gang As Boolean
Public SalidaSeñalvert As Boolean
Public SSalidaVert As Boolean
Public se-apaga-perodespues As Boolean
Public sapag_desp As Boolean

Public voltage_del_regulador_ok As Boolean


Public svolt del-reg As Boolean
Public voltaje_ref_holdDown_ok As Boolean
Public svolt_ref_ok As Boolean
59

Public Function Reglas()


--------------------------------------------
If SaleAsignar = False Then Exit Function

‘-------SI NO ENCIENDE LA TELE-----------

If TV-enciende = False And STV = True Then


STV = False
MsgBoxx (“en este caso la fuente de alimentación suele estar” _
& “en mal estado”)

Func_Rele = Asignar(“lo que inicialmente se hace es verifcar ” _


& “que el relevador de encendido del televisor opera correctamente,” _
& ” así que respoda a lo siguiente, ¿Funciona el relevador de” _
& “encendido?“)
SFuncRele = True

Call Reglas
Exit Function
End If

If W-enciende = True And STV = True Then


STV = False

Aparece-Brillo = Asignar(“Si el televisor enciende el siguiente paso” _


& “antes de emitir un juicio es verificar que en el cinescopio hay” _
& ” emision, así que responda a lo siguiente: ¿Aparece Brillo”)
SBRILLO = True

Call Reglas
Exit Function
End If

_----------------------------------------------------------------

‘////ENCIENDE PERO hay o NO HAY BRILLO EN LA PANTALLA ////////

If Aparece-Brillo = False And SBRILLO = True Then


SBRILLO = False
MsgBoxx ” Rebizar salida horizontal”

Hay-Brillo = Asignar(“si no aparece brillo se pude deber a un” _


& “desajuste” _
60

& ” en el control de brillo en el fly back o en el chasis, así” _


& ” que responda a lo siguiente: ¿Al mover el control de screen 0” _
& “brillantes se ilumina la pantalla?“)
SHayBrillo = True

Call Reglas
Exit Function
End If
If Aparece-Brillo = True And SBRILLO = True Then
SBRILLO = False
Al sintonizar = Asignar(“una vez que hay brillo sintoma de que la” _
& “emisión”
& ” es correcta se debe de sintonizar un canal, y respoder a lo” _
& “siguiente:” _
& ” ¿Al sintonizar la imagen se ve bien?“)
Ssint = True
Call Reglas
Exit Function
End If

-----------------------------------------------------------------------------------------------

’ //// HAY BRILLO PERO aprece o NO APARECE NINGUNA IMAGEN AL


SINTONIZAR UN CANAL ///
-__-____---___-----------------------------------------------------------------

If Al-sintonizar = False And Ssint = True Then


Ssint = False
MsgBoxx (“si al sintonizar un canal ” _
& ” la imagen no se ve correctamente rebizar seccion ” _
& “de Sintonia frecuencia intermedia (FI) y jungla de croma y luminancia”)

Cambio-canal-Ok = Asignar(” Empezemos por el sintonizador ” _


& ” respondiendo a lo siguiente: ¿El cambio de canales se” _
& ” se produce correctamente?“)
SCambCanal = True
Call Reglas
Exit Function
End If
If Al sintonizar = True And Ssint = True Then
Ssint = False
ALTO-ANCHO = ASIGNAR(” SI AL SINTONIZAR UN CANAL LA IMAGEN SE VE BIEN” _

& ” entonces hay que verificar que el tamaño sea correcto ” _


& ” responde ¿La altura y el hancho de la imagen son correctos?“)
Salt-anch = True
Call Reglas
61

Exit Function

End If
'
--____-----------------------------------------------------

' ////Aparece la imagen pero es correcto o no su tamaño////


' -----------------------------------------------------------

If ALto_Ancho = False And Salt-anch = True Then


Salt-anch = False
MsgBoxx (“Cuando en el televisor la imagen se ve bien pero” _
& “su tamaño no es el correcto se debe Revizar la seccion” _
& “de barrido vertical y horizontal”)
Señal_Osc_vertical = Asignar(“responde: ¿es correcto el nivel de señal que
proporciona el oscilador vertical? te sugiero que lo verifiques en tu diagrama o en
el manual de servicio”)
SSeñalOscVert = True
Call Reglas
Exit Function
End If

If ALto_Ancho = True And Salt-anch = True Then


Salt-anch = False
Sonido-Normal = Asignar(“asta aqui el televisor no parece presentar” _
& ” problemas con la imagen pero, que tal con el sonido responde entonces” _
& ” ¿Es el sonido normal y correcto?“)
Ssonido = True
Call Reglas
Exit Function
End If
'
--------------------------------------------------------------------

' /// en la imagen no hay problemas pero el sonido es o nó correcto


--------------------------------------------------------------------

If Sonido-Normal = False And Ssonido = True Then


Ssonido = False
‘MsgBoxx (” rebizar seccion de Audio”)
Ausencia-total-Sonido = Asignar(“Si el problema es en el sonido” _
& “primero empezemos a determinar la causa del problema tespondiendo a lo”
-
& “siguiente ¿Hay ausencia total de sonido (no hace nada de ruido?)“)
SAusenciaSound = True
Call Reglas
Exit Function
End If
62

If Sonido-Normal = True And Ssonido = True Then


Ssonido = False
MsgBoxx ” Si tanto imagen como sonido son correctos y el televisor” _
& “muestra una imagen correcta, entonces debe permanecer encendido” _
& “todo el tiempo...”
Enciende - Y -apaga = Asignar(“No obstante puediera ser que” _
& “El Televisor enciende bien pero luego ¿se apaga sin ninguna” _
& ” causa aparente, después de encender o despues de un rato de trabajo?“)
Senci_apag = True
Call Reglas
Exit Function
End If
'
----------------------------------------------------------

‘////// el sonido es correcto y el televisor enciende pero _


& luego se apaga

If Enciende-Y-apaga = False And Senci_apag = True Then


Senciapag = False
MsgBoxx (“si el televisor trabaja correctamente” _
& “y no tiene ningun problema en el sonido” _
& “mas sin enbargo se ovserban manchas de color en el cinescopio” _
& “PROCEDA DESMAGNETIZAR Y A HACER AJUSTES AL TRC”)

Exit Function
End If

If Enciende- Y- apaga = True And Senci_apag = True Then


Senci_apag = False
MsgBoxx (“Reviar el sistema Hold Down”)
se-apaga-pero-despues = Asignar(“Enciende pero este se apaga poco” _
& “despues?“)
sapag_desp = True
Call Reglas
Exit Function
End If

‘////////funciona el relevedor de encendido////////

If Func_Rele = False And SFuncRele = True Then


SFuncRele = False
MsgBoxx (“Si el televisor no Funciona el rele de encendido” _
63

& ” es posible que no opere correctamente o que existan problemas en” _


& ” la fuente de alimentación prmanente o Stand By”)
Voltaje_StandBY = Asignar(“Existe tension permanente de trabajo” _
& “(StandBy) de +5 Volts? (remitase a su diagrama)“)
SVolStdby = True
Call Reglas
Exit Function
End If

If Func_Rele = True And SFuncRele = True Then


SFuncRele = False
MsgBoxx (“El rele funciona mas no enciende el televisor así que” _
& “es hora de que revise el voltaje de alimentacion a la fuente”)
Voltage_Retorno = Asignar(“El voltaje rectificado de alimentacion” _
& ” desde la linea a la fuente es correcto 160 a 180 Volts aprox” _
& ” dependiendo del circuito rectificador”)
SVolt_Ret = True
Call Reglas
Exit Function
End If
'
----------------------------------------------------

‘llllllllllll verificar el voltaje se espera//////////


' -----------------------------------------------------
If Voltaje-StandBY = False And SVolStdby = True Then
SVolStdby = False
MsgBoxx (“Revize Fusibles de entrada transformador sistema” _
& “de regulador etc en general la alimentacion de StandBy” _
& “0 de espera o permanente” _
& ” Remitase al diagrama del televisor o al manual de servicio”)
‘Finalizar
Exit Function
End If

If Voltaje-StandBY = True And SVolStdby = True Then


SVolStdby = False
MsgBoxx (“Si el voltaje de stand by es correcto proceda a” _
& ” revizar el circuito Micro Controlador”)
Voltaje_al_MC = Asignar(“Verifica lo siguiente y respone:”
& “Le llegan correctamente 5 volts al terminal de alimentación ” _
& “del microcontrolador?“)
SVoltMC = True
Call Reglas
Exit Function
End If
'
---------------------------------------------------------------
64

‘///// Verificar condiciones de trabajo del microcontrolador _


& Voltaje-Al-MC
---------------------------------------------------------------------------------------

If Voltaje_al_MC = False And SVoltMC = True Then


SVoltMC = False
MsgBoxx (“Si el voltaje de aliemntación al microcontrolador no” _
& ” es correcto, revize el regulador de 5 volts ; Resolde la” _
& ” terminal de alimentación y vuelva” _
& ” a medir si nó ES CORRECTO EL VOLTAJE aisle la terminal” _
& “del micro y si el voltaje se restablece” _
& “CAMBIE EL CIRCUITO”)
’ FIN
Exit Function
End If

If Voltaje_aI_MC = True And SVoItMC = True Then


SVoltMC = False
‘msgboxx (“Mensje de no ser cierto”)
Condicion-OP-MC = Asignar(“Una vez que estamos seguros de que la” _
& ” alimentacion de voltage en el microcontrolador es correcta” _
& ” verifiquese Las condiciones de operación del micro controlador” _
& ” son las correctas de acuerdo al diagrama o al manual de servicio?“)
SCondMC = True
Call Reglas
Exit Function
End If

‘//////// verificar cambio en voltaje de encendido//////


-----------------------------------------------------------
If Condicion_OP_MC = False And SCondMC = True Then
SCondMC = False
‘MsgBoxx (“Rebize las señales de operacion del micro remitase al manual y al
diagrama”)
Pulsos-Reloj = Asignar(” Es correcta la señal de pulsos del” _
& “oscilador en el microcontrolador?“)
Spulsos = True
Call Reglas
Exit Function
End If

If Condicion_OP_MC = True And SCondMC = True Then


SCondMC = False
MsgBoxx (“Si el microcontrolador trabaja correctamente verifique el circuito de
encendido”)
65

Cambio-Voltaje-Encend = Asignar(“Hay cambio de voltaje en el voltaje de


polarizacion” _
& “del transistor de encendido del relevador?“)
SCambVolt_enc = True
Call Reglas
Exit Function
End If

‘********** everifique que opra correctamente el relevador

If Cambio-Voltaje-Encend = False And SCambVolt_enc = True Then


SCambVolt_enc = False
Voltaje_OKswitchencend = Asignar(“Hay cambio de voltaje en los terminales
de switcheo del relevador?“)
SVoI-OKswitc = True
Call Reglas
Exit Function
End If

If Cambio-Voltaje-Encend = True And SCambVolt_enc = True Then


SCambVolt_enc = True
MsgBoxx (“Revise el transistor excitador del relevador, o el propio relevado? _
& ” en estos casos la falla es el circuito de encendido”)
’ FIN

Exit Function
End If

‘/////revise encendido en el relevador

If Voltaje_OKswitch_encend = False And SVoI-OKswitc = True Then


SVoI-OKswitc = False
MsgBoxx (” al estar bien la fuente de alimentación y operar” _
& ” correctamente el circuito de encendido y no” _
& ” se acciona el relevador pues Cambie el relevador”)
’ FIN
Exit Function
End If

If Voltaje_OKswitchencend = True And SVol_OKswitc = True Then


SVoI-OKswitc = False
MsgBoxx (“Revize correctamente el microcontrolador” _
& “por que es muy posiblemente que se dañó y se deba sustituir”)
66

' FIN

Exit Function
End If

‘La alimentacion al rectificador de la fuente es correcta

If Voltage_Retorno = False And SVolt_Ret = True Then


SVolt_Ret = False
MsgBoxx (“Revise Fusible, rectificador y dispositivos” _
& ” de alimentacion el regulador de la fuente”)
' finalizar

Exit Function
End If

If Voltage_Retorno = True And SVolt_Ret = True Then


SVolt_Ret = False
MsgBoxx (“Cuando el voltaje del rectificador principal esta bien” _
& ” verifiquese el voltaje regulado o sea a la salida del regulador”)
Voltage_Regulado = Asignar(” Así que responde ¿El voltaje de” _
& “salida del regulador es el correcto?“)
SVolt_Reg = True
Call Reglas
Exit Function
End If

' checar salida de voltaje regulado

If Voltage_Regulado = False And SVolt_Reg = True Then


SVolt_Reg = False
MsgBoxx (“Revize el circuito del regulador remitase al diagrama” _
& “del televisor y al manual de servicio por que está dañado”)
‘finalizar

Exit Function
End If

If Voltage_Regulado = True And SVolt_Reg = True Then


SVolt_Reg = False
MsgBoxx (“Cuando el voltaje del regulador principal esta bien verifiquese en la
seccion ”
& “Horizontal para esto si no hay brillo mueva el control screen en el Fly Back”)
Hay-Brillo = Asignar(“Al mover el control de screen en el Fly back” _
& “o el de brillantes en el televisor se ilumina en la pantalla?“)
SHayBrillo = True
67

Calll Reglas
Exit Function
End If

‘iiiiiiiiiiiiii CHECAR LA ETAPA HOROZONTAL


’ DETERMINAR SI HAY BRILLO EN LA PANTALLA

If Hay-Brillo = False And SHayBrillo = True Then


SHayBrillo = False
MsgBoxx (“Si la pantalla del televisor no se ilumina verfique la” _
& ” polarización del transistor de Salida Horizontal”)
Voltaje_base_Horiz = Asignar(“RESPONDE ¿Hay aprox -0.3 Volts de tension
en la base del transistor de salida horizontal?“)
SVbHoriz = True
Call Reglas
Exit Function
End If

If Hay-Brillo = True And SHayBrillo = True Then


SHayBrillo = False
MsgBoxx (“Al iluminarse la pantalla y no obtener imagenes el”
& “problema está en las etapas de FI o Jungla de Croma y luminancia”)
Imagen-Mal = Asignar(“Ressponde: ¿Existen problemas como la imagen
como falta de nitidez, color o ambos?“)
SlmgMal = True
Call Reglas
Exit Function
End If
......................
111111111111111111111

‘@@@@@@@@@ al comprobar pulsos delmicrocontrolador


‘Pulsos de reloj

If Pulsos-Reloj = True And Spulsos = True Then


Spulsos = False
MsgBoxx (“Si la señal del oscilador en el micro es correcta” _
& ” la siguiente señal que se debe verificar es la de, el circuito de reset”)
Pulso-Reset = Asignar(“Responde ¿Llega el pulso de Reset al
microcontrolador?“)
SPulso_reset = True
Call Reglas
Exit Function
End If

If Pulsos-Reloj = False And Spulsos = True Then


Spulsos = False
MsgBoxx (“La falla es posible esta en el oscilador revize el” _
68

& “cristal oscilador o en su defecto sustituya el MC ya que si no” _


& ” existen los pulsos de reloj el micro no trabaja”)
‘Fin
Exit Function
End If

'///////////////// en caso de que señal reset es ok verifique la presencia de señales de


sincronia en el micro

' verificando señal reset

If Pulso_Reset = True And SPulso_reset = True Then


SPulso_reset = False
MsgBoxx (“Si el pulso de reset es correcto verifique las señal de sincronia
vertical y horizintal hacia el Micro controlador”)
Señal-sic-Vertical = Asignar(“Responde ¿Hay la presencia de la señal vertial
hacia el microcontrolador?“)
Sseñal_vert = True
Call Reglas
Exit Function
End If

If Pulso-Reset = False And SPulso_reset = True Then


SPulso_reset = False
MsgBoxx (“Revise el circuito de RESET del televisor” _
& “remitase al diagrama y al manual de servicio por que en este se encuentra
la falla”)

‘Fin
Exit Function
End If

' ////////// verificando estado de la señal vertical

If Señal-sic-Vertical = True And Sseñal_vert = True Then


Sseñal_vert = False
MsgBoxx (“Como todas las condiciones de operacion del” _
& “Microcontrolador son correctas asta aqui, sustutuya” _
& “el micro controlador”)
' fin
Exit Function
End If

If Señal_sic_Vertical = False And Sseñal_vert = True Then


Sseñal_vert = False
MsgBoxx (“Revise el circuito y/o seccion de barrido vertical” _
& “ya que sin esta señal el microcontrolador no opera correctamente” _
69

& “por lo tanto no opera el televisor”)


‘Fin
Exit Function
End If

' Voltaje base_Horiz


' SVbHoriz = True

IfVoltaje_base_Horiz = True And SVbHoriz = True Then


SVbHoriz = False
MsgBoxx (” Ahora Comrobaremos La etapa de salida Horizontal”)
MsgBoxx (” Confirme el estado dinamico del Fly Back” _
& “,yugo horizontal y capacitores de RF ubicados en ” _
& ” el colector del transistor “)
MsgBoxx (“De estar dañado el transistor de salida horizontal” _
& “compruebe que el regulador de voltaje de la fuente principal” _
& “Opere correctamente”)
‘fin
End If

IfVoltaje_base_Horiz = False And SVbHoriz = True Then


SVbHoriz = False
MsgBoxx (“Revize el oscilador horizontal al no haber un voltaje correcto” _
& ” en la base de el transistor de salida horizontal”)
MsgBoxx (“Recuerde que esta etapa tiene relación con el” _
& ” sistema Hold-Down (protección contra rayos X o sobre voltaje “)
MsgBoxx (“Compruebe que la señal horizontal proviene del C.I. de la” _
& “Jungla de croma y luminancia esté presente y sea amplificada” _
& “por el transistor excitador del transistor de salida horizontal” _
& “revise el estado del transformador de acoplamiento entre estos transistores”)
‘fin
End If

' revision del cambio de canal

If Cambio_canal_Ok = True And SCambCanal = True Then


SCambCanal = False
MsgBoxx (” Proceda a rebizar las secciones de croma, luminancia y video si” _
& “es que la imagen no es satisfactoria pero el cambio de canal se” _
& ” produce correctamente”)
Imagen-Mal = Asignar(“en este caso responde a lo siguiente: ¿Existe” _
& “falla de video,como imagen con problemas de nitidez color o ambas?“)
SlmgMal = True
Call Reglas
’ fin
End If
70

If Cambio_canal_Ok = False And SCambCanal = True Then


SCambCanal = False
MsgBoxx (“Al no prodicirse un cambio de canales correcto” _
& “Verifique las condiciones de trabajo del sintonizador” _
& ” remitase al diagrama esquematico correspondiente”)

Turner_OK = Asignar(” responde: ¿Son correctas las condiciones” _


& “de trabajo del sintonizador?“)
STurn_OK = True
Call Reglas
End If

If Turner_OK = True And STurn_OK = True Then


STurn_OK = False
MsgBoxx (” Como las señales y voltajes de trabajo del sintonizador son los
correctos ” _
& “compruebe el sintonizador dinamicamente o en otro aparato” _
& “si y solo esta seguro que la Etapa de FI esta en buen estado” _
& “para esto remitase al diagrama y manual de servicio del televisor”)
MsgBoxx (“si su televisor tiene entrada de señal de video, conectele señal” _
& ” por esta entrada, y si la señal es correcta es que la etapa” _
& ” o circuito de FI y /o sintonizador están mal”)
Circuito_FI_OK = Asignar(“Es correcta la señal del sintonizador hacia la etapa
de FI asi como sus condiciones de trabajo? “)
SFi = True
Call Reglas
End If

If Turner_OK = False And STurn_OK = True Then


STurn_OK = False
MsgBoxx (“Verifique que cada uno de los voltajes y señales” _
& “hacia el sintonizador sen los correctos revise” _
& “todos y cada uno de los circuitos involucrados remitase al” _
& “manual de servicio del televisor y al diagrama”)
End If

If Circuito_FI_OK = False And SFi = True Then


SFi = False
MsgBoxx (“Cuando la señal del sintonizador, o de cualquier” _
& “otro circuito NO son correctas cambie el componente defectuoso”)
End If

If Circuito_FI_OK = True And SFi = True Then


SFi = False
MsgBoxx (” como las condiciones del sintonizador son correctas” _
& “asi como su operacion al,igual que las señales y voltajes de” _
& “la etapa de fi son correctas sustituya este circuito” _
71

& “si la imagen no aparece correctamente”)


End If

'lllllllverificacion de la señal de video y color//////////

If Imagen-Mal = False And SlmgMal = True Then


SlmgMal = False
MsgBoxx (“Esta es la seccion de salida vertical y horizontal entre si ” _
& “la altura y la anchura en la imagen no son correctas”)
Señal_Osc_vertical = Asignar(“Empezemos: ¿Es correcto el nivel de” _
& “la señal del oscilador vertical? ” & Chr(13) & “remitase al” _
& “diagrama del televisor “)
SSeñalOscVert = True
Call Reglas
Exit Function
End If

If Imagen-Mal = True And SlmgMal = True Then


SlmgMal = False
Condiciones-Jungla = Asignar(“Al tener una imagen mal primero vea que” _
& “Existen las condiciones de operacion para el trabajo” _
& “del C.I. jungla de croma y luminancia así que responde:” _
& “¿son correctas?“)
SCondjungla = True
Call Reglas
Exit Function
End If

'lllll/lverificacion de la señal de video y colorllllllllll


' señales croma y luminancia

If Condiciones-Jungla = False And SCondjungla = True Then


SCondjungla = False
MsgBoxx (“En este caso compruebe los circuitos encargados de” _
& “proporcionar dichas condiciones Remitase al diagrama esquematico _
& “así como al manual de servicio”)
Exit Function
End If

If Condiciones-Jungla = True And SCondjungla = True Then


SCondjungla = False
Señal-Croma-Lum = Asignar(“Responde: ¿Aparece Luminancia y croma” _
72

& “en las terminales correspodientes del circuito de jungla croma” _


& “y luminancia?“)
SCromlum = True
Call Reglas
Exit Function
End If

'///////verificacion de la señal de video y color//////////


' señales ry by gy
If Señal-Croma-Lum = False And SCromlum = True Then
SCromlum = False
MsgBoxx (“Cuando los voltajes y señales no son los correctos en” _
& ” 4esta circuito, compruebe el Comb Filter” _
& “Remitase al manual de servicio y al diagrama esquematice”)
Exit Function
End If

If Señal-Croma-Lum = True And SCromlum = True Then


SCromlum = False
Señales-RYBYGY = Asignar(“Ahora respode: ¿Aparecen las señales” _
& “R-Y,B-Y,G-Y en las terminales de salida del circuito jungla”)
SSeñalesrybygy = True
Call Reglas
Exit Function
End If

'///////verificacion de la señal de video y color//////////


' señales ry gy by
If Señales-RYBYGY = True And SSeñalesrybygy = True Then
SSeñalesrybygy = False
Señales-R-G - B -OK = Asignar(“Ahora respoonde ¿Cada transistor” _
& “amplificador de color recibe la señal de video correspondiente”)
Srgb = True
Call Reglas
Exit Function
End If

If Señales-RYBYGY = False And SSeñalesrybygy = True Then


SSeñalesrybygy = False
MsgBoxx (“En este caso al fallar una cualquiera de estas” _
& ” señales la falla probale es en el circuito integrado” _
& “por estar dañado antes de reemplazar, verifique que los ajustes” _
& “de nitidez color tinte etc, operen correctamente”)
Exit Function
73

End If

'///////verificacion de la señal de video y color//////////


‘circuitos amplificadores de color
If Señales-R-G - B -OK = True And Srgb = True Then
Srgb = False
MsgBoxx “Si las señales de color se obrienen ahora verifiquemos” _
& “que se amplifiquen”
Pol_Amp_Color = Asignar(“Responde ¿La señal de video es de aprox 170 V en”

- & “el colector de cada amplificador de color?“)


SPolampcol = True
Call Reglas
Exit Function
End If

If Señales-R-G - B -OK = False And Srgb = True Then


Srgb = False
MsgBoxx (“Al no tener ninguna señal de color Probablemente el” _
& “enlace de señal entre el circuito de croma y luminancia y"
& “los amplificadores de color esta dañado para revizarlo remitase" _
& “al diagrama del televisor”)
Exit Function
End If

'//////verificacion de la señal de video y color//////////


‘polarizacion de los amplificadores de color
If Pol_Amp_Color = True And SPolampcol = True Then
SPolampcol = False
Pol-TRC = Asignar(“responde: ¿Son normales las polarizaciones del cátodo y
de”
&"la rejilla de control del TRC ?“)
SPolTRC = True
Call Reglas
Exit Function
End If

If Pol_Amp_Color = False And SPolampcol = True Then


SPolampcol = False
MsgBoxx (“Verifique la polarización de los apmplificadores de color” _
& “ya que una polarización incorrecta trae como concecuencia” _
& “la sustitucion de algun componente “)
Exit Function
End If
74

‘///////verificacion de la señal de video y color//////////


' verificacion del trc

If Pol_TRC = True And SPolTRC = True Then


SPolTRC = False
MsgBoxx (“Revise los niveles de Blanco y Negro y color sobre” _
& “la imagen; de no ser satisfactorios, realice los ajustes” _
& “correspondientes Los ajustes referidos son: PARA NIVEL B y N -” _
& “AJUSTE DE TEMPERATURA PARA NIVEL DE COLOR AJUSTES DE
PUREZA Y” _
& “CONVERGENCIA ” & Chr(13) & “NOTA::: DE NO RESPONDER EL TRC A
ESTOS AJUSTES,”
& “SUSTITUYALO”)
Exit Function
End If

If Pol_TRC = False And SPolTRC = True Then


SPolTRC = False
MsgBoxx (“DESCONESTE LA BASE DEL TRC y compruebe una vez mas” _
& “las polarizaciones y sís estas son correctas realice pruebas” _
& “dinamicas del TRC si el trc esta bien compruebe elementos” _
& “relacionados a la rejilla y al conector de la base”)
Exit Function
End If

‘@@@@@@@######/*/*ll

‘///////verificacion de la señal de video y color//////////


' señal vertical
If Señal_Osc_vertical = True And SSeñalOscVert = True Then
SSeñalOscVert = False
SalidaSeñalvert = Asignar(“Resonde ahora ¿se recibe en los” _
& “amplificadores de salida vertical la señal de diente de sierra?“)
SSalidaVert = True
Call Reglas
Exit Function
End If

If Señal_Osc_vertical = False And SSeñalOscVert = True Then


SSeñalOscVert = False
75

MsgBoxx (“Compruebe la polarizacion del circuito oscilador” _


& “vertical ásí como de sus componentes asociados ya que de” _
& “estar bien los componentes así como la polarización se tendrá” _
& “que reemplazar el circuito”)
Exit Function
End If

‘///////cerificar señal de salida del amplificador vertical


If SalidaSeñalvert = True And SSalidaVert = True Then
SSalidaVert = False
MsgBoxx “Si la señal llega la amplificador verifique sea amplificada”
Señal_Vert_amplificadaOK = Asignar(“por lo tanto responde ¿Aparece” _
& “la señal amplificada en la salida del amplificador vertical?“)
SSeñalAmpVert = True
Call Reglas
Exit Function
End If

If SalidaSeñalvert = False And SSalidaVert = True Then


SSalidaVert = False
MsgBoxx (“Revice el enlace de la señal de diente de sierra” _
& “entregada por el oscilador hacia el amplificador remitase al” _
& “diagrama del televisor”)
Exit Function
End If

‘///////salida vertical//////////
If Señal_Vert_amplificadaOK = True And SSeñalAmpVert = True Then
SSeñalAmpVert = False
MsgBoxx (“verifique el estado de las bobinas o yugos de desviación ya” _
& ” que si la altura no es la correcta es porque el yugo esta dañado”)
Exit Function
End If

If Señal_Vert_amplificadaOK = False And SSeñalAmpVert = True Then


SSeñalAmpVert = False
MsgBoxx (“Compruebe polarizacion y controles de el circuito” _
& “amplificador vertical ya que el problema es en el amplificador” _
& “de la señal vertical”)
Exit Function

End If
76

‘///////revicion del sonido//////////


If Ausencia-total-Sonido = True And SAusenciaSound = True Then
SAusenciaSound = False
MsgBoxx (“revise la polarización del circuito amplificador” _
& “de potencia así como el altavos incluyendo el anlace entre” _
& “estos Remitase al diagrama del televisor”)
Exit Function
End If

If Ausencia-total-Sonido = False And SAusenciaSound = True Then


SAusenciaSound = False
MsgBox “Si tenemos sonido ahora verifiquemos que sea correcto”
Nivel_Audio_OK = Asignar(“Responde: ¿El nivel de la señal de sonido” _
& “es correcto?“)
Snivel-Audio = True
Call Reglas
Exit Function
End If

‘lllllllrevicion del sonidollllllllll


If Nivel-Audio-OK = True And Snivel-Audio = True Then
Snivel-Audio = False
Sumbidoen-sonido = Asignar(“El nivel de audio es correcto pero ¿se” _
& “escucha algun zumbido en el sonido?“)
SSumb_sond = True
Call Reglas
Exit Function
End If

If Nivel-Audio-OK = False And SniveIAudio = True Then


Snivel-Audio = False
MsgBoxx (“En este caso verifique el estado de los capacitores” _
& “electroliticos y los circuitos trampa de sonido o toma de” _
& “frecuencia intermedia de sonido remitase al” _
& “diagrama del televisor y al manual de servicio”)
MsgBoxx (“TIP el circuito trampa de sonido o toma F.I.S. puede” _
& “ocacionar la perdida de audio con un canal activo y un ssisseo en canal
desocupado o que no se transmita señal”)
Exit Function
End If

‘lllllllseñal de ,sonidollllllllll
If Sumbidoen-sonido = True And SSumb_sond = True Then
SSumb_sond = False
MsgBoxx (“Compruebe el filtraje de la unidad de alimentación ahí” _
77

& “está el problema”)


Exit Function
End If

If Sumbidoen-sonido = False And SSumb_sond = True Then


SSumb_sond = False
Audio-Intermitente = Asignar(“Si el problema no es sumbido entonces” _
& “LES el sonido intermitente?“)
SAudio_int = True
Call Reglas
Exit Function
End If

‘lllllllseñal de sonidollllllllll
If Audio-Intermitente = True And SAudio_int = True Then
SAudio_int = False
MsgBoxx (“En este caso resolde la seccion del audio y limpie y” _
& “revise el control de volumen y no use un lubricante que” _
& “ataque a los plasticos”)
Exit Function
End If

If Audio-Intermitente = False And SAudio_int = True Then


SAudio_int = False
Sonido-Gangoso = Asignar(“Si el sonido tampoco es intermitente” _
& “entonces ¿ES gangoso el sonido?“)
SSond_Gang = True
Call Reglas
Exit Function
End If

‘///////señal de sonido//////////
If Sonido-Gangoso = True And SSond_Gang = True Then
SSond_Gang = False
MsgBoxx (“Al tener sonido gangoso proceda a verificar el estado” _
& “del amplificador de potencia así como la bocina”)
Exit Function
End If

If Sonido-Gangoso = False And SSond_Gang = True Then


SSond_Gang = False
MsgBoxx (“Pues el audio parece estar correcto y todo bien??!!! (_)(_)’
& ” el sistema asta aqui falla en este caso trata de corregir el” _
& “problema y contacta con tu instructor para eriquecer el sistema”)
78
Exit Function
End If

‘///////revicion de Hold down//////////


If se-apaga-perodespues = True And sapag-desp = True Then
sapag-desp = False
MsgBoxx “Ahora vamos a revizar la sección HoldDown” _
& “esta sección es la encargada de proteger algún sobre” _
& “voltaje o emisión de rayos X en el televisor”
voltage-del-regulador-ok = Asignar(“Responde: ¿Esta dentro de lo” _
& “especificado la tension de salida del regulador de la fuente?“)
svolt-del-reg = True
Call Reglas
Exit Function
End If

If se-apaga-pero-despues = False And sapag-desp = True Then


sapag-desp = False
MsgBoxx (“Bueno el sistema Hold down esta bien y al parecer no hay
problema”)
MsgBoxx (“Trata de comensar nuevamente la sección de consulta” _
& “si no te responde a tu problema pide ayuda a tu instructor” _
& ” y anoten el sintoma y la causa para enriquecer este sistema”)
Exit Function
End If

‘///////revicion de Hold downllllllllll


If voltage_del_regulador_ok = True And svolt-del-reg = True Then
svolt-del-reg = False
voltaje_ref_hoIdDown_ok = Asignar(“Como el voltaje del regulador ” _
& “es correcto verfiquemos el voltaje de referencia que se aplica a” _
& “la sección del HoldDown” & Chr(13) & ” ¿es correcto este voltaje?“)
svolt_ref_ok = True
Call Reglas
Exit Function
End If

If voltage-del-regulador-ok = False And svolt-del-reg = True Then


svolt-del-reg = False
MsgBoxx (“Revise el circuito del regulador y sus componentes”)
Exit Function
End If

‘lllllllrevicion de Hold downlllll/llll


79

-----------------------------------------------------------------------

If voltaje_ref_holdDown_ok = False And svolt-ref-ok = True Then


svolt-ref-ok = False
MsgBoxx (“Compruebe la linea de enlace y el diodo zener de referencia”)
Exit Function
End If

If voltaje_ref_holdDown_ok = True And svolt-ref-ok = True Then


svolt-ref-ok = False
MsgBoxx (“Revise el circuito hold down ( el cual recibe pulsos” _
& “desde el fly back) o resolde dicho circuito”)
Exit Function
End If

End Function

Public Function Asignar(Mensaje As String) As Boolean


Forml .Label1 .Caption = Mensaje
Forml .Show 1
Asignar = TempBool
End Function

Public Sub MsgBoxx(Mensaje As String)


FormTip.Label1 .Caption = Mensaje
FormTip.Show 1
End Sub
80

Modulo 2(Módulo deconsulta de Radio)


' motor de inferencia en el módulo de consulta para radioradio

Public Sintonizador As Boolean


Public SSintonizador As Boolean
Public VolumenTono As Boolean
Public SVolumenTono As Boolean
Public prende As Boolean
Public sprende As Boolean
Public Sonido As Boolean
Public Ssonido As Boolean
Public Sintonia As Boolean
Public SSintonia As Boolean
Public Bocina As Boolean
Public SBocina As Boolean
Public SonidoOk As Boolean
Public SSonidoOk As Boolean
Public FlOk As Boolean
Public SFIOk As Boolean
Public VoltajeAm As Boolean
Public SVoltajeAm As Boolean
Public Fuente As Boolean
Public Sfuente As Boolean
Public salida As Boolean

Public Function reglass()

If salida = False Then Exit Function

' --------------- Ver que pasasi prende o no - - - - - - - - - - - - - - ////

If prende = True And sprende = True Then


sprende = False
Sonido = Asignar(“Luego de que se ve que el aparato enciende lo que sigue es
verificar que funcione el amplificador de sonido, ya que es mejor verificar un
aparato desde la salida de señal asta su entrada de señal así que responda a lo
siguiente emite algun sonido el aparato en la bocina?“)
Ssonido = True
Call reglass
Exit Function
81

End If

If prende = False And sprende = True Then


sprende = False
Fuente = Asignar(“Si el aparato no enciende, entonces la fuente de alimentación
pudiera ser que no opera correctamente, así que verifique el voltage de la fuente
Vcc , por lo que responda a lo siguiente ¿El voltge de la fuente Vcc, es correcto?“)
Sfuente = True
Call reglass
Exit Function
End If
' - - - - - - - - - - - - - - - Sonido

If Sonido = True And Ssonido = True Then


Ssonido = False
Sintonia = Asignar(“Si existe sonido ahora debemos verificar que se pueda
sintonizar una estación correctamente, así que responda ¿se sintoniza alguna
señal correctamente?“)
SSintonia = True
Call reglass
Exit Function
End If

If Sonido = False And Ssonido = True Then


Ssonido = False
MsgBoxx (“Si no escuha ningun sonido se debe copmprobar el funcionamiento
de el apmplificador y el de la bosina”)
Bocina = Asignar(“Para empezar a verificar el amplificador primero veirifque que
la bocina este en buen estado y responda a lo siguiente ¿Esta en buen estado la
bocina?“)
SBocina = True
Call reglass
Exit Function
End If

'--------------------- Sintonia
If Sintonia = True And SSintonia = True Then
SSintonia = False
SonidoOk = Asignar(“Al poder sintonizar alguna señal el sonido debe de ser
correcto y sin interferencias, asi’que responda ¿el sonido es correcto?“)
SSonidoOk = True
Call reglass
Exit Function
End If
82

If Sintonia = False And SSintonia = True Then


SSintonia = False
FlOk = Asignar(“Si no se puede sintonizar una estación correctamente es por
que posiblemente pudiera trabajar mal el amplificador de FI, así que inyecte una
señal FI en su entrada (de AM o FM según el radio) Y responda a lo siguiente:
¿Se escuhcha correctamente la señal?“)
SFIOk = True
Call reglass
Exit Function
End If
'
---------------- SonidoOk

If SonidoOk = True And SSonidoOk = True Then


SSonidoOk = False
MsgBoxx (“Si se sintoniza y se escucha correctamente un radio significa que no
hay problema aparente y así termina este modulo”)
Exit Function
End If

If SonidoOk = False And SSonidoOk = True Then


SSonidoOk = False
VolumenTono = Asignar(“Si el sonido no es correcto (no confundir con sonido
con interferencia estatica) es debido en una primera causa al control de volumen o
de tono verifique estos controles y responda ¿ estan en buen estado y funcionan
correctamente estos controles?“)
SVolumenTono = True
Call reglass
Exit Function
End If
'

If VolumenTono = True And SVolumenTono = True Then


SVolumenTono = False
Bocina = Asignar(“Si los controles de sonido y tono operan correctamente y el
sonido no es correcto berifique primero su bocina, ¿esta en buen estado su
bocina?“)
SBocina = True
Call reglass
Exit Function
End If

If VolumenTono = False And SVolumenTono = True Then


SVolumenTono = False
83

MsgBoxx (“Si los controles tanto de volumen” _


& “como de tono no operan correctamente el” _
& “sonido es incorrecto así que sustituyalos”)
Exit Function
End If

' ----------------- Fuente


If Fuente = True And Sfuente = True Then
Sfuente = False
MsgBoxx (“Si el voltaje de alimentación de la fuente Vcc es correcto pero el radio
no enciende en tonces el problema es en el switch de ecendido o en el switch de
funcion así que revize ambos siwtches”)
Exit Function
End If

If Fuente = False And Sfuente = True Then


Sfuente = False
MsgBoxx (“Si la funte de alimentación no proporciona el voltaje correcto, verifique
todos y cada uno de los componentes da la fuente que esten en buen estado y
trabajen bien como es el transformador, rectificador, filtro y regulador”)
Exit Function
End If
' --------------------- Bocina

If Bocina = True And SBocina = True Then


SBocina = False
VoltajeAm = Asignar(“Si la bocina esta en buen estado y el sonido es nulo o
defectuoso verifique el amplificador de sonido empezando por que su alimentacion
de voltaje sea correcta, así que responda ¿es correcto el voltaje de alimentación al
amplificador?“)
SVoltajeAm = True
Call reglass
Exit Function
End If

If Bocina = False And SBocina = True Then


SBocina = False
MsgBoxx (“Si la bocina esta en mal estado sustituyala para corregir el
problema”)
Exit Function
End If

'
- - - - - - - - - - - - - - - - - - - - voltaje amp

If VoltajeAm = True And SVoltajeAm = True Then


84

SVoltajeAm = False
MsgBoxx (“Si el voltaje al amplificador es correcto y el sonido es anormal
esto indica que es el amplificador el que provoca la falla así que verifique todos y
cada uno de los componentes del amplificador y de estar bien todos sus
componentes sustituya el amplificador”)
Exit Function
End If

If VoltajeAm = False And SVoItajeAm = True Then


SVoItajeAm = False
MsgBoxx (“Si el voltaje de alimentación al amplificador no es el correcto haga lo
siguiente, desconecte su alimentación y si se restavlece el voltaje a su valor
correcto, sustituya el amplificador, si nó verifique el enlace entra la fuente y el
amplificador”)
Exit Function
End If

' -------------------- FlOk

If FlOk = True And SFIOk = True Then


SFIOk = False
Sintonizador = Asignar(“Si el amplificador de FI responde correctamente pero
aun no logra sintonizar ninguna señal, pruebe ahora con el circuito sintonizador as
que responda, ¿Puede sintonizar alguna señal?“)
SSintonizador = True
Call reglass
Exit Function
End If

If FlOk = False And SFIOk = True Then


SFIOI< = False ' _________________ FlOk
If FlOk = True And SFIOk = True Then
SFIOk = False
Sintonizador = Asignar(“Si el amplificador de FI responde correctamente y no
logra sintonizar ninguna señal, pruebe ahora con el circuito sintonizador así que
responda, ¿Puede sintonizar alguna señal?“)
SSintonizador = True
Call reglass
Exit Function
End If

If FlOk = False And SFIOk = True Then


SFlOk = False
85

MsgBoxx (“Si al inyectar señal de FI este amplificador no reesponde, haga


los ajustes adecuados para que opere correctamente, y si sgue sin operar
sustituyalo, para esto compruebe bien que los voltjes de polarización sean los
correctos”)
Exit Function
End If
MsgBoxx (“Si al inyectar señal de FI este amplificador no reesponde, haga los
ajustes adecuados para que opere correctamente, y si sgue sin operar sustituyalo,
para esto compruebe bien que los voltjes de polarización sean los correctos”)
Exit Function
End If

' ---------------------- Sintonizador

If Sintonizador = True And SSintonizador = True Then


SSintonizador = False
MsgBoxx (“Si logra sintonizar una señal mas no obstante esta no se escucha
correctamente verifique el ajuste de este circuito ya que una mala polarización o u
desajuste son sintomas de señales debiles”)
Exit Function
End If

If Sintonizador = False And SSintonizador = True Then


SSintonizador = False
MsgBoxx (“Si definitivamente no sintoniza nada asjuste correctamente este
circuito sintonizador, y si no responde pues trate de sustituirlo por otro en buen
estado.“)
Exit Function
End If

End Function
86

OTROS FORMULARIOS
Forml y Form2 y formtips

Estos objetos son los formularios que sirven como interfaz entre el motor
de inferencia para el módulo de consulta, y el usuario. Es a través de
estos que se puede aislar el circuito defectuoso del televisor.

CODIGO DE FORMULAR0 DE RESPUESTAS TIP'S

‘formtips
Private Sub Command1_Click()
Unload Me
End Sub

CODIGO DEL FORMULARIO DE MENSAJE


‘del sistema de consultas en tv como ‘advertencia

‘Form2
Private Sub Command 1_Click()
Unload Me
End Sub

Private Sub Check1_Click()


vist = Checkl .Value
End Sub

Private Sub Form_Load()


Dim aviso As String
aviso = “Este es un modulo de inferencia que sirve ” _
& “como orientación, para aislar y determinar ” _
& “la sección del televisor que pudiera fallar ” _
& “notará que simplemente debe responder” _
& ” las preguntas que se le muestren con un sí o”_
& ” un nó”
Label1 .Caption = aviso
End Sub
87

CODIGO DEL FORMULARIO DE INTERFAZ EN LOS MODULO5 DE


CONSULTA

‘form 1

Private Sub Command1_Click()


Unload Me
End Sub

Private Sub Command2_Click()


SaleAsignar = False
salida = False
Call Reglas
Unload Me
END SUB

Private Sub Form_Loado

Optionl .Value = True


Option2.Value = False
TempBool = Optionl .Value
SaleAsignar = True
salida = True
End Sub

Private Sub Option1_Click()


TempBool = True
End Sub

Private Sub Option2_Click()


TempBool = False
End Sub
88

El control activex

Para que nuestro programa pudiera tener control de un entrenador, es


preciso que podamos tener un mecanismo mediante el cual accionemos los
relevadores que producen cada una de las fallas, aunque el sistema en su
totalidad fue programado en visual Basic, por medio de este lenguaje no se
puede tener acceso a lo5 recursos del hardware de la máquina, por lo que se
tuvo que implementar un control activex por medio de lenguaje visual C++ , en
este caso ya de escribimos en que consiste un control de este tipo, y éste
con el lenguaje visual C++, si podemos tener acceso a los recursos del
hardware, e incluso podemos incluir lenguaje ensamblador en nuestro código, a
fin de cuentas este control contiene dos propiedades principales que son:

Valor de salida: Por medio de esta propiedad especificó un valor numérico sin
signo entre 0 y 255.

Puerto de salida: por medio de esta propiedad especificó el número de puerto


al cual me va servir para sacar el valor contenido en la propiedad valor de
salida, el puerto que se maneja de manera natural es el puerto de la
impresora cuyo valor es 378 en hexadecimal y 888 en decimal.

El control es muy sencillo de utilizar, y éste sólo es visible durante la fase de


diseño de un formulario, durante la fase de proceso no es visible el control,
pero se puede modificar estas propiedades.

CODIGO DEL ARCHIVO DE RECURSOS DEL CONTROL SALIDAPORPUERTO

//Resource. h

#define IDS_SALIDAPORPUERTO 1
#define IDB_SALIDAPORPUERTO 1
#define IDS_SALIDAPORPUERTO_PPG 2
#define IDS_SALIDAPORPUERTO_PPG_CAPTION 200
#define IDD_PROPPAGE_SALIDAPORPUERTO 2 0 0
#define IDC_STATIC_2 201
#define IDC_STATIC_1 202
#define IDC_EDIT_PtoSalida 2 0 3
#define IDC_EDIT_ValorSalida 2 0 4
89

// Next default values for new objects


//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 201
#define _APS_NEXT_COMMAND_VALUE 32768
#define _APS_NEXT_CONTROL_VALUE 205
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
90

// archivo de cabecera del control derivacion de la clase para controles Ole


SALIDAPORPUERTO.H
#if
!defined(AFX SALIDAPORPUERTO-H - E95A078C_CFFE_11 D2_90B4_A532E4
EAF234_lNCLUDED_)
#define
AFX_SALIDAPORPUERTO_H - E95A078C_CFFE_1 1D2_90B4_A532E4EAF234
- INCLUDED_

#if _MSC_VER >= 1000


#pragma once
#endif // _MSC_VER >= 1000

// SalidaPorPuerto. h : main header file for SALIDAPORPUERTO.DLL

#if !defined( _AFXCTL_H_ )


#error include ‘afxctl. h’ before including this file
#endif

#include “resource. h” // main symbols

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
SALIDAPORPUERTO.CPP
implementation.

class CSalidaPorPuertoApp : public COleControlModule


{
public:
BOOL Initlnstance();
int Exitlnstance();
};

extern const GUID CDECL _tlid;


extern const WORD _wVerMajor;
extern const WORD _wVerMinor;

//{{AFX_INSERT_LOCATION}}
ll Microsoft Developer Studio will insert additional declarations immediately before
the previous line.

#endifll
defined(AFX_SALIDAPORPUERTO_H_E95A078C_CFFE_11 D2_90B4_A532E4
EAF234-INCLUDED)
91

// SalidaPorPuerto.cpp :
//lmplementación de la clase del control y registro del control en el sistema
#include “stdafx. h”
#include "SalidaPorPuerto.h"

#ifdef -DEBUG
#define new DEBUG-NEW
#undef THIS_FILE
static char THIS_FILE[] = _FILE_;
#endif

CSalidaPorPuertoApp NEAR theApp;

const GUID CDECL BASED_CODE _tlid =


{ Oxe95a0783, Oxcffe, 0x1 ld2, { 0x90, Oxb4, Oxa5, 0x32, Oxe4, Oxea,
Oxf2, 0x34 } };
const WORD _wVerMajor = 1;
const WORD _wVerMinor = 0;

llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ll CSalidaPorPuertoApp::Initlnstance - DLL initialization

BOOL CSalidaPorPuertoApp::Initlnstance()
{
BOOL blnit = COleControlModule::lnitlnstance();

if (blnit)
{
ll TODO: Add your own module initialization code here.
1

return blnit;

llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ll CSalidaPorPuertoApp::Exitlnstance - DLL termination

int CSalidaPorPuertoApp::Exitlnstance()
{
ll TODO: Add your own module termination code here.

return COleControlModule::Exitlnstance();
92

/////////////////////////////////////////////////////////////////////////////
// DIIRegisterServer - Adds entries to the system registry

STDAPI DIIRegisterServer(void)
{
AFX_MANAGE_STATE(_afxModuleAddrThis);

if (!AfxOleRegisterTypeLib(AfxGetlnstanceHandle(), tlid))
return ResultFromScode(SELFREG_E_TYPELIB);

if (!COleObjectFactoryEx::UpdateRegistryAll(TRUE))
return ResultFromScode(SELFREG- E - CLASS);

return NOERROR;
}

lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ll DIIUnregisterServer - Removes entries from the system registry

STDAPI DIIUnregisterServer(void)
{
AFX_MANAGE_STATE(_afxModuleAddrThis);

if (!AfxOleUnregisterTypeLib(_tlid, _wVerMajor, _wVerMinor))


return ResultFromScode(SELFREG- E -TYPELIB);

if (!COleObjectFactoryEx::UpdateRegistryAll(FALSE))
return ResultFromScode(SELFREG- E - CLASS);

return NOERROR;
}
93

ll codigo de cabecera de la declaración de la clase del


// control SalidaPorPuerto
//SalidaPorPuerto. h

#if
!defined(AFX_SALIDAPORPUERTOCTL_H - E95A0793_CFFE_11 D2_90B4_A53
2E4EAF234 _INCLUDED_)
#define
AFX_SALIDAPORPUERTOCTL_H _E95A0793_CFFE_1 1 D2_90B4_A532E4EAF
2 3 4 _INCLUDED_

#if _MSC_VER >= 1000


#pragma once
#endif // _MSC_VER >= 1000

// SalidaPorPuertoCtl.h : Declaration of the CSalidaPorPuertoCtrl ActiveX Control


class.

lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ll CSalidaPorPuertoCtrl : See SalidaPorPuertoCtl.cpp for implementation.

class CSalidaPorPuertoCtrl : public COleControl


{
DECLARE-DYNCREATE(CSalidaPorPuertoCtrl)

ll Constructor
public:
CSalidaPorPuertoCtrl();

ll Overrides
ll ClassWìzard generated virtual function overrides
//{{AFX_VIRTUAL(CSalidaPorPuertoCtrl)
public:
virtual void OnDraw(CDC* pdc, const CRect& rcBounds, const CRect&
rclnvalid);
virtual void DoPropExchange(CPropExchange* pPX);
virtual void OnResetState();
//}}AFX_VIRTUAL

ll Implementation
protected:
~CSalidaPorPuertoCtrI();

DECLARE-OLECREATE-EX(CSalidaPorPuertoCtrl) ll Class factory and


guid
DECLARE-OLETYPELIB(CSalidaPorPuertoCtrl) ll GetTypelnfo
DECLARE-PROPPAGEIDS(CSalidaPorPuertoCtrl) ll Property page IDs
94

DECLARE_OLECTLTYPE(CSalidaPorPuertoCtr1) // Type
name and misc status

// Message maps
//{{AFX_MSG(CSalidaPorPuertoCtrl)
// NOTE - ClassWizard will add and remove member functions here.
// DO NOT EDIT what you see in these blocks of generated code !
//}}AFX-MSG
DECLARE_MESSAGE_MAP()

// Dispatch maps
//{{AFX_DISPATCH(CSalidaPorPuertoCtrl)
short m_puertoDeSalida;
afx-msg void OnPuertoDeSalidaChanged();
short m_valorDeSalida;
afx-msg void OnValorDeSalidaChanged();
afx-msg short SacarValor();
//}}AFX_DISPATCH
DECLARE_DISPATCH_MAP()

// Event maps
//}}AFX_EVENT(CSalidaPorPuertoCtrl)
//}}AFX_EVENT
DECLARE_EVENT_MAP()

// Dispatch and event IDs


public:
enum {
//{{AFX_DISP_ID(CSalidaPorPuertoCtrl)
dispidPuertoDeSalida = 1 L,
dispidValorDeSalida = 2L,
dispidSacarValor = 3L,
//)}AFX_DISP_ID
};
};

//{{AFX-INSERT_LOCATION}}
// Microsoft Developer Studio will insert additional declarations immediately before
the previous line.

#endif //
!defined(AFX_SALIDAPORPUERTOCTL_H -E95A0793_CFFE_11 D2_9064_A53
2E4EAF234_NCLUDED)
95

// SalidaPorPuertoCtl.cpp :
//implementacion de la clase del control
#include “stdafx. h”
#include “SalidaPorPuerto. h”
#include “SalidaPorPuertoCtl. h”
#include “SalidaPorPuertoPpg. h”

#ifdef -DEBUG
#define new DEBUG-NEW
#undef THIS_FILE
static char THIS_FILE[] = - FILE_;
#endif

IMPLEMENT_DYNCREATE(CSalidaPorPuertoCtrl, COleControl)

lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ll Message map

BEGIN-MESSAGE-MAP(CSalidaPorPuertoCtrl, COleControl)
//{{AFX_MSG_MAP(CSalidaPorPuertoCtrl)
ll NOTE - ClassWizard will add and remove message map entries
ll DO NOT EDIT what you see in these blocks of generated code !
l/)}AFX_MSG_MAP
ON-OLEVERB(AFX_IDS_VERB_PROPERTIES, OnProperties)
END_MESSAGE_MAP()

lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ll Dispatch map

BEGIN_DISPATCH_MAP(CSalidaPorPuertoCtrl, COleControl)
ll{{AFX_DISPATCH_MAP(CSalidaPorPuertoCtrl)
DISP_PROPERTY_NOTIFY(CSalidaPorPuertoCtrl, “PuertoDeSalida”,
m_puertoDeSalida, OnPuertoDeSalidaChanged, VT_12)
DISP_PROPERTY_NOTIFY(CSalidaPorPuertoCtrl, “ValorDeSalida”,
m_valorDeSalida, OnValorDeSalidaChanged, VT_12)
DISP-FUNCTION(CSalidaPorPuertoCtrl, “SacarValor”, SacarValor, VT_ 12,
VTS_NONE)
DISP_DEFVALUE(CSalidaPorPuertoCtrl, “ForeColor”)
DlSP_STOCKPROP~BACKCOLOR()
DlSP_STOCKPROP~FORECOLOR()
DISP_STOCKPROP-BORDERSTYLEO
//}}AFX_DISPATCH_MAP
END_DISPATCH_MAP()
96

ll/l/l/llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ll Event map

BEGIN_EVENT_MAP(CSalidaPorPuertoCtrl, COleControl)
//{{AFX_EVENT_MAP(CSalidaPorPuertoCtrl)
ll NOTE - ClassWizard will add and remove event map entries
ll DO NOT EDIT what you see in these blocks of generated code !
//}}AFX_EVENT_MAP
END_EVENT_MAP()

lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ll Property pages

ll TODO: Add more property pages as needed. Remember to increase the count!
BEGIN_PROPPAGEIDS(CSalidaPorPuertoCtrl, 1)
PROPPAGEID(CSalidaPorPuertoPropPage::guid)
END_PROPPAGEIDS(CSalidaPorPuertoCtrl)

lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ll Initialize class factory and guid

IMPLEMENT_OLECREATE_EX(CSalidaPorPuertoCtrl,
“SALIDAPORPUERTO.SalidaPorPuertoCtrl.1”,
Oxe95a0786, Oxcffe, Ox11d2,Ox9O,Oxb4, Oxa5, 0x32, Oxe4, Oxea, Oxf2,
0x34)

lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ll Type library ID and version

IMPLEMENT_OLETYPELIB(CSalidaPorPuertoCtr1, tlid, _wVerMajor,


_wVerMinor)

llllllllllllllllIllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ll Interface IDs

const IID BASED_CODE IID_DSalidaPorPuerto =


{ Oxe95a0784, Oxcffe, 0x1 ld2, { 0x90, Oxb4, Oxa5, 0x32, Oxe4, Oxea,
Oxf2, 0x34 } };
const IID BASED_CODE IID_DSaIidaPorPuertoEvents =
{ Oxe95a0785, Oxcffe, 0x1 ld2, { 0x90, Oxb4, Oxa5, 0x32, Oxe4, Oxea,
Oxf2, 0x34 } };
97

/////////////////////////////////////////////////////////////////////////
// Control type information

st atic const DWORD BASED_CODE _dwSalidaPorPuertoOleMisc =


OLEMISC_INVISIBLEATRUNTIME |
OLEMISC_ACTIVATEWHENVISIBLE |
OLEMISCSETCLIENTSITEFIRST |
OLEMISC_INSIDEOUT |
OLEMISC_CANTLINKINSIDE |
OLEMISC_RECOMPOSEONRESIZE;

IMPLEMENT_OLECTLTYPE(CSalidaPorPuertoCtrl, IDS_SALIDAPORPUERTO,
_dwSalidaPorPuertoOleMisc)

lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ll CSalidaPorPuertoCtrl::CSalidaPorPuertoCtrlFactory::UpdateRegistry -
ll Adds or removes system registry entries for CSalidaPorPuertoCtrl

BOOL CSalidaPorPuertoCtrl::CSalidaPorPuertoCtrlFactory::UpdateRegisty(BOOL
bRegister)
{
ll TODO: Verify that your control follows apartment-model threading rules.
ll Refer to MFC TechNote 64 for more information.
ll If your control does not conform to the apartment-model rules, then
ll you must modify the code below, changing the 6th parameter from
ll afxRegApartmentThreading to 0.

if (bRegister)
return AfxOleRegisterControIClass(
AfxGetlnstanceHandle(),
m_clsid,
m_lpszProglD,
IDS_SALIDAPORPUERTO,
IDB_SALIDAPORPUERTO,
afxRegApartmentThreading,
_dwSalidaPorPuertoOleMisc,
_tlid,
_wVerMajor,
_wVerMinor);
else
return AfxOleUnregisterClass(m_clsid, m_lpszProglD);
98

lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ll CSalidaPorPuertoCtrl::CSalidaPorPuertoCtrl - Constructor

CSalidaPorPuertoCtrl::CSalidaPorPuertoCtrl()
{
InitializellDs(&IlD_DSalidaPorPuerto, &IID_DSalidaPorPuertoEvents);

l/ TODO: Initialize your control’s instance data here.


//Mi Codigo Empieza Aqui
m_puertoDeSalida=Ox378;
m_valorDeSalida= 0x00;
SetlnitialSize(380,70);

lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ll CSalidaPorPuertoCtrl::-CSalidaPorPuertoCtrl - Destructor

CSalidaPorPuertoCtrl::-CSalidaPorPuertoCtrl()
{
ll TODO: Cleanup your control’s instance data here.

lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ll CSalidaPorPuertoCtrl::OnDraw - Drawing function

void CSalidaPorPuertoCtrl::OnDraw(
CDC* pdc, const CRect& rcBounds, const CRect& rclnvalid)
1
ll TODO: Replace the following code with your own drawing code.

//Mi Codigo Empieza Aqui itoa


CString Mensajes=” Control de valores de salida por puerto “;

char VlrSalida[80];
char PtoSalida[80];
char Tempstr[30];

strcpy(PtoSalida,” Direccion del puerto de salida “);


itoa(m_puertoDeSalida,Tempstr, 16);
strcat(PtoSalida,Tempstr);
99

strcpy(VlrSalida,” Valor del dato de salida “);


itoa(m_valorDeSalida,Tempstr, 10);
strcat(VlrSalida,Tempstr);

pdc->SetBkMode(TRANSPARENT);

CBrush bkBrush(TranslateColor(GetBackColor()));

pdc->FillRect(rcBounds,&bkBrush);

pdc->SetTextColor(TranslateColor(GetForeColor()));

/* virtual BOOL ExtTextOut( int x, int y, rcBounds.Left,rcBounds.Top


UINT nOptions,
ETO-CLIPPED
LPCRECT IpRect, rcBounds
LPCTSTR IpszString,
UINT nCount,
LPINT IpDxWidths ); */

pdc->ExtTextOut( rcBounds.left,rcBounds.top,
ETO-CLIPPED,
rcBounds,
Mensajes,
strlen(Mensajes),
NULL );
pdc->ExtTextOut( rcBounds.left,25,
ETO-CLIPPED,
rcBounds,
PtoSalida,
strlen(PtoSalida),
NULL );
pdc->ExtTextOut( rcBounds.lefi,50,
ETO-CLIPPED,
rcBounds,
VlrSalida,
100

strlen(VlrSalida),
NULL );

//Mi Codigo Termina Aqui

lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ll CSalidaPorPuertoCtrl::DoPropExchange - Persistence support

void CSalidaPorPuertoCtrl::DoPropExchange(CPropExchange* pPX)


{
ExchangeVersion(pPX, MAKELONG(-wVerMinor, -wVerMajor));
COleControl::DoPropExchange(pPX);

ll TODO: Call PX- functions for each persistent custom property.


IIBOOL PX-Short( CPropExchange* pPX,
ll LPCTSTR pszPropName, short& sValue,
ll short sDefault);
llPX~Long(pPX,~T(“Updatelnterval”),m~updatelnterval, 1000);
//Mi Codigo Empieza Aqui

PX~Short(pPX,~T(“Pue~oDeSalida”),m~puertoDeSalida,Ox378);
PX~Short(pPX,~T(“ValorDeSalida”),m~valorDeSalida,0x000);
//Mi Codigo Termina Aqui
1

lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ll CSalidaPorPuertoCtrl::OnResetState - Reset control to default state

void CSalidaPorPuertoCtrl::OnResetState()
{
COleControl::OnResetState(); ll Resets defaults found in DoPropExchange

ll TODO: Reset any other control state here.


1

lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ll CSalidaPorPuertoCtrl message handlers

void CSalidaPorPuertoCtrl::OnPuertoDeSalidaChanged()
{
ll TODO: Add notification handler code
////Mi Codigo Empieza Aqui
101

if (m_puertoDeSalida != 0x378)

MessageBox(” el valor del puerto ha cambiado y esto puede ocacionar mal


funcionalimento”);

1
//Mi Codigo Termina Aqui

SetModifiedFlag();
1

void CSalidaPorPuertoCtrl::OnValorDeSalidaChanged()
{
//TODO: Add notification handler code
//Mi Codigo Empieza Aqui
if ( 0 > m-valorDeSalida 1 m-valorDeSalida > 255)
1

MessageBox(” este es un valor fuera del rango 0 a 255 “);


m-valorDeSalida = 0;

//Mi Codigo Termina Aqui

SetModifiedFlag();
1

short CSalidaPorPuertoCtrl::SacarValor()
1
// TODO: Add your dispatch handler code here

//Mi Codigo Empieza Aqui


short Puerto,Valor;

Puerto =m-puertoDeSalida;
Valor =m-valorDeSalida;
102

-asmi
mov dx,Puerto;
m o v ax,Valor;
out dx,al
1

return 0;
//Mi Codigo Termina Aqui
103

// codigo de la declaración de la clase de pagina de propiefdades


// de el control SalidaPorPuerto
l/SalidaPorPuertoPpg. h

#if
!defined(AFX-SALIDAPORPUERTOPPG-H -E95A0795-CFFE-11 D2-9064-A53
2E4EAF234 INCLUDED-)
#define -
AFX-SALIDAPORPUERTOPPG-H - E95A0795-CFFE-11 D2-90B4-A532E4EAF
23- 4 INCLUDED-

#if -MSC-VER ‘= 1000


#pragma once
#endif // -MSC-VER >= 1000

// SalidaPorPuertoPpg. h : Declaration of the CSalidaPorPuertoPropPage property


page class.

llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ll CSalidaPorPuertoPropPage : See SalidaPorPuertoPpg.cpp.cpp for
implementation.

class CSalidaPorPuertoPropPage : public COlePropertyPage


{
DECLARE-DYNCREATE(CSalidaPorPuertoPropPage)
DECLARE-OLECREATE-EX(CSalidaPorPuertoPropPage)

ll Constructor
public:
CSalidaPorPuertoPropPage();

ll Dialog Data
ll{{AFX~DATA(CSalidaPorPuertoPropPage)
enum { IDD = IDD-PROPPAGE-SALIDAPORPUERTO };
short m_puertoDeSalida;
short m-valorDeSalida;
l/)}AFX-DATA

ll Implementation
protected:
virtual void DoDataExchange(CDataExchange* pDX); ll DDXIDDV support

ll Message maps
protected:
ll{{AFX~MSG(CSalidaPorPuertoPropPage)
104

// NOTE - ClassWizard will add and remove member functions


here.
// DO NOT EDIT what you see in these blocks of generated code !
//)}AFX-MSG
DECLARE-MESSAGE-MAP()

//{{AFX-INSERT-LOCATION}}
// Microsoft Developer Studio will insert additional declarations immediately before
the previous line.

#endif ll
!defined(AFX SALIDAPORPUERTOPPG-HVE95A0795-CFFE-1 1 D2-90B4-A53
2E4EAF234 --INCLUDED)
105

// SalidaPorPuertoPpg.cpp :
// implementacion de la clase de la pagina de proìedades del control
#include “stdafx. h”
#include “SalidaPorPuerto. h”
#include “SalidaPorPuertoPpg. h”

#ifdef -DEBUG
#define new DEBUG-NEW
#undef THIS-FILE
static char THIS-FILE[] = -FILE-;
#endif

IMPLEMENT-DYNCREATE(CSalidaPorPuertoPropPage, COlePropertyPage)

lllllIllllllllllllllllllll~llllll~lllllllllllllllllllllllllllllllllllllllllll
ll Message map

BEGIN-MESSAGE-MAP(CSalidaPorPuertoPropPage, COlePropertyPage)
//{{AFX-MSG-MAP(CSalidaPorPuertoPropPage)
// NOTE - ClassWizard will add and remove message map entries
// DO NOT EDIT what you see in these blocks of generated code !
//)}AFX-MSG-MAP
END-MESSAGE-MAP()

lllll~l~llllll~llllll~lllll~lllllllllllllllllllllllllllll~l~lll~ll~lll~llllll
ll Initialize class factory and guid

IMPLEMENT~OLECREATE~EX(CSalidaPorPuertoPropPage,
“SALIDAPORPUERTO.SalidaPorPuertoPropPage.1”,
Oxe95a0787, Oxcffe, Oxl ld2, Ox9O,Oxb4, Oxa5,Ox32, Oxe4, Oxea, Oxf2,
0x34)

lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ll
CSalidaPorPuertoPropPage::CSalidaPorPuer

II Adds or removes system registry entries for CSalidaPorPuertoPropPage

BOOL
CSalidaPorPuertoPropPage::CSalidaPorPuer(
BOOL bRegister)
{
if (bRegister)
106

return
AfxOleRegisterProperyPageClass(AfxGetlnstanceHandle(),
m-clsid, IDS-SALIDAPORPUERTO-PPG);
else
return AfxOleUnregisterClass(m~clsid, NULL);
1

////////////////////////////////////l///////////l///////////l//////l/l//l
// CSalidaPorPuertoPropPage::CSalidaPorPuertoPropPage - Constructor

CSalidaPorPuertoPropPage::CSalidaPorPueroPropPage() :
COlePropertyPage(lDD, IDS~SALIDAPORPUERTO~PPG~CAPTION)
{
//{{AFX-DATA-INIT(CSalidaPorPuertoPropPage)
m_puertoDeSalida = 0;
m-valorDeSalida = 0;
//)}AFX-DATA-INIT
1

lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ll CSalidaPorPuertoPropPage::DoDataExchange - Moves data between page and
properties

void CSalidaPorPuertoPropPage::DoDataExchange(CDataExchange* pDX)


1
ll({AFX-DATA-MAP(CSalidaPorPuertoPropPage)
DDP-Text(pDX, IDC-EDIT-PtoSalida, m_puertoDeSalida,
-T(“PuertoDeSalida”) );
DDX-Text(pDX, IDC-EDIT-PtoSalida, m_puertoDeSalida);
DDP-Text(pDX, IDC-EDIT-ValorSalida, m_valorDeSalida,
-T(“ValorDeSalida”) );
DDX-Text(pDX, IDC-EDITValorSalida, m-valorDeSalida);
l/)}AFX-DATA-MAP
DDP-PostProcessing(pDX);
1

lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ll CSalidaPorPuertoPropPage message handlers
107

; SalidaPorPuerto.def : declaracion del modulo de parametros.


;SalidaPorPuerto.def
LIBRARY “SALIDAPORPUERTO.OCX”

EXPORTS
DIICanUnloadNow @l PRIVATE
DIIGetClassObject @2 PRIVATE
DIIRegisterServer @3 PRIVATE
DIIUnregisterServer @4 PRIVATE

// SalidaPorPuerto.odl :
// libreria de fuente de tipos
// SalidaPorPuerto.ocx.

#include colectl. h>


#include <idispids. h>

[ uuid(E95A0783-CFFE-I I D2-90B4-A532E4EAF234), version(1 .O),


helpfile(“SalidaPorPuerto. hlp”),
helpstring(“SalidaPorPuerto ActiveX Control module”),
control ]
library SALIDAPORPUERTOLib
1
importlib(STDOLE-TLB);
importlib(STDTYPE-TLB);

// Primary dispatch interface for CSalidaPorPuertoCtrl

[ uuid(E95A0784-CFFE-I I D2-90B4-A532E4EAF234),
helpstring(“Dispatch interface for SalidaPorPuerto Control”), hidden ]
dispinterface -DSalidaPorPuerto
{
properties:
// NOTE - ClassWizard will maintain property information here.
Il Use extreme caution when editing this section.
//{{AFX~ODL~PROP(CSalidaPorPuertoCtrl)
[id(l)] short PuertoDeSalida;
[id(2)] short ValorDeSalida;
[id(DISPID-BACKCOLOR), bindable, requestedit]
OLE-COLOR BackColor;
[id(DISPID-FORECOLOR), bindable, requestedit]
OLE-COLOR ForeColor;
[id(O)] OLE-COLOR -ForeColor;
[id(DISPID-BORDERSTYLE), bindable, requestedit] short
BorderStyle;
//)}AFX-ODL-PROP
108

methods:
// NOTE - ClassWizard will maintain method information here.
// Use extreme caution when editing this section.
//{{AFX~ODL~METHOD(CSalidaPorPuertoCtrl)
[id(3)] short SacarValor();
//)}AFX-ODL-METHOD

// Event dispatch interface for CSalidaPorPuertoCtrl

[ uuid(E95A0785CFFE-11 D2-90B4-A532E4EAF234),
helpstring(“Event interface for SalidaPorPuerto Control”) ]
dispinterface -DSalidaPorPuetioEvents
L {
properties:
// Event interface has no properties

methods:
// NOTE - ClassWizard will maintain event information here.
// Use extreme caution when editing this section.
//{{AFX-ODL-EVENT(CSalidaPorPuertoCtrl)
//)}AFX-ODL-EVENT

// Class information for CSalidaPorPuertoCtrl

[ uuid(E95A0786-CFFE-I I D2-90B4-A532E4EAF234),
helpstring(“SalidaPorPuerto Control”), control ]
coclass SalidaPorPuerto
{
[default] dispinterface -DSalidaPorPuerto;
[default, source] dispinterface -DSalidaPorPuertoEvents;
1;

//{{AFX-APPEND-ODL)}
II)}AFX-APPEND-ODL}}
1;
109

Form5muAudio y Form%nuTV.

Estos formularios contienen el control 5alidaPorPUerto, el cual es el


control activex, que permite sacar los valores que se indican en su
propiedad Valor de Salida Hacia el puerto indicado en su propiedad Puerto
de Salida, esto se logra por medio de lo5 botones de comando, lo5 cuales
contienen la falla provocada, la cual se indica con un número
correspondiente a la falla que es al valor que se manda al puerto de salida.
Una vez que se acciona una falla, y para protección del sistema se
deshabilitan lo5 otros botones los cuales pueden volver a habilitarse por
medio del botón restablecer.

CQDIGO DEL ~IMULADCK DE IV

Private Sub Commandl~Click(lndex As Integer)

Select Case Index

Case 0
SalidaPorPuertol .ValorDeSalida = Index
SalidaPorPuertol .SacarValor
MsgBox (“FUNCION 1”)
Case 1
SalidaPorPuertol .ValorDeSalida = Index
SalidaPorPuertol .SacarValor
MsgBox (“FUNCION2” & Idex)
Case 2
SalidaPorPuertol .ValorDeSalida = Index
SalidaPorPuertol .SacarValor
MsgBox (“FUNCION3” & Idex)
Case 3
SalidaPorPuertol .ValorDeSalida = Index
SalidaPorPuertol .SacarValor
MsgBox (“FUNCION4” & Idex)
Case 4
SalidaPorPuertol .ValorDeSalida = Index
SalidaPorPuertol .SacarValor
MsgBox (“FUNCIONS” & Idex)
Case 5
110

SalidaPorPuertol .ValorDeSalida = Index


SalidaPorPuertol .SacarValor
MsgBox (“FUNCIONG” & Idex)
Case 6
SalidaPorPuertol .ValorDeSalida = Index
SalidaPorPuertol .SacarValor
MsgBox (“FUNClON7” & Idex)
Case 7
SalidaPorPuertol .ValorDeSalida = Index
SalidaPorPuertol .SacarValor
MsgBox (“FUNCION8” & Idex)
Case 8
SalidaPorPuertol .ValorDeSalida = Index
SalidaPorPuertol .SacarValor
MsgBox (“FUNCIONS” & Idex)
Case 9
SalidaPorPuertol .ValorDeSalida = Index
SalidaPorPuertol .SacarValor
MsgBox (“FUNCIONI 0” & Idex)
Case 10
SalidaPorPuertol .ValorDeSalida = Index
SalidaPorPuertol .SacarValor
MsgBox (“FUNCIONI 1” & Idex)
Case Il
SalidaPorPuertol .ValorDeSalida = Index
SalidaPorPuertol .SacarValor
MsgBox (“FUNCION12” & Idex)
Case 12
SalidaPorPuertol .ValorDeSalida = Index
SalidaPorPuertol .SacarValor
MsgBox (“FUNCIONl3” & Idex)
Case 13
SalidaPorPuertol .ValorDeSalida = Index
SalidaPorPuertol .SacarValor
MsgBox (“FUNCION14” & Idex)
Case 14
SalidaPorPuertol .ValorDeSalida = Index
SalidaPorPuertol .SacarValor
MsgBox (“FUNCIONI 5” & Idex)
Case 15
SalidaPorPuertol .ValorDeSalida = Index
SalidaPorPuertol .SacarValor
MsgBox (“FUNCIONIG” & Idex)
Case 16
SalidaPorPuertol .ValorDeSalida = Index
SalidaPorPuertol .SacarValor
MsgBox (“FUNCIONI 7” & Idex)
111

Case 17
SalidaPorPuertol .ValorDeSalida = Index
SalidaPorPuertol .SacarValor
MsgBox (“FUNCIONI 8” & Idex)
Case 18
SalidaPorPuertol .ValorDeSalida = Index
SalidaPorPuertol .SacarValor
MsgBox (“FUNCIONI 9” & Idex)

Case 19
SalidaPorPuertol .ValorDeSalida = Index
SalidaPorPuertol .SacarValor
MsgBox (“FUNCION20” & Idex)

End Select

For i = 0 To (Command1 .Count - 1)


Command1 (ì).Enabled = False
Next i
End Sub

Private Sub Command2_Click()


For i = 0 To (Command1 .Count - 1)
Command1 (i).Enabled = True
Next i
End Sub

CQDIGQ DEL CjlMUtADQR DE AUDI0

Private Sub Commandl~Click(lndex As Integer)

Select Case Index


Case 0
MsgBox (“Activar funcion para falla 0”)
SalidaPorPuertol .ValorDeSalida =0
SalidaPorPuertol .SacarValor
Case 1
MsgBox (“Activar funcion para falla 1”)

Case 2
MsgBox (“Activar funcion para falla 2”)

Case 3
MsgBox (“Activar funcion para falla 3”)
112

Case 4
MsgBox (“Activar funcion para falla 4”)

Case 5
MsgBox (“Activar funcion para falla 5”)

Case Else
MsgBox “NADA”
End Select

For i = 0 To (Commandl.Count - 1)
Command1 (i).Enabled = False
Next i

End Sub

Private Sub Command2_Click()


For i = 0 To (Command1 .Count - 1)
Commandl(i).Enabled = True
Next i
End Sub
113

Descripción del entorno de trabaja

El formulario principal del sistema contiene las siguientes opciones en su


menú:

Archivo
esta opción de menú únicamente le permite salir de la aplicación

Principios de...

En Televisión
En esta opción dispone de un documento H. T. M. L. el cual le permite conocer
lo5 principios de funcionamiento del televisor a través de hiper texto. 5i desea
conocer información de un tema en particular haga CI¡G en el híper texto
correspondiente e inmediatamente se le mostrará el tema en cuestión

Audio
En esta opción dispone de un documento H. T. M. L. el cual le permite conocer
lo5 principios de funcionamiento del radio a través de híper texto si desea
conocer información de un tema en particular haga clic en el hiper texto
correspondiente e inmediatamente se demostrará el tema en cuestión

Consulta Acerca de

En Televisión
En esta opción dispone de un sistema experto el cual le sirve de apoyo en la
reparación de un aparato de televisión, el sistema es muy sencillo de utilizar
ya que este es muy intuitivo. 5010 tiene que responder con un sí o un no a las
114

pregunta5 que se le muestran en un cuadro de dialogo, la respuesta la


señala en un par de botones de opción en los cuales se tiene que hacer CIIG
según sea su respuesta sí 0 no, el sistema le mostrará preguntas que
servirán para determinar el cirwito de televisor que pudiera provocar la falla,
n o t a r á q u e l a 5 p r e g u n t a 5 e s t á n planeada5 cuidadosamente hacia
situaciones bastante obvia5 pero que posteriormente no conducirán a
situaciones más complicada5 hasta determinar la causa. Durante el proceso
se le irán dando tips para que vaya determinando por su cuenta la cau5a.

En Radio
En esta opción dispone de un sistema experto el cual le sirve de apoyo en la
reparación de un aparato de radio, el sistema e5,muy sencillo de utilizar ya
que este es muy intuitivo. 5010 tiene que responder con un sí o un no a la5
pregunta5 que se le muestran en un cuadro de dialogo, la respuesta la señala
en un par de botones de opción en lo5 cuales tiene que hacer clic según 5ea
su respuesta sí 0 no, el sistema le mostrará pregunta5 que servirán para
determinar el circuito de el radio que pudiera provocar la falla, notará que la5
pregunta5 están planeada5 cuidadosamente hacia situaciones bastante
obvia5 pero que posteriormente no conducirán a situaciones más complicada5
hasta determinar la CauSa, durante el proceso se le irán dando tips para que
vaya determinando por su cuenta la causa
115

5imulador

Televisión
En esta opción puede provocar fallas en el entrenador de televisión, sólo tiene
que elegir entre el conjunto de fallas que se muestran sobre el formulario,
internamente existe un control el cual manda un número de falla hacia el
puerto de la impresora y es a través de este y por medio de un circuito de
codificado que se acción a un relevador el cual provoca la falla en el circuito
correspondiente, una vez que provoca la falla puede ir a su entrenador en
donde tiene que detectar el circuito que está fallando, notará que sólo puede
provocar una falla a un mismo tiempo, por lo que deberá elegir la opción de
restablecer para que el entrenador vuelva a una condición normal de operación
y pueda elegir otra falla, si así lo desea puede ír al módulo de consulta para
auxiliarse en la detección de la falla.

Radio
En esta opción puede provocar fallas en el entrenador de radio, sólo tiene que
elegir entre el conjunto de fallas que se muestran sobre el formulario,
internamente existe un control el cual manda un número de falla hacia el
puerto de la impresora y es a través de este, que por medio de un circuito de
codificado, que se acción a un relevador el cual provoca la falla en el circuito
correspondiente, una vez que provoca la falla puede ir a su entrenador en el
que tiene que detectar el circuito que está fallando, notará que sólo puede
provocar una falla a un mismo tiempo, por lo que deberá elegir la opción de
restablecer para que el entrenador vuelva a una condición normal de operación
y pueda elegir otra falla, sí así lo desea puede ir al módulo de consulta para
auxiliarse en la detección de la falla.

Ayuda
Este menú sólo contiene un cuadro de diálogo el cual le muestra la
descripción del autor.
116

Interfaz etectrónica para el~~~tr~ldet entrenador


Éste e5 un circuito sencillo, que recibe como entrada un valor binario
proveniente del puerto de la impresora, que puedo oscilar entre 0 y 255, y
corno salida acción una y sólo una de entre 20 terminales, en este caso sólo
estamos utilizando 6 terminales por los costos que implica el manejar las
restantes terminales, esto se logra por medio de un buffer de entrada, capaz
de retener el valor proveniente del puerto de la impresora e incluso
restablecerse 0 si así lo quiere uno, posteriormente esta señal del buffer
alimenta a lo5 cirwitos de 105 circuitos LM 338 lo5 cuales hacen que se
acción en una y sólo una de su5 terminales, las cuales alimentan a unos
t r a n s i s t o r e s e x c i t a d o r e s , lo5 c u a l e s a c c i o n a n u n r e l e v a d o r q u e s e
corresponde con un número de falla del entrenador.

En este caso éste circuitos implementó para el módulo de sonido con el


simulador prototipo de grabadora didáctica, que se encuentra en el CECATI
126.
117

Amplificador/accionador
de relel Falla 1

Diagrama a bloques Interfaz electrónica para el control del entrenador

AMPLIFICADORES DE SALIDA
ANTRADA DE SEÑAL DE SEÑAL DECODIFICADA
DESDE EL PUERTO PARCIALMENTE MOSTRADOS
DE LA JMRESORA

BUFFE ,R

CIRCUITO DECODIFICADOR
118

Este sistema se ha probado con el entrenador de radio grabadora con q*ue se


cuenta en el plantel, para el módulo de audio, ya que es un módulo sencillo,
como lo es el funcionamiento de un radio, esto ha permitido que de manera
r á p i d a , lo5 a l u m n o 5 q u e t i e n e n acce5o a l s i s t e m a , i n m e d i a t a m e n t e
identifiquen la5 fallas de un radio, y a la vez puedan aislar el componente
defectuoso. Como recurSo didáctico, llama mucho la atención por parte de lo5
alumno5 que se sienten motivado5 a operar la computadora y sobre todo a
accionar el entrenador, ya que de manera interactiva están aprendiendo, a
diagnosticar la5 fallas de un equipo, adema5 el alumno dispone de un
documento, en el cual pueden estudiar lo5 principio5 de funcionamiento del
radio.

En lo que se refiere al circuito de control este trabaja sin problemas, lo5


componentes, de dicho5 circuito5 ya han sido probado5 bajo condicione5 más
Severas operación.

Lo5 usuarios del sistema debido a la rapidez con que aprenden, ya que
trabajan de una manera mucho muy intuitiva el sistema, piden más, y es que
está comprobado que la computadora como recur5o didáctico es un
instrumento excelente.

Para el entrenador de televisión no se ha hecho un circuito de control debido a


los costos que implica el manejar un número grande de relevadores así como
de circuito5, costo q,ue de momento el plantel así como un servidor no pueden
asumir, más está bien comprobado que el sistema trabaja correctamente.
119

E l p r o y e c t o se q u i e r e p r o p o n e r c o m o u n recur5o d i d á c t i c o p a r a ser

implementado en más planteles de los Centro5 de Capacitación para el

Trabajo, pues este sistema elaborado por su Servidor, quien es instructor

actualmente en uno de estos planteles, le es de utilidad y de cualquier manera

se va a hacer una propuesta ante la dirección general para qué financie

proyecto5 como este.

El sistema experto de consulta para televisión puede seguir creciendo y

extenderse hacia aparato5 más sofisticados como puede ser una video

grabadora, o una reproductora de discos compactos. La5 bases están dadas,

para proponerse incluso a los fabricante5 de entrenadores ya que este

sistema funciona bajo el sistema operativo de Windows 95 o Windows 98.

Existen programa5 del mercado para la capacitación de personal e incluso lo5

fabricante5 de entrenadores proporcionan programa5 para enriq,uecer su5

producto5 más los programa5 con que se cuentan en los planteles para estos

entrenadores 5on programa5 que funcionan bajo el sistema operativo

M5-DO5 e incluso alguno5 están hechos en visual bá5ico pero para Windows

3.11
120

Cabe mencionar que muchos equipos entrenadores cuando se adaptan

para este propósito contienen en su circuito5 características que deja mucho

que desear en lo que a la calidad del producto se refiere, existe en la dirección

general de CECATI apoyo para mejorar la calidad de estos producto5 y de

ser posible la reproducción de los mismos en serie para abaratar costos e

implementarlos en otro5 planteles.

Por lo pronto, cabe mencionar que en el mercado existen programa5 105 cuales

contienen un sinnúmero de tips para la solución de problema5 en aparato5

electrónico5 más estos programa5 5on simplemente grande5 bases de dato5

la5 cuales no proporcionan ayuda a un técnico que apena5 se empieza a iniciar

en la reparación de equipo, lo que viene a reiterar que con un poco de apoyo

por parte de una institución se puede hacer crecer el sistema experto para

lograr un producto de calidad competitivo que sea rentable y así ayudar a

técnico5 en el área de reparación de equipo electrónico


121

+ Manual Para La Localización De Fallas Y fZeparaciÓn De 5isternas


Electrónicos
Autor: J. D. Lenk
Editorial: Prentice Hall

+ Enciclopedia Visual Basic 4


Autor: Feo. Javier Ceballos
Editorial: Addison-Wesley

+ 5ístemas Expertos
Autor: Dieter Nebend hal
Editorial: Marcombo

+ Inside Visual C++ 5


Autor: David J. Kruglinski
Editorial: MG Graw Hill

También podría gustarte