Manual Tecnico de Programacion Plc PDF

419

Click here to load reader

Transcript of Manual Tecnico de Programacion Plc PDF

Page 1: Manual Tecnico de Programacion Plc PDF

C/ Cartagena. 245, 4º, 1ª08025 Barcelona (Spain)

Telf. 34 - 93 446 30 50Fax. 34 - 93 446 30 51E-mail: [email protected]

http://www.afeisa.es

MANUAL TÉCNICODE

PROGRAMACIÓN

MIDA

Page 2: Manual Tecnico de Programacion Plc PDF

No está permitida la reproducción total ó parcial de estainformación, ni su tratamiento informático, ni la transmisión de ningunaforma ó por cualquier medio, ya sea electrónico, mecánico, porfotocopia, por registro u otros métodos, sin el permiso previo y porescrito de AFEI, Sistemas y Automatización, S.A.Esta obra ha sido realizada por el siguiente equipo de técnicos, todosellos directamente involucrados en el desarrollo.

Page 3: Manual Tecnico de Programacion Plc PDF

Redacción y composición: Jordi VilaSantiago Losada

Supervisión: Jordi VilaJordi VivesSantiago Losada

La información contenida en este Manual Técnico deProgramación puede estar sometida a cambios sin previo aviso y enningún caso representa un compromiso por parte del vendedor.

Primera Edición (Versión 00.07) Junio 2.002

Page 4: Manual Tecnico de Programacion Plc PDF

.

Page 5: Manual Tecnico de Programacion Plc PDF

IG

Page 6: Manual Tecnico de Programacion Plc PDF

.

Page 7: Manual Tecnico de Programacion Plc PDF

INDICE GENERAL IG-IG 1 99.01

IG - IndiceIndice General ............................................................. IG-IG-----01Acerca de este Manual ............................................... IG-AM ---01

DP - IntroducciónIntroducción a la Familia MIDA ................................. DP-FM --01Definiciones Previas................................................... DP-DE---01Organización de la Memoria ...................................... DP-OM --01Modos de Trabajo ....................................................... DP-MT --01Modos de Programación............................................ DP-PR---01Edición de programas en entorno DOS........................ DP-PR---02Directivas de Compilación ............................................ DP-PR---02Simbología .................................................................. DP-SI ----01

IN - InstruccionesDescripción Hoja de Instrucciones........................... IN-DI -----01Clasificación de las Instrucciones............................ IN-CL ----01Instrucciones Lógicas y de Salto.............................. IN-LO ----01

LD ....................................................................... IN-LO ----02LDNT .................................................................. IN-LO ----03LDX..................................................................... IN-LO ----04XOR.................................................................... IN-LO ----05AND .................................................................... IN-LO ----06OR ...................................................................... IN-LO ----07ANDNT ............................................................... IN-LO ----08ORNT ................................................................. IN-LO ----09ANDLD ............................................................... IN-LO ----10ORLD.................................................................. IN-LO ----11OUT.................................................................... IN-LO ----12OUTNT ............................................................... IN-LO ----13OUTX.................................................................. IN-LO ----14SET..................................................................... IN-LO ----15RESET................................................................ IN-LO ----16JZ........................................................................ IN-LO ----17JNZ ..................................................................... IN-LO ----18

Ejemplos ....................................................................... IN-LO ----19

Page 8: Manual Tecnico de Programacion Plc PDF

INDICE GENERAL IG-IG 2 99.01

Instrucciones de Detección de FlancosFLANC................................................................ IN-FL ---- 01

Temporizadores y Contadores .................................. IN-TC --- 01Temporizadores............................................................ IN-TC --- 01

TIM...................................................................... IN-TC --- 05TIMR................................................................... IN-TC --- 07

Contadores ................................................................... IN-TC --- 09CNT .................................................................... IN-TC --- 13CNTR.................................................................. IN-TC --- 15

Ejemplos ....................................................................... IN-TC --- 17Instrucciones Aritméticas.......................................... IN-AR --- 01

MOVRI................................................................ IN-AR --- 10MOVCI................................................................ IN-AR --- 11STOI ................................................................... IN-AR --- 12SETRI ................................................................. IN-AR --- 13MOVIX ................................................................ IN-AR --- 14STOIX................................................................. IN-AR --- 15MOVRF............................................................... IN-AR --- 16STOF .................................................................. IN-AR --- 17MOVCF............................................................... IN-AR --- 18MOVFX............................................................... IN-AR --- 19STOFX................................................................ IN-AR --- 20ADDI ................................................................... IN-AR --- 21SUBI ................................................................... IN-AR --- 22MULI ................................................................... IN-AR --- 23DIVI..................................................................... IN-AR --- 24ADDC ................................................................. IN-AR --- 25SUBC.................................................................. IN-AR --- 26MULC ................................................................. IN-AR --- 27DIVC ................................................................... IN-AR --- 28INC...................................................................... IN-AR --- 29ADDF.................................................................. IN-AR --- 30SUBF .................................................................. IN-AR --- 31MULF.................................................................. IN-AR --- 32DIVF.................................................................... IN-AR --- 33MOVIF ................................................................ IN-AR --- 34STOFI ................................................................. IN-AR --- 35

Ejemplos ....................................................................... IN-AR --- 36

Page 9: Manual Tecnico de Programacion Plc PDF

INDICE GENERAL IG-IG 3 99.01

Comparaciones Aritméticas ...................................... IN-CA----01CPEI ................................................................... IN-CA----03CPGEI ................................................................ IN-CA----04CPLEI ................................................................. IN-CA----05CPGI................................................................... IN-CA----06CPLI.................................................................... IN-CA----07CPEF .................................................................. IN-CA----08CPGEF ............................................................... IN-CA----09CPLEF................................................................ IN-CA----10CPGF.................................................................. IN-CA----11CPLF .................................................................. IN-CA----12

Ejemplos ....................................................................... IN-CA----13Reconocimiento del Teclado ..................................... IN-RT ----01Detección de Teclas ..................................................... IN-RT ----02

INK...................................................................... IN-RT ----03Ejemplos ....................................................................... IN-RT ----04Introducción de Datos Numéricos ................................ IN-RT ----07

INI ....................................................................... IN-RT ----12INF...................................................................... IN-RT ----14INICF .................................................................. IN-RT ----16INPIX .................................................................. IN-RT ----18INPFX................................................................. IN-RT ----19INPCX................................................................. IN-RT ----20

Ejemplos ....................................................................... IN-RT ----22Visualización y Comunicaciones .............................. IN-VC----01Visualización y Transmisión de Datos.......................... IN-VC----02

COM ................................................................... IN-VC----04Puntero del Buffer Intermedio....................................... IN-VC----05

CLEAR................................................................ IN-VC----06LOC .................................................................... IN-VC----07LOCX.................................................................. IN-VC----08

Mensajes y Caracteres ASCII ...................................... IN-VC----09DISL.................................................................... IN-VC----10DISLX ................................................................. IN-VC----11DISCH ................................................................ IN-VC----12DISCX................................................................. IN-VC----13

Ejemplos ....................................................................... IN-VC----14

Page 10: Manual Tecnico de Programacion Plc PDF

INDICE GENERAL IG-IG 4 99.01

Visualización y Transmisión de Datos Numéricos........ IN-VC --- 16DISRI .................................................................. IN-VC --- 17DISIX .................................................................. IN-VC --- 18DISRF................................................................. IN-VC --- 19DISFX ................................................................. IN-VC --- 20

Ejemplos ....................................................................... IN-VC --- 22Visualización Rotativa en Display................................. IN-VC --- 26Ejemplos ....................................................................... IN-VC --- 26Reloj Interno en Tiempo Real .................................... IN-R ----- 01

DATE .................................................................. IN-R ----- 03TIME ................................................................... IN-R ----- 04CLOCK ............................................................... IN-R ----- 05CLKP .................................................................. IN-R ----- 06

Ejemplos ....................................................................... IN-R ----- 07Estructuración de Programas Subrutinas ............... IN-ES --- 01

CALL................................................................... IN-ES --- 04RET..................................................................... IN-ES --- 05JMP..................................................................... IN-ES --- 06NOP.................................................................... IN-ES --- 07END .................................................................... IN-ES --- 08

Ejemplos ....................................................................... IN-ES --- 09

ES – Entradas / SalidasEntrada de Contaje por Interrupciones .................... ES-EI---- 01Ejemplos ....................................................................... ES-EI---- 05Interrupciones por Software...................................... ES-IS---- 01Ejemplos ....................................................................... ES-IS---- 05Entradas y Salidas Analógicas ................................. ES-AD -- 01Entradas Analógicas..................................................... ES-AD -- 01Ejemplos ....................................................................... ES-AD -- 04Salidas Analógicas ....................................................... ES-AD -- 12Ejemplos ....................................................................... ES-AD -- 13

Page 11: Manual Tecnico de Programacion Plc PDF

INDICE GENERAL IG-IG 5 99.01

FI – Funciones InternasFunciones Internas..................................................... FI-FI------01Funciones de Pesaje .................................................. FI-PS ----01Ejemplos ....................................................................... FI-PS ----08Función PID ................................................................. FI-CP ----01Ejemplos ....................................................................... FI-CP ----05

DF – Direccionamiento / Base DatosDireccionamiento Indirecto ....................................... DF-DI ----01Ejemplos ....................................................................... DF-DI ----06Base de Datos ............................................................. DF-BD---01Ejemplos ....................................................................... DF-BD---10

FM – Tratamiento MódemIntroducción ................................................................ FM-TM --01Funcionamiento Básico ................................................ FM-TM --01Configuración Módem................................................... FM-TM --03Configuración del SET-UP ......................................... FM-TM --04Relés y Registros........................................................ FM-TM --07Respuestas Validas .................................................... FM-TM --10Codigo PIN Módem GSM ........................................... FM-TM --13Reposición Automática Código PIN ............................. FM-TM --13Tratamiento de Errores PIN.......................................... FM-TM --15Inicio Arranque MIDA y Módem ................................ FM-TM --16Instrucciones AT......................................................... FM-TM --18

AT 0 .................................................................... FM-TM --19AT 1 .................................................................... FM-TM --20AT 2 .................................................................... FM-TM --21AT 6 .................................................................... FM-TM --22AT 3 .................................................................... FM-TM --23

Recepción de Mensajes Cortos SMS........................... FM-TM --24AT 4 .................................................................... FM-TM --26AT 5 .................................................................... FM-TM --28

Ejemplos ....................................................................... FM-TM --29

Page 12: Manual Tecnico de Programacion Plc PDF

INDICE GENERAL IG-IG 6 99.01

PC – Protocolos ComunicacionesProtocolo MIDAbus .................................................... PC-MB-- 01Protocolo MODbus ..................................................... PC-MD-- 01Protocolo Libre ........................................................... PC-PL--- 01

DISB ................................................................... PC-PL--- 04LECB .................................................................. PC-PL--- 06COM ................................................................... PC-PL--- 08

TE – Tratamiento ErroresTratamiento de Errores .............................................. TE-RE -- 01Errores en Tiempo de Ejecución .................................. TE-RE -- 01Errores de Software...................................................... TE-RE -- 02Errores de Hardware .................................................... TE-RE -- 06Errores de Comunicaciones ......................................... TE-RE -- 14Reles Estado de los Puertos de Comunicaciones ....... TE-RE -- 14

Page 13: Manual Tecnico de Programacion Plc PDF

ACERCA DE ESTE MANUAL IG-AM 1 99.01

Antes de iniciar cualquier explicación sobre la programación delos equipos MIDA nos permitimos en darle la bienvenida.

Redactar un manual de programación siempre es una tareacomplicada, bien porque para unos, determinadas explicaciones seránmuy extensas, mientras que para otros serán todo lo contrario.Buscar un equilibrio es difícil, pero creemos que nos hemos mantenidoen esa línea, o por lo menos esa ha sido nuestra intención. Por otrolado, agradecer de ante mano todas las sugerencias que nos puedanhacer sobre este manual.

Una sugerencia que se hace en todos los manuales, es la deque se lea íntegramente todo el manual y a su vez se vayanrealizando los ejemplos propuestos, puesto que solo así lograremosuna visión total y dominio de la potencia que nos da el juego deinstrucciones.

No obstante como todos sabemos, bien por razones de tiempo,proyectos, o cualquier otro motivo, lo que nos falta es precisamentetiempo, y aun más para leernos un manual de programación. Por esoel equipo de AFEISA ha diseñado este manual, agrupando lasinstrucciones por bloques, como por ejemplo: FUNCIONES LÓGICAS(LD, AND, OR,...), CONTADORES Y TEMPORIZADORES (CNT,TIM...) INSTRUCCIONES ARITMÉTICAS, etc.,. También indicar quecon cada explicación de cada instrucción se incluye un ejemplo deaplicación inmediata y al final de cada bloque de instrucciones se daun ejemplo mas completo en el que se intentan integrar todas lasinstrucciones explicadas en ese bloque.

Otra dificultad con la que nos hemos encontrado a la hora deredactar este manual es que nos encontramos frente a unos equiposque pueden trabajar como autómatas programables o comomicrocontroladores, por eso cada instrucción se ha tratado de la formamás adecuada.

Page 14: Manual Tecnico de Programacion Plc PDF

ACERCA DE ESTE MANUAL IG-AM 2 99.01

Antes de proseguir con la lectura de este manual creemos quees conveniente hacer una serie de matizaciones de cómo estánestructuradas las paginas:

ACERCA DE ESTE MANUAL IG

NOTA:Señalar también que cada capitulo empieza en la pagina uno y

finaliza en la pagina correspondiente.

03 99.01

Titulo o Bloque delapartado del

capitulo. CapituloPagina

Versión de ladocumentación

Page 15: Manual Tecnico de Programacion Plc PDF

DP

Page 16: Manual Tecnico de Programacion Plc PDF

.

Page 17: Manual Tecnico de Programacion Plc PDF

INTRODUCCIÓN A LA FAMILIA MIDA DP-FM 1 99.01

AFEISA es una empresa con espíritu joven, dinámico einnovador y que aporta más de 15 años de experiencia en el diseño yfabricación de equipos para la automatización de procesosindustriales, ha creado los equipos MIDA, que marcan un nuevoconcepto dentro del campo de los PLC´s, pero AFEISA no se hadetenido ahí, y ha dado un paso más allá, incorporando a sus equiposlas capacidades de pesaje, telegestión, regulación industrial, datalogger, etc.

Los equipos MIDA suponen la integración del dialogo hombre -maquina en una sola unidad, creando así un equipo compacto,robusto, sencillo y cómodo para el usuario. Así mismo estos equiposconstituyen un sistema con distintas configuraciones de entradas-salidas, tanto analógicas como digitales, que se adaptan a lasnecesidades concretas de cada aplicación.

También cabe señalar la posibilidad que presentan algunos denuestros equipos de poseer teclado rotulable con leds de estadoincorporado que permiten una mayor personalización del equipo.

Además, todas las unidades disponen de puertos decomunicaciones serie RS-232 para gestionar impresoras, supervisióndesde un PC, conectar lectores de códigos de barras, visualizadores,conexión vía-módem o radio-módem, etc.

Señalar también que se disponen de puertos de comunicaciónRS-485, por lo que es posible conectar hasta 32 unidades en 1200metros de distancia, para de esta forma realizar controles distribuido,descentralización de procesos, supervisión desde un PC, etc.

AFEISA dispone de un protocolo propio de comunicaciones(MIDABUS), y la mayoría de modelos disponen, el protocolo estándarMODBUS. Además del PROTOCOLO LIBRE que consiste en un juegode instrucciones para leer o escribir otros protocolosEstos protocolos permiten a estos equipos ser elementostransparentes al PC, con total disponibilidad para la adquisición ygestión de datos sin necesidad de interrumpir la ejecución delprograma.

Page 18: Manual Tecnico de Programacion Plc PDF

INTRODUCCIÓN A LA FAMILIA MIDA DP-FM 2 99.01

Además, disponen de un potente juego de instrucciones tantológicas como aritméticas, registros enteros (16 bits) y en coma flotante(32 bits), así como instrucciones para control de los displays y elteclado, dependiendo de las prestaciones de cada equipo.

La programación de las unidades MIDA es sumamente sencillay su lenguaje de alto nivel facilita la realización de complejosproyectos, debido a que pueden realizarse programas que contengansubrutinas, saltos condicionales ó incondicionales, registros indexadosy, además, se puede estructurar el programa con un procedimientoprincipal y rutinas secundarias.

Page 19: Manual Tecnico de Programacion Plc PDF

DEFINICIONES PREVIAS DP-DE 1 99.01

Se establecen a continuación definiciones que se van a utilizar apartir de este punto en este Manual Técnico con el fin de facilitar lacomprensión de las explicaciones.

Programa MIDAPrograma tipo PLC de aplicación residente en laFLASH EPROM del equipo y realizado por elintegrador.

Buffer intermedioZona de memoria RAM del equipo en la que sepreparan los envíos de datos a los visualizadores ópuertos de comunicaciones (impresoras, PC, etc.).

Pila (stack) lógica

Zona de memoria RAM del equipo en la que sealmacenan transitoriamente estados de 1 bit (relés,entradas/salidas digitales) para ser gestionados porel programa MIDA.

Pila (stack) aritmética

Zona de memoria RAM del equipo en la que sealmacenan transitoriamente datos de 16 bits (datosenteros) ó de 32 bits (datos en coma flotante) paraser gestionados por el programa MIDA.

Pila (stack) desubrutinas

Zona de memoria RAM en la que se almacenantransitoriamente las direcciones de retorno de lassubrutinas.

Directiva Instrucción del programa MIDA que afecta al trabajodel Compilador.

CompiladorPrograma que traduce el programa MIDA realizadopor el usuario en código objeto ejecutable por elequipo.

InstrucciónComponente principal de una línea de programaMIDA. Indica la acción a realizar con los operandosde esa línea de programa.

Page 20: Manual Tecnico de Programacion Plc PDF

DEFINICIONES PREVIAS DP-DE 2 99.01

Nemónico Nombre de cada una de instrucciones deprogramación.

OperandoParte de la línea de programa sobre la cual seejecuta la acción que indica la instrucción.Representa a un relé, registro, entrada, salida, etc.

Lista de instrucciones

Modo de programación basado en el uso de losnemónicos y operandos como elementosidentificativos de las instrucciones que consisten eneditar una sucesión de ellas por orden de ejecución.

Diagrama de relés óLadder

Modo de programación mediante símbolos gráficosque simula a los esquemas eléctricos.

Programa intérpreteEs el programa maestro del sistema que permitetraducir el programa MIDA creado por el integradoren instrucciones que ejecuta el microprocesador.

Page 21: Manual Tecnico de Programacion Plc PDF

ORGANIZACIÓN DE LA MEMORIA DP-OM 1 99.01

Los tipos de memoria de que disponen los equipos MIDA son:

! EPROM-FLASHDonde se almacenan el programa intérprete y el realizado por

el usuario de tipo PLC. Ambos programas se pueden transmitir víaserie desde un PC. Por lo cual es posible actualizar nuevas versionesdel programa intérprete y del programa MIDA sin necesidad desustituir la EPROM.

! NOVRAMMemoria no volátil donde se almacenan datos intermedios de la

ejecución del programa MIDA (relés, registros enteros y en comaflotante). Es un tipo de memoria que no depende de la batería Ni-Cd yque por lo tanto puede ser utilizada para almacenar datos importantespara la ejecución del programa (claves de acceso, constantes deconversión, etc.).

La NOVRAM tiene las ventajas de la EEPROM y, además, notiene limitado el número de escrituras a realizar. Dispone de doszonas: una para registros enteros de 16 bits con signo y otra deregistros en coma flotante de 32 bits.

! RAMDonde se almacenan los datos intermedios de la ejecución del

programa MIDA (relés, registros). Por su construcción, este tipo dememoria es volátil. Sin embargo, el equipo dispone de una batería deNi-Cd para salvaguardar los datos almacenados en ella. La autonomíade esta batería es de tres meses con el equipo sin tensión.

Dentro de la memoria RAM se pueden distinguir dos zonas:

- RAM de usuario.- RAM temporal.

- RAM DE USUARIOLa RAM de usuario es no volátil, protegida por batería de Ni-Cd.Se distinguen varias zonas en esta memoria:

Page 22: Manual Tecnico de Programacion Plc PDF

ORGANIZACIÓN DE LA MEMORIA DP-OM 2 99.01

• Zona de almacenamiento reservado para el programaintérprete del equipo.

• Zona de almacenamiento de posiciones de 1 bit (relés).• Zona de almacenamiento de posiciones de 16 bits (registros

enteros).• Zona de almacenamiento de posiciones de 32 bits (registros

en coma flotante).

- RAM TEMPORALLos equipos MIDA disponen de tres pilas (stacks) independientes yun buffer intermedio:

• PILA LÓGICA (1 bit): para intercambio de estadosintermedios de un bit (relés, entradas, salidas digitales).Tiene una capacidad de 50 niveles.

• PILA ARITMÉTICA (16 bits): para intercambio de datos de16 y 32 bits (enteros y coma flotante, respectivamente).Tiene una capacidad de 50 niveles.

• PILA SUBRUTINAS (16 bits): para almacenamiento de lasdirecciones de retorno de las subrutinas (instrucciones‘CALL’). Tiene una capacidad de 50 niveles.

Las pilas son del tipo LIFO y en las explicaciones se consideraque el último estado (ó dato) ocupa la posición superior de la pila y,por lo tanto, es el primero en descargarse.

Los equipos MIDA disponen también de un BUFFERINTERMEDIO (zona de almacenamiento de datos temporal) donde sepreparan las visualizaciones, transmisiones y recepciones vía serie.Tiene una longitud de 132 bytes.

Todas las zonas de memoria que se describen están protegidascontra desbordamiento.

Page 23: Manual Tecnico de Programacion Plc PDF

ORGANIZACIÓN DE LA MEMORIA DP-OM 3 99.01

Al ejecutarse la instrucción END se comprueban todos losniveles de las pilas lógica, aritmética y de subrutinas para, en su caso,inicializarlas de nuevo en caso de error de programación.

En el caso del buffer intermedio es el propio programa intérpreteel que impide escribir fuera de los márgenes de este buffer.

Page 24: Manual Tecnico de Programacion Plc PDF

ORGANIZACIÓN DE LA MEMORIA DP-OM 4 99.01

.

Page 25: Manual Tecnico de Programacion Plc PDF

MODOS DE TRABAJO DP-MT 1 99.01

Los equipos MIDA pueden estar en dos estados:

! MODO DE TRABAJO

Es el modo normal por defecto de funcionamiento del equipodesde el cual se ejecuta el programa, también conocido comofuncionamiento en modo RUN.

El equipo entra en este modo de trabajo desde una puesta entensión del equipo y desde el MODO STOP cuando se pide unainicialización de programa (reset) ya sea por teclado ó porcomunicaciones.

! MODO STOP

Es el modo desde el que se puede detener la ejecución delprograma mediante el teclado o por comunicaciones. Este modo es elindicado para realizar tests y comprobaciones sobre el programa.

En este modo de trabajo, el equipo ejecuta el programanormalmente pero atendiendo al teclado para detenerlo y acceder alas funciones interiores del equipo: test del equipo y visualizacióninterna de los registros.

Page 26: Manual Tecnico de Programacion Plc PDF

MODOS DE TRABAJO DP-MT 2 99.01

.

Page 27: Manual Tecnico de Programacion Plc PDF

MODOS DE PROGRAMACIÓN DP-PR 1 99.01

El lenguaje de programación del equipo es por Lista de Instrucciones opor Diagrama de Contactos.

Para programar los equiposMIDA se debe realizar un código deprograma en un editor ASCII estándar,compilarlo para obtener el códigoobjeto y transferir este al equipo víaserie.

También podemos utilizar uneditor denominado MIDAedit bajo elentorno MIDAtools. En este editor seintroduce el programa que debecontrolar el MIDA, se realiza lacompilación y una vez compilado setransfiere vía serie al equipo.Mencionar también la existencia deuna potente herramienta de ayuda ysoporte al programador denominadoMIDAvisual.

MIDAvisual es un software, devisualización y monitorización, en elque podemos leer y modificar cualquierregistro interno del equipo MIDA, vererrores internos y editar el programa.Siendo una herramienta ideal para ladepuración y detección de errores enprogramas desarrollados con lasunidades de control industrial MIDA.

Respecto el funcionamiento dela programación con el entornoMIDAtools: MIDAedit o MIDAvisual, se

describe en el manual que se entrega juntamente con cada uno.

Inicio

Edición del programa

Compilación del programa

Errores?

Setup OK?

No

NoModificar ó

crear un Setup

Si

Si

Trasnferir código objeto

al equipo

Fin

Page 28: Manual Tecnico de Programacion Plc PDF

MODOS DE PROGRAMACIÓN DP-PR 2 99.01

! Edición de programas en entorno DOS

Los programas se realizan mediante un editor ASCII estándar,que no introduzca caracteres de control (no editar con: word,wordperfect, wordpad...) mediante el PC.Una vez editado el programa, este se guarda con extensión .PRG.

Un programa puede llegar a tener un máximo de líneas, quepuede ser variable según el modelo de MIDA que utilicemos (verManual Usuario del equipo).

Una línea de programa puede llegar a constar como máximo deun nemónico, tres etiquetas (operandos) y un comentario:

" Nemónico: constituye la instrucción que el equipo debe ejecutar." Etiqueta: nombre simbólico que define un relé, registro,

constante, texto o salto de línea." Operando: indica sobre que relé, registro, constante o salto de

línea sobre el que se debe ejecutar el nemónico." Comentario: un signo ; indica al compilador que el escrito que

viene a continuación es simplemente un comentario para elprogramador. Los comentarios pueden estar situados en cualquierposición de la línea de programa.

Respecto el funcionamiento del compilador y enviador deprogramas, referirse al documento incluido en el disquete deprogramación.

! Directivas de Compilación

Existen unas instrucciones (nemónicos) que solo tienen efectosobre el compilador, son las llamadas Directivas de Compilación:

EQU LITE MIDA

INTER END_INTER FILE

Page 29: Manual Tecnico de Programacion Plc PDF

MODOS DE PROGRAMACIÓN DP-PR 3 99.01

La descripción de las Directivas de Compilación: INTER yEND_INTER, son comentadas dentro del capitulo "Interrupciones deSoftware", y la directiva FILE en el capitulo "Base de Datos" de estemismo Manual.

" EQU: Se utiliza para asignar nombres simbólicos (etiquetas) arelés, registros, constantes y operandos. Una vez definida laetiqueta, se puede usar ésta en lugar de la expresión equivalente.Ejemplo: Si la entrada de una marcha es la entrada digital 8 y lasalida de la bomba es la salida digital 100, su expresión puedeser:

marcha equ 8bomba equ 100

LD marchaOUT bomba

Nota importante:Para editar etiquetas se debe tener presente de no dejar ningún

espacio entre el margen izquierdo y el primer carácter de la etiqueta.En la edición del programa tenemos que tener en cuenta que entre laetiqueta y el nemónico se debe dejar al menos un espacio, al igual queentre el nemónico y el operando, y entre operandos.

" LITE: Se utiliza para asignar nombres simbólicos (etiquetas) envez del numero de orden del literal (texto). Ejemplo: Si el literal(texto) a visualizar es CONTROL A, su expresión puede ser:

controla lite "CONTROL A"CLEARDISL controlaCOM 0

El literal (texto) deberá estar encerrado entre comillas y sulongitud dependerá del equipo MIDA que estemos utilizando. Un literal(texto) que lo queramos dejar en blanco, tenemos que dejar unespacio en blanco entre las comillas.

Page 30: Manual Tecnico de Programacion Plc PDF

MODOS DE PROGRAMACIÓN DP-PR 4 99.01

Indicar que los literales (textos) deben estar editadosconsecutivamente dentro de la tabla de definición de etiquetas.

Un literal lo podemos llamar dentro del programa, o bien por elnumero de orden o por la etiqueta asignada en la tabla.

El primer literal (texto) dentro de la tabla tiene el numero deorden 0 y el numero máximo depende del equipo que estemosprogramando.

Nota importante:Para editar etiquetas se debe tener presente de no dejar ningún

espacio entre el margen izquierdo y el primer carácter de la etiqueta.En la edición del programa tenemos que tener en cuenta que entre laetiqueta y el nemónico se debe dejar al menos un espacio, al igual queentre el nemónico y el operando, y entre operandos.

" MIDA: Se utiliza para indicar al compilador de programas, elmodelo de MIDA para cual esta editado el programa, paracompilarlo y dejarlo preparado para enviarlo. Por ejemplo si elsiguiente programa es editado para un MIDA14:

MIDA 14

marcha equ 8bomba equ 100

LD marchaOUT bomba

Nota importante:Para utilizar esta Directiva se debe tener presente de dejar un

espacio entre el margen izquierdo y el primer carácter de la directiva.Entre la directiva y el numero de modelo de MIDA (variable según elmodelo) se debe dejar al un espacio.

Page 31: Manual Tecnico de Programacion Plc PDF

SIMBOLOGÍA DP-SI 1 99.01

Símbolos que encontremos en el Manual

LECTURA DEL CONTACTO DE UN RELE (LD)

LECTURA DEL CONTACTO DE UN RELE NEGADO(LDNT)

DESCONEXIÓN DE UN RELE (RESET)

CONEXIÓN DE UN RELE (SET)

SALIDA DIGITAL O RELE INTERNO (OUT)

SALIDA DIGITAL NEGADA O RELE INTERNONEGADO (OUTNT)

TEMPORIZADOR (TIM)

CONTADOR (CNT)

Page 32: Manual Tecnico de Programacion Plc PDF

SIMBOLOGÍA DP-SI 2 99.01

REGISTRO CON SU CONTENIDO

PILA ARITMETICA

Page 33: Manual Tecnico de Programacion Plc PDF

IN

Page 34: Manual Tecnico de Programacion Plc PDF

.

Page 35: Manual Tecnico de Programacion Plc PDF

DESCRIPCIÓN HOJA DE INSTRUCCIONES IN-DI 1 99.01

Antes de empezar ha detallar cada una de las instrucciones deprogramación, nos proponemos dar unas explicaciones que creemosayudaran a una mayor comprensión.

NOTA IMPORTANTE:En este Manual se va a describir todas las instrucciones que nospodemos encontrar en los diferentes equipos MIDA. Eso no quieredecir que en un modelo de MIDA tengamos todas las instruccionesdescritas en este Manual disponibles.Así como los ejemplos descritos en este manual, deberemoscomprobar las instrucciones y el direccionamiento de losrelés/registros de la memoria, disponibles en el equipo MIDA queestamos programando.Para ver que instrucciones, relés/registros y márgenes de estos,disponemos para cada modelo de MIDA tenemos que consultar elManual de Usuario de estos.

Las instrucciones pueden contener hasta dos operandos y estasvienen dadas en el siguiente formato:

LD XXXX YYYY

Para ayudarle a localizar e identificar fácilmente la informaciónse ha desarrollado una hoja tipo en donde se encuentran detalladascada una de las instrucciones que utilizan los equipos MIDA. Acontinuación mostramos un esquema de cómo esta estructurada dichahoja:

INSTRUCCION

PRIMEROPERANDO

SEGUNDOOPERANDO

Page 36: Manual Tecnico de Programacion Plc PDF

DESCRIPCIÓN HOJA DE INSTRUCCIONES IN-DI 2 99.01

LD XXXX

NEMÓNICO: LDOPERANDO XXXX: Relé interno, entrada, ó salida.CÓDIGO INSTRUCCIÓN: 01

DESCRIPCIÓN:

CARGA en pila lógica el estado del relé indicado por el operando.Incrementa un nivel la pila lógica (+1).

# Ejemplo:

LD 1 ;Carga el estado de la entrada digital 1 en pila lógica.OUT 101 ;Descarga el último estado de la pila lógica (el de la

;entrada 1) sobre la salida digital 101.

LD 1 OUT 101

LD Nombre de la instrucción

Datosdescriptivos dela instrucción.

Diagrama gráfico del ejemplo descrito.

Ejemplo practico.

Nemónico

Descripción y funcionamiento de la instrucción

Comentarios

Page 37: Manual Tecnico de Programacion Plc PDF

CLASIFICACIÓN DE LAS INSTRUCCIONES IN-CL 1 99.01

Las instrucciones que utilizan los equipos MIDA puedenclasificarse en varios grupos que a continuación indicamos:

INSTRUCCIONES LÓGICAS Y DE SALTO.Instrucciones para el control lógico de los automatismos de una

máquina ó sistema, y asociados a registros de un bit.

LD ANDNT OUT LDX

LDNT ORNT OUTNT OUTX

AND ANDLD SET XOR

OR ORLD RESET JZ

JNZ

INSTRUCCIONES DE TEMPORIZACIÓN Y CONTAJE.Instrucciones de temporización de tiempo y de contaje,

asociadas a registros enteros de 16 bits.

TIM CNT TIMR CNTR

INSTRUCCIONES DE TRATAMIENTO ARITMÉTICO DE 16 BITS.Instrucciones para realizar operaciones aritméticas con registros

enteros (16 bits con signo).

MOVCI MOVIX ADDI ADDC INC

MOVRI STOIX SUBI SUBC SETRI

STOI MULI MULC STOFI

DIVI DIVC

Page 38: Manual Tecnico de Programacion Plc PDF

CLASIFICACIÓN DE LAS INSTRUCCIONES IN-CL 2 99.01

INSTRUCCIONES DE TRATAMIENTO ARITMÉTICO DE 32 BITS.Instrucciones para realizar operaciones aritméticas con registros

en coma flotante (32 bits según formato IEEE).

MOVCF MOVFX ADDF

MOVRF STOFX SUBF

STOF MOVIF MULF

DIVF

INSTRUCCIONES DE COMPARACION ARITMÉTICAInstrucciones para realizar comparaciones entre registros enteros

(16 bits) ó en coma flotante (32 bits)

CPEF CPGF CPEI CPGI

CPGEF CPLF CPGEI CPLI

CPLEF CPLEI

INSTRUCCIONES DE VISUALIZACIÓN E IMPRESIÓNInstrucciones que permiten visualizar datos alfanuméricos,

imprimirlos, transmitir vía serie, etc.

CLEAR DISRI DISIX DISL

LOC DISFX DISRF DISLX

LOCX DISCX DISCH COM

Page 39: Manual Tecnico de Programacion Plc PDF

CLASIFICACIÓN DE LAS INSTRUCCIONES IN-CL 3 99.01

INSTRUCCIONES DE TECLADOInstrucciones que permiten detectar la pulsación de teclas ó

introducir datos numéricos a registros internos del equipo.

INK INI INF INICF

INPIX INPFX INPCX

INSTRUCCIONES DE RELOJInstrucciones que permiten visualizar y modificar el reloj interno

del equipo.

TIME DATE CLOCK CLKP

INSTRUCCIONES DE CONTROL DE FLUJO DE PROGRAMA.Instrucciones de saltos y de subrutinas que permiten realizar

códigos de programa estructurados en un procedimiento principal yotros secundarios.

CALL JMP END NOP

RET

INSTRUCCIONES DE DETECCIÓN DE FLANCOSInstrucciones destinadas a la detección de flancos.

FLANC

INSTRUCCIONES DE TRATAMIENTO DE FICHEROSInstrucciones para manipular los ficheros almacenados en la

zona de memoria reservada a tal fin.

WRITE READ

Page 40: Manual Tecnico de Programacion Plc PDF

CLASIFICACIÓN DE LAS INSTRUCCIONES IN-CL 4 99.01

INSTRUCCIONES DE FUNCIONES INTERNAS DEL EQUIPOInstrucciones que efectúan una llamada a una función interna

del equipo.

FUNC

DIRECTIVAS DE COMPILACIÓNInstrucciones que indican operaciones especiales al Compilador

para la obtención del código objeto ejecutable.Una vez compilado el programa no aparecen en el código objeto nirealizan trabajo alguno en su ejecución.

EQU LITE MIDA FILE

INTER END_INTER

INSTRUCCIONES DE INTERRUPCIONES POR SOFTWAREInstrucciones destinadas al control y gestión de las

interrupciones por software.

INTER END_INTER IRET

INSTRUCCIONES DE PROTOCOLO DE COMUNICACIONESIntrucciones para el manejo de datos del puerto serie de

comunicaciones, mediante el protocolo libre.

DISB LEBC COM

Page 41: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES LÓGICAS Y DE SALTO IN-LO 1 99.01

Las funciones lógicas son un grupo de instrucciones para laprogramación de los registros de un bit (relés internos, entradas ysalidas digitales).

Para la programación de este grupo de instrucciones se puedeutilizar para su planteamiento cualquiera de los métodos que facilitanla programación de dispositivos lógicos, como pueden ser diagramasde relés, contactos y bobinas (LADDER), Álgebra de Boole, Tablas deKarnough, Graffcet, etc.

El código de programa puede ser editado mediante doseditores:

• Programación mediante MIDAedit (entorno MIDAToolspara Windows), que permite programación en diagramade relés (Ladder) y en lista de instrucciones, así como unacombinación de ambos.

• Programar mediante un editor ASCII estándar y lasherramientas de trabajo en DOS.

Se describen a continuación cada una de las instrucciones deeste grupo:

LD ANDNT OUT LDX

LDNT ORNT OUTNT OUTX

AND ANDLD SET XOR

OR ORLD RESET JZ

JNZ

Page 42: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES LÓGICAS Y DE SALTO IN-LO 2 99.01

LD XXXX

NEMÓNICO: LDOPERANDO XXXX: Relé interno, entrada ó salida digital.CÓDIGO INSTRUCCIÓN: 01

DESCRIPCIÓN:

CARGA en pila lógica el estado del relé indicado por el operando.Incrementa un nivel la pila lógica (+1).

# Ejemplo:

LD 1 ;Carga el estado de la entrada digital 1 en pila lógicaOUT 101 ;Descarga el último estado de la pila lógica (el de la

;entrada 1) sobre la salida digital 101.

RELE 1 RELE 101

LD

Page 43: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES LÓGICAS Y DE SALTO IN-LO 3 99.01

LDNT XXXX

NEMÓNICO: LDNTOPERANDO XXXX: Relé interno, entrada ó salida digital.CÓDIGO INSTRUCCIÓN: 02

DESCRIPCIÓN:

CARGA en pila lógica el estado negado del relé indicado por eloperando.Incrementa un nivel la pila lógica (+1).

# Ejemplo:

LDNT 1 ;Carga el estado negado de la entrada digital 1 en pila;lógica.

OUT 102 ;Descarga el último estado de la pila lógica (el de la;entrada 1 negado) sobre la salida digital 102.

RELE 1 RELE 102

LDNT

Page 44: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES LÓGICAS Y DE SALTO IN-LO 4 99.01

LDX XXXX

NEMÓNICO: LDXOPERANDO XXXX: Registro entero.CÓDIGO INSTRUCCIÓN: 15

DESCRIPCIÓN:

CARGA en pila lógica el estado del relé indicado en el operando.El operando es el registro entero que contiene la dirección del relé acargar.Incrementa un nivel la pila lógica (+1).

# Ejemplo:

MOVCI 5 ;Carga en pila el dato 5STOI 300 ;Carga el dato 5 en el registro 300LDX 300 ;Carga el estado del relé indicado en el reg. 300,

;en este caso la entrada 5.OUT 103 ;Descarga el último estado de la pila lógica (el de

;la entrada 5) sobre la salida digital 03.

RELE 5 RELE103

LDX

Page 45: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES LÓGICAS Y DE SALTO IN-LO 5 99.01

XOR XXXX

NEMÓNICO: XOROPERANDO XXXX: Relé interno, entrada ó salida digital.CÓDIGO INSTRUCCIÓN: 20

DESCRIPCIÓN:

OR EXCLUSIVA entre el último estado de la pila lógica y eloperando.Mantiene inalterado el nivel de la pila lógica (0).

# Ejemplo:

LD 1 ;Carga el estado de la entrada digital 1 en pila lógica.XOR 2 ;OR EXCLUSIVA entre las entradas 1 y 2OUT 106 ;El estado de la entrada 1 pasa a la salida digital 106.

RELE 1 RELE 1 RELE 106

RELE 2 RELE 2

XOR

Administrador
0 1 0 1 0 0 1 1 -------------- 0 1 1 0
Page 46: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES LÓGICAS Y DE SALTO IN-LO 6 99.01

AND XXXX

NEMÓNICO: ANDOPERANDO XXXX: Relé interno, entrada ó salida digital.CÓDIGO INSTRUCCIÓN: 03

DESCRIPCIÓN:

AND entre el último estado de la pila lógica y el operando, dejando elresultado en la pila lógica.Mantiene inalterado el nivel de la pila lógica(0).

# Ejemplo:

LD 1 ;Carga el estado de la entrada digital 1 en pila lógica.AND 2 ;AND lógica entre las entradas 1 y 2OUT 302 ;El resultado pasa al relé interno 302

RELE 1 RELE 2 RELE 302

AND

Page 47: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES LÓGICAS Y DE SALTO IN-LO 7 99.01

OR XXXX

NEMÓNICO: OROPERANDO XXXX: Relé interno, entrada ó salida digital.CÓDIGO INSTRUCCIÓN: 04

DESCRIPCIÓN:

OR entre el último estado de la pila lógica y el operando, dejando elresultado en pila lógica.Mantiene inalterado el nivel de la pila lógica (0).

# Ejemplo:

LD 1 ;Carga el estado de la entrada digital 1 en pila lógica.OR 2 ;OR lógica entre las entradas 1 y 2OUT 106 ;El resultado de la OR pasa a la salida digital 106.

RELE 1 RELE 106

RELE 2

OR

Page 48: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES LÓGICAS Y DE SALTO IN-LO 8 99.01

ANDNT XXXX

NEMÓNICO: ANDNTOPERANDO XXXX: Relé interno, entrada ó salida digital.CÓDIGO INSTRUCCIÓN: 05

DESCRIPCIÓN:

AND entre el último estado de la pila lógica y el operando negado,dejando el resultado en pila lógica.Mantiene el nivel de la pila lógica inalterado (0).

# Ejemplo:

LD 1 ;Carga el estado de la entrada digital 1 en pila;lógica.

ANDNT 2 ;AND entre la entrada 1 y la 2 negadaOUT 104 ;El resultado de la AND pasa a la salida digital

;104.

RELE 1 RELE 2 RELE 104

ANDNT

Page 49: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES LÓGICAS Y DE SALTO IN-LO 9 99.01

ORNT XXXX

NEMÓNICO: ORNTOPERANDO XXXX: Relé interno, entrada ó salida digital.CÓDIGO INSTRUCCIÓN: 06

DESCRIPCIÓN:

OR entre el último estado de la pila lógica y el operando, dejando elresultado en pila lógica.Mantiene inalterado el nivel de la pila lógica (0).

# Ejemplo:

LD 1 ;Carga el estado de la entrada digital 1 en pila lógica.ORNT2 ;OR lógica entre las entradas 1 y la 2 negadaOUT 410 ;El resultado de la OR pasa al relé interno 410.

RELE 1 RELE 410

RELE 2

ORNT

Page 50: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES LÓGICAS Y DE SALTO IN-LO 10 99.01

ANDLD

NEMÓNICO: ANDLDOPERANDO XXXX: No dispone de operando.CÓDIGO INSTRUCCIÓN: 07

DESCRIPCIÓN:

Realiza una AND lógica con los dos últimos estados de la pila lógica,dejando el resultado en la misma.Decrementa un nivel la pila lógica (-1).

# Ejemplo:

LD 1 ;Carga el estado de la entrada digital1 en pila lógica.LD 250 ;Carga el estado del relé interno 250 en pila lógica.ANDLD ;Cierra el bloque lógico realizando una AND entre la

;entrada 1 y el relé interno 250.OUT 104 ;El resultado de la AND pasa a la salida digital 104.

RELE 1 RELE 250 RELE 104

ANDLD

Page 51: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES LÓGICAS Y DE SALTO IN-LO 11 99.01

ORLD

NEMÓNICO: ORLDOPERANDO XXXX: No dispone de operando.CÓDIGO INSTRUCCIÓN: 08

DESCRIPCIÓN:

Realiza una OR lógica con los dos últimos estados de la pila lógica,dejando el resultado en la misma.Decrementa un nivel la pila lógica (-1).

# Ejemplo:

LD 1 ;Carga el estado de la entrada digital 1 en pila lógica.LD 2 ;Carga el estado de la entrada digital 2 en pila lógicaORLD ;Cierra el bloque lógico OROUT 106 ;El resultado de la OR pasa a la salida digital 106.

RELE 1 RELE 106

RELE 2

ORLD

Page 52: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES LÓGICAS Y DE SALTO IN-LO 12 99.01

OUT XXXX

NEMÓNICO: OUTOPERANDO XXXX: Relé interno, entrada ó salida digital.CÓDIGO INSTRUCCIÓN: 09

DESCRIPCIÓN:

DESCARGA el último estado de la pila lógica en el operando.Decrementa el nivel de la pila lógica (-1).

# Ejemplo:

LD 600 ;Carga el estado del relé interno 600 en pila lógica.OUT 106 ;El estado de la entrada 1 pasa a la salida digital 106.

RELE 600 RELE 106

OUT

Page 53: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES LÓGICAS Y DE SALTO IN-LO 13 99.01

OUTNT XXXX

NEMÓNICO: OUTNTOPERANDO XXXX: Relé interno, entrada ó salida digital.CÓDIGO INSTRUCCIÓN: 10

DESCRIPCIÓN:

Descarga el último estado de la pila lógica en el operandonegándolo.Decrementa el nivel la pila lógica (-1).

# Ejemplo:

LD 1 ;Carga el estado de la entrada digital 1 en pila;lógica.

OUTNT 109 ;El estado negado de la entrada 1, pasa a la;salida digital 109.

RELE 1 RELE 109

OUTNT

Page 54: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES LÓGICAS Y DE SALTO IN-LO 14 99.01

OUTX XXXX

NEMÓNICO: OUTXOPERANDO XXXX: Registro enteroCÓDIGO INSTRUCCIÓN: 16

DESCRIPCIÓN:

DESCARGA el último estado de la pila lógica en el relé indicado enel operando.El operando es el registro entero que contiene la dirección del relésobre el que se descarga.Decrementa un nivel la pila lógica (-1).

# Ejemplo:

MOVCI 101STOI 500 ;Almacena el dato 101 en el registro entero 500.LD 1 ;Carga el estado de la entrada 1OUTX 500 ;El estado de la entrada 1 pasa a la salida digital

;101 (dirección contenida en el registro 500).

OUTX

Page 55: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES LÓGICAS Y DE SALTO IN-LO 15 99.01

SET XXXX

NEMÓNICO: SETOPERANDO XXXX: Relé interno, entrada ó salida digital.CÓDIGO INSTRUCCIÓN: 11

DESCRIPCIÓN:

ACTIVA el relé indicado en el operando.La ejecución de esta instrucción no se debe asociar a ningunacondición lógica.Un bit activado mediante esta instrucción puede ser desactivado porel resultado de cualquier otra instrucción.Mantiene el nivel de la pila lógica inalterado (0).

# Ejemplo:

SET 101 ;Activación de la salida digital 101.

RELE 101

SET

Page 56: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES LÓGICAS Y DE SALTO IN-LO 16 99.01

RESET XXXX

NEMÓNICO: RESETOPERANDO XXXX: Relé interno, entrada ó salida digital.CÓDIGO INSTRUCCIÓN: 12

DESCRIPCIÓN:

DESACTIVA el relé indicado en el operando.La ejecución de esta instrucción no se debe asociar a ningunacondición lógica.Un bit desactivado mediante esta instrucción puede ser activado porel resultado de cualquier otra instrucción.Mantiene el nivel de la pila lógica inalterado (0).

# Ejemplo:

RESET 104 ;Desactivación de la salida digital 104.

RELE 104

RESET

Page 57: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES LÓGICAS Y DE SALTO IN-LO 17 99.01

JZ XXXX

NEMÓNICO: JZOPERANDO XXXX: Número o etiqueta de línea de programa.CÓDIGO INSTRUCCIÓN: 93.

DESCRIPCIÓN:

SALTA cuando el último nivel de pila lógica es ‘0'.En caso de que el nivel de la pila sea 1 continua el programa en lalínea siguiente.El operando es el número o etiqueta de línea destino del salto.Decrementa un nivel la pila lógica (-1).

# Ejemplo:

001 LD 8 ;Carga en pila lógica el estado de la entrada 8.002 JZ 100 ;Si el estado de la entrada 8 es ‘0', la ejecución del

;programa salta a la línea 100, si es 1 pasa a la línea;siguiente 003.

003 LD 16..... ..... ......... ..... ....100 LD 610

JZ

Page 58: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES LÓGICAS Y DE SALTO IN-LO 18 99.01

JNZ XXXX

NEMÓNICO: JNZOPERANDO XXXX: Número o etiqueta de línea de programa.CÓDIGO INSTRUCCIÓN: 94.

DESCRIPCIÓN:

SALTA cuando el último nivel de pila lógica es ‘1'.En caso de 0 pasa a la línea siguiente.El operando es el número o etiqueta de línea destino del salto.Decrementa un nivel la pila lógica (-1).

# Ejemplo:

001 LD 8 ;Carga en pila lógica el estado de la entrada 8.002 JNZ 100 ;Si el estado de la entrada 8 es ‘1', la ejecución del

;programa salta a la línea 100, si es 0 pasa a la línea;siguiente 003.

003 LD 2..... ..... ......... ..... ....100 LD 16

JNZ

Page 59: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES LÓGICAS Y DE SALTO IN-LO 19 99.01

# EJEMPLOS:

Para efectuar estos ejemplos deberemos comprobar las instrucciones y el direccionamiento de losrelés/registros de la memoria, disponibles en el equipo MIDA que estamos programando.

A.- Realizar el siguiente diagrama de contactos por lista deinstrucciones

RELE 1 RELE 2 RELE 111

RELE 3 RELE 4 RELE 5

LD 1 ;Carga en pila lógica el estado del relé 1.LD 2 ;Carga en pila lógica el estado del relé 2.LD 3 ;Carga en pila lógica el estado del relé 3.AND 4 ;AND lógica entre los relés 3 y 4.AND 5 ;AND lógica entre el resultado anterior y el relé 5.ORLD ;Cierra el bloque lógico OR entre el resultado

;anterior y el relé 2.ANDLD ;Cierra el bloque lógico realizando una AND entre

;el resultado anterior y el relé 1.OUT 111 ;El resultado anterior pasa al relé 111.END

Page 60: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES LÓGICAS Y DE SALTO IN-LO 20 99.01

B.- Realizar el siguiente diagrama de contactos por lista deinstrucciones

RELE 1 RELE 2 RELE 111

RELE 3 RELE 4 RELE 5

RELE 6 RELE 7

RELE 8 RELE 9

LD 1 ;Carga en pila lógica el estado del relé 1.LD 2 ;Carga en pila lógica el estado del relé 2.LD 3 ;Carga en pila lógica el estado del relé 3.LD 4 ;Carga en pila lógica el estado del relé 4.AND 5 ;AND lógica entre los reles 4 y 5.LD 6 ;Carga en pila lógica el estado del relé 6.AND 7 ;AND lógica entre los reles 6 y 7.ORLD ;Cierra el bloque lógico OR entre los resultados

;de las dos anteriores AND.ANDLD ;Cierra el bloque lógico realizando una AND entre

;el resultado anterior y el relé 3.ORLD ;Cierra el bloque lógico OR entre el resultado

;anterior y el relé 2.ANDLD ;Cierra el bloque lógico realizando una AND entre

;el resultado anterior y el relé 1.LD 8 ;Carga en pila lógica el estado del relé 8.ANDNT 9 ;AND entre la entrada 8 y la 9 negada

Page 61: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES LÓGICAS Y DE SALTO IN-LO 21 99.01

ORLD ;Cierra el bloque lógico OR entre el resultado;anterior y el ultimo estado de la pila;lógica (resultado del cierre del bloque lógico;realizado con una AND con el relé 1).

OUT 111 ;El resultado anterior pasa al relé 111.END

Los ejemplos que siguen a continuación los vamos a realizar tanto conel sistema de asignación numéricas, a las entradas y salidas (como enel caso de los ejemplos propuestos hasta ahora), y por el método deasignación de etiquetas a las entradas y salidas respectivamente.

C.- PARO-MARCHA CON EMERGENCIA.

Primero realizaremos el programa por medio de asignación denúmeros a las variables que vamos a manejar, en este caso tresentradas y una salida.

El funcionamiento del programa es el siguiente: Estando la seta deemergencia no pulsada entrada 1 (no olvidemos que el contacto físicode la seta de emergencia es NC, normalmente cerrado), por lo tanto laentrada 1 (relé 1) esta activada siempre que la seta de emergencia noeste pulsada, al pulsar el pulsador de marcha, (entrada 3 = relé 3), seactiva el contactor de puesta en marcha del motor (salida 101 = relé101), y al soltar este queda enclavado por el propio relé 101.Para desactivar la maniobra pulsamos el pulsador de paro (entrada 2= relé 2), abriendo el circuito, desconectándose en ese momento elcontactor del motor (salida 101 = relé 101), y al mismo tiempo sedesactiva el relé 101.

Al pulsar en cualquier momento la seta de emergencia(entrada 1 =relé 1), se desactiva toda la maniobra.

- Seta de emergencia. Entrada: 1- Pulsador de paro. Entrada: 2- Pulsador de marcha Entrada: 3- Contactor de accionamiento del motor. Salida: 101

Page 62: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES LÓGICAS Y DE SALTO IN-LO 22 99.01

RELE 1 RELE 2 RELE 3 RELE 101

RELE 101

LD 1 ;Entrada EmergenciaLD 3 ;Entrada MarchaOR 101 ;Entrada enclavamientoANDLDANDNT 2 ;Entrada ParoOUT 101 ;Salida activación - desactivación contactor motor

A continuación veremos el mismo ejemplo pero realizado medianteetiquetas, es decir, en vez de asignar números a las entradas ysalidas, lo realizaremos asignando etiquetas.

- Seta de emergencia. Entrada: 1- Pulsador de paro. Entrada: 2- Pulsador de marcha Entrada: 3- Contactor de accionamiento del motor. Salida: 101

RELE 1 RELE 2 RELE 3 RELE 101

RELE 101

Page 63: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES LÓGICAS Y DE SALTO IN-LO 23 99.01

;DEFINICION DE ETIQUETAS;Entradas digitales.;emerg equ 1 ;Emergencia.paro equ 2 ;Paromarcha equ 3 ;Marcha;;Salidas digitales.;motor equ 101 ;Contactor Motor;

LD emerg ;Entrada EmergenciaLD marcha ;Entrada MarchaOR motor ;EnclavamientoANDLDANDNT paro ;Entrada ParoOUT motor ;Salida activación - desactivación

;contactor motor

Page 64: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES LÓGICAS Y DE SALTO IN-LO 24 99.01

.

Page 65: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES DE DETECCIÓN FLANCOS IN-FL 1 99.01

FLANC XXXX YYYY

NEMÓNICO: FLANCOPERANDO XXXX: Número de reléOPERANDO YYYY: Registro interno de estado del flanco (0 a 99).CÓDIGO INSTRUCCIÓN: 36

DESCRIPCIÓN:

Detecta un flanco de subida en un registro determinado de tipo relé.El operando XXXX es el relé sobre el cual se detectara el flanco.El operando YYYY es el registro interno de flanco a utilizar (noaccesible por el usuario).Retorna sobre la pila lógica un "1" si ha detectado un flanco desubida y un "0" en caso contrario.Cada vez que se llama a la función FLANC se almacena sobre unregistro interno de estado (operando YYYY) el contenido del reléapuntado por el operando XXXX. Si este registro cambia del estado"0" al estado "1", la función retorna un "1" sobre pila lógica, en casocontrario, un "0".Incrementa la Pila Lógica en 1.

# Ejemplo:

Para efectuar estos ejemplos deberemos comprobar las instrucciones y el direccionamiento de losrelés/registros de la memoria, disponibles en el equipo MIDA que estamos programando.

FLANC 0 1 ;Detecta si hay flanco de subida en la;entrada digital 0.

JZ ini1 ;Si no hay flanco de subida, salta a “ini1”,;de lo contrario continua el programa.

INC 500 1 ;Incrementa en 1 el contenido del registro;entero 500.

ini1 FLANC 1 2 ;Detecta si hay flanco de subida en la;entrada digital 1.

JZ ini2 ;Si no hay flanco de subida, salta a “ini2”,;de lo contrario continua el programa.

FLANC

Page 66: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES DE DETECCIÓN FLANCOS IN-FL 2 99.01

INC 501 1 ;Incrementa en 1 el contenido del registro;entero 501.

ini2 CLEAR ;Borra el buffer intermedio y sitúa el;puntero en la primera posición.

LOC 0 ;Sitúa el puntero en la posición 0.DISRI 500 2 ;Copia en el buffer intermedio el contenido

;del registro 500 con 2 dígitos.LOC 16 ;Sitúa el puntero en la posición 16.DISRI 501 2 ;Copia en el buffer intermedio el contenido

;del registro 501 con 2 dígitos.COM 0 ;Visualiza el contenido del buffer

;intermedio en el display LCD.END ;Fin de programa.

.

Page 67: Manual Tecnico de Programacion Plc PDF

TEMPORIZADORES Y CONTADORES IN-TC 1 99.01

Los equipos MIDA disponen de instrucciones para temporizar ycontar impulsos (TIM, TIMR, CNT y CNTR).

A continuación se describe el modo de programación de estetipo de instrucciones.

! TEMPORIZADORES

Los temporizadores de los equipos MIDA son a la conexión ydecrementales, es decir, que cuando transcurre el tiempopreseleccionado transfieren un estado lógico ‘1' a la pila y el tiempo depreseleccionado se realiza en décimas de segundo.Empezaremos primero viendo que es una instrucción detemporización, para seguir, con los tipos de instrucciones que poseenlos equipos MIDA y finalmente veremos como deberemos de utilizardichas instrucciones.

Una instrucción de temporización realiza la misma función queun temporizador de hardware. Dicha instrucción consta de dosoperandos. El primer operando nos indica el temporizador que vamosa seleccionar, pudiendo realizar dicha selección, bien por medio de laasignación del número de temporizador a utilizar o bien mediante laasignación de una etiqueta. (Ver ejemplos)

El segundo operando es el valor numérico de la temporización,este se carga en el registro RAM de temporización que es el registrosobre el que se ejecuta el decremento del valor numérico asignadoexpresado en décimas de segundo. El registro del primer operando,indica el número del registro RAM en donde se carga el valor atemporizar en el segundo operando, el cual no es accesible por eltemporizador más que para la recarga cuando se produce la condiciónpertinente.

Cuando el contenido de este registro RAM perteneciente altemporizador es cero, el tiempo programado ya ha pasado y por lotanto la temporización ha terminado, activándose un 1 en la pila lógica.Si la temporización no ha finalizado se activa un cero en la pila lógica.

Este registro de temporización es uno normal accesible por elprograma MIDA, por lo tanto puede tratarse aritméticamente (sumar,restar,..) compararse con constantes ó con el contenido de otrosregistros, modificarse, visualizarse, etc.

Page 68: Manual Tecnico de Programacion Plc PDF

TEMPORIZADORES Y CONTADORES IN-TC 2 99.01

Recordar que el valor de este registro es decremental, por loque representa las décimas de segundo para llegar a cero, no eltiempo transcurrido. Para conocer el tiempo transcurrido hay querealizar la siguiente operación aritmética:

Valor Preselección – Registro de Temporización = Tiempo Transcurrido.

Señalar que este valor numérico que se asigna al segundooperando puede efectuarse bien, de forma directa o de formaindirecta. La forma directa consiste en introducir en el segundooperando el valor numérico de la temporización mientras que de formaindirecta asignamos al segundo operando un registro entero en dondese encuentra el valor de la temporización. Para introducir el valor de latemporización de forma directa utilizaremos la instrucción TIM,mientras que para realizarla de forma indirecta utilizaremos lainstrucción TIMR.

Tal y como hemos explicado, la instrucción TIM, su preselecciónes una constante escrita en el mismo programa, con lo cual no nospermite variar de una temporización a otra, mientras que la instrucciónTIMR, la preselección es el contenido de un registro entero (16 bits).Por lo que la programación del tiempo puede variar pudiéndoseemplear el mismo temporizador, para realizar diferentestemporizaciones dentro de un mismo programa.

Llegados ha este punto, vamos ha explicar como debemosutilizar una instrucción de temporización.

Para realizar una función de temporización necesitaremos treselementos tal y como vemos en el siguiente esquema, un relé deentrada, un temporizador y finalmente un relé de salida:

Relé_Entrada Temporizador Relé_Salida

Page 69: Manual Tecnico de Programacion Plc PDF

TEMPORIZADORES Y CONTADORES IN-TC 3 99.01

LD Relé_entradaTIM Temporizador Valor de preselecciónOUT Relé_salida

La función del relé de entrada es la de autorizar o no, la puestaen marcha el temporizador. Este relé puede tener dos estados lógicos1 y 0. El estado 1 corresponde al estado de activado y por el contrarioel estado cero corresponde al estado de desactivado. Con un 1 lógicoactivamos el temporizador.

El temporizador es el que realiza propiamente la temporizaciónuna vez que el relé de entrada lo ha activado. Este se activa medianteun estado lógico 1. Debemos de tener en cuenta que una vez el reléde entrada ha activado el temporizador, aunque luego este relé pase acero, el temporizador seguirá efectuando la temporización. Mientras latemporización no ha finalizado en la salida del temporizador existe uncero lógico, una vez ha concluido este, en la salida del temporizadoraparece un 1 lógico.

El relé de salida es sobre el cual el temporizador descarga elestado lógico resultado de la temporización (‘1' si ha terminado eltiempo, ‘0' sino lo ha hecho). También señalar que el relé de fin detiempo puede sustituirse, por ejemplo, por un salto condicional, JZ óJNZ, puesto que con estas instrucciones también se consiguedescargar el estado lógico que transfiere el temporizador a la pila.

También existe un relé de final de temporización que “sigue” elestado del temporizador por interrupciones de software. Este relé tienela misma dirección que el temporizador y su estado es ‘0' si el registrodel temporizador es diferente de cero (temporización no terminada) ó‘1' si el registro del temporizador es cero (temporización terminada).

Las instrucciones con que contamos para realizar latemporización en los equipos MIDA son TIM y TIMR. La diferenciaexistente entre ambas es la siguiente: en la instrucción TIM eltemporizador se recarga su preselección que se encuentra contenidaen el programa como constante, mientras que en la instrucción TIMRse recarga mediante un registro interno cualquiera, TIMR).

Recordar que el valor máximo a temporizar es 3276,7 seg. Noobstante si precisáramos temporizadores mayores ver capitulo decontadores.

Page 70: Manual Tecnico de Programacion Plc PDF

TEMPORIZADORES Y CONTADORES IN-TC 4 99.01

Por ultimo señalar que para que una instrucción detemporización funcione es necesario que se cumplan los siguientesrequisitos:

- Haya sido recargado a su preselección.- Haya sido arrancado mediante la ejecución del código de

programa.

A continuación describimos las instrucciones de temporización:

Page 71: Manual Tecnico de Programacion Plc PDF

TEMPORIZADORES Y CONTADORES IN-TC 5 99.01

TIM XXXX YYYY

NEMÓNICO: TIMOPERANDO XXXX: Dirección del temporizador.OPERANDO YYYY: Constante que indica la preselección del

temporizador.CÓDIGO INSTRUCCIÓN: 13

DESCRIPCIÓN:

Carga en pila lógica un estado ‘1' tras un TIEMPO programado.El operando XXXX es la dirección del temporizador a utilizar.El operando YYYY es la constante que indica la preselección deltemporizador, expresada en décimas de segundo.Si la preselección del temporizador tiene contenido cero, la “salida”de la instrucción TIM es ‘1'.Incrementa un nivel la pila lógica (+1).

RELÉAUTORIZACIÓN

REG.TEMPORIZACIÓN

(RAM)

RELÉ FIN DETIEMPO óRELÉ DESALIDA

ESTADO

‘0' Reg =Preselección ≠ 0

‘0' RECARGA

‘1' Reg = Reg - 1 ≠ 0 ‘0' Temporizando

‘1' Reg = Reg - 1 = 0 ‘1' FIN DE TIEMPO

‘0' ó ‘1’ Reg = 0 ‘1' Registro detemporización es

cero

TIM

Page 72: Manual Tecnico de Programacion Plc PDF

TEMPORIZADORES Y CONTADORES IN-TC 6 99.01

# Ejemplo:

LD 1 ;Carga el estado de la entrada digital 1en pila;lógica.

TIM 250 100 ;Temporizador 250 programado con 100 décimas;de segundo.

OUT 101 ;Al cabo de 10s (100 décimas de segundo) que la;entrada 1 se active, la salida101 se activará;(también se activa por interrupciones el relé;interno 250).

RELE 1 TEMPORIZADOR 250 RELE 101

100

Page 73: Manual Tecnico de Programacion Plc PDF

TEMPORIZADORES Y CONTADORES IN-TC 7 99.01

TIMR XXXX YYYY

NEMÓNICO: TIMROPERANDO XXXX: Dirección del temporizador.OPERANDO YYYY: Registro entero.CÓDIGO INSTRUCCIÓN: 21

DESCRIPCIÓN:

Carga en pila lógica un estado ‘1' tras un TIEMPO programado.El operando XXXX es la dirección del temporizador a utilizar.El operando YYYY es el registro entero que contiene la constanteque indica la preselección del temporizador, expresada en décimasde segundo.Si el contenido del registro entero tiene valor cero, la “salida” de lainstrucción TIMR es ‘1'.Incrementa un nivel la pila lógica (+1)

RELÉAUTORIZACIÓN

REG.TEMPORIZACIÓN

(RAM)

RELÉ FINDE TIEMPOó RELÉ DE

SALIDA

ESTADO

‘0' Reg =Preselección ≠ 0

‘0' RECARGA

‘1' Reg = Reg - 1 ≠ 0 ‘0' Temporizando

‘1' Reg = Reg - 1 = 0 ‘1' FIN TIEMPO

‘0' ó ‘1’ Reg = 0 ‘1' Registro detemporización es cero

TIMR

Page 74: Manual Tecnico de Programacion Plc PDF

TEMPORIZADORES Y CONTADORES IN-TC 8 99.01

# Ejemplo:

MOVCI 230 ;Carga en la pila aritmética la constante;230

STOI 615 ;Almacena el contenido de la pila;aritmética en el registro entero 615

LD 1 ;Carga el estado de la entrada digital 1 en;pila lógica.

TIMR 280 615 ;Temporizador 280 programado con el;contenido del registro entero 615 (230;décimas de segundo)

OUT 101 ;La salida 101 al cabo de 23s (230;décimas de segundo) se activa. (también;se activa por interrupciones el relé interno;280).

RELE 1 TEMPORIZADOR 280 RELE 101

230

Page 75: Manual Tecnico de Programacion Plc PDF

TEMPORIZADORES Y CONTADORES IN-TC 9 99.01

! CONTADORES

Para comenzar este apartado diremos que los contadores delos equipos MIDA son a la conexión (y decrementales), es decir, quecuando termina el contaje de impulsos preseleccionado transfieren unestado lógico ‘1' a la pila.

Dicho esto empezaremos por comentar que es una instrucciónde contador, para continuar con los diferentes tipos de instruccionespara contadores que poseen los equipos MIDA, y finalmente veremoscomo deberemos de utilizar dichas instrucciones.

Empecemos por comentar que una instrucción de contadorrealiza la misma función que un contador de hardware. Dichainstrucción consta de dos operandos. El primer operando indica elcontador a utilizar, es decir, el contador que vamos a seleccionar,pudiendo realizar dicha selección, bien por medio de la asignación delnúmero del contador a utilizar o bien mediante la asignación de unaetiqueta. (Ver ejemplos).

El segundo operando es el valor numérico del contador, este secarga en el registro RAM del contador que es el registro sobre el quese efectúa el decremento del valor numérico asignado. Este registroRAM, es el indicado primer operando, y el valor que contendrá es elindicado por el segundo operando.

Cuando el contenido de este registro RAM perteneciente alcontador es igual a cero, el contador ha llegado al final, ha concluido lacuenta, activándose un 1 en la pila lógica. Si la cuenta a realizar noha finalizado se activa un cero en la pila lógica.

Este registro del contador es uno normal accesible por elprograma MIDA, por lo tanto puede tratarse aritméticamente (sumar,restar,..) compararse con constantes ó con el contenido de otrosregistros, modificarse, visualizarse, etc.

Señalar que este valor numérico que se asigna al segundooperando es decremental y que puede efectuarse bien, de formadirecta o de forma indirecta. La forma directa consiste en introducir enel segundo operando el valor numérico de la cuenta a realizar,mientras que de forma indirecta asignamos al segundo operando unregistro entero en donde se encuentra el valor de la cuenta quequeremos realizar. Para introducir el valor de la cuenta de forma

Page 76: Manual Tecnico de Programacion Plc PDF

TEMPORIZADORES Y CONTADORES IN-TC 10 99.01

directa utilizaremos la instrucción CNT, mientras que para realizarla deforma indirecta utilizaremos la instrucción CNTR.

Las instrucciones de contadores con que cuentan los equiposMIDA son CNT y CNTR cuyo funcionamiento en líneas generales es eldescrito anteriormente. También cabe resaltar que tal y como hemosexplicado en líneas anteriores, la instrucción CNT, su preselección esuna constante escrita en el mismo programa, con lo cual no nospermite variar de una cuenta a otra, mientras que la instrucción CNTR,la preselección es el contenido de un registro entero (16 bits). Por loque la programación del tiempo puede variar en función a unaintroducción por teclado, a un resultado aritmético, a un contaje deimpulsos y modificarse a voluntad a cada una de las temporizaciones.

Llegados ha este punto, vamos ha explicar como debemosutilizar una instrucción de contador.

Para realizar una función de contador necesitaremos cuatroelementos tal y como vemos en el siguiente esquema, un relé deautorización, un relé de impulsos, un contador y finalmente un relé desalida:

Relé_AutorizaciónRelé Salida

Relé_de_Impulsos Contador

LD Relé_autorizaciónLD Relé de impulsosCNT Contador preselecciónOUT Relé_salida

Antes de explicar la función de cada uno de estos elementospermitamos hacer un paréntesis para explicar brevemente lasentradas con que cuenta un contador. En líneas anteriores hemoscomentado que una instrucción de contador es idéntica a un contador

Page 77: Manual Tecnico de Programacion Plc PDF

TEMPORIZADORES Y CONTADORES IN-TC 11 99.01

de hardware, es decir, consta de una entrada que sirve para autorizaro no la cuenta a efectuar y que a su vez sirve también para realizar unRESET del mismo( puesta a cero del contador). Esta es la entradaque vemos identificada como RST en el esquema anterior actuandocomo relé para cargar y preseleccionar el contador.

La otra entrada con el que cuenta el contador es la de entradade impulsos, que es por la que se realiza la cuenta de impulsos y quevemos en el esquema anterior referenciada como CNT. Por ultimocuenta con una salida por la cual envía una señal lógica “1” o “0”según sea el estado en que se encuentre el contador, es decir, estado“1” si ha finalizado la cuenta, “0” si no lo ha hecho.

Dicho esto pasaremos a explicar el esquema anterior. Lafunción del relé de autorización de entrada es la de autorizar o no, lapuesta en marcha del contador. Este puede tener dos estados lógicos1 y 0. El estado 1 corresponde al estado de activado y por el contrarioel estado cero corresponde al estado de desactivado. Con un 1 lógicoactivamos el contador.

El relé de impulsos es la entrada por la que entran los impulsosa descontar del valor preseleccionado en el contador hasta llegar acero.

El contador es el que realiza propiamente la cuenta una vez queel relé de entrada lo ha activado. Este se activa mediante un estadológico 1. Mientras la cuenta no ha finalizado en la salida del contadorexiste un cero lógico, una vez ha concluido esta, en la salida deltemporizador aparece un 1 lógico.

El relé de salida es sobre el cual el contador descarga el estadológico resultado de la cuenta efectuada (‘1' si ha terminado la cuenta,‘0' sino lo ha hecho). También señalar que el relé de fin de cuentapuede sustituirse, por ejemplo, por un salto condicional, JZ ó JNZ,puesto que con estas instrucciones también se consigue descargar elestado lógico que transfiere el contador a la pila.

Existe un relé de final de cuenta que “sigue” el estado delcontador por interrupciones de software. Este relé tiene la mismadirección que el contador y su estado es ‘0' si el registro del contadores diferente de cero (cuenta no terminada) ó ‘1' si el registro delcontador es cero (cuenta terminada).

Page 78: Manual Tecnico de Programacion Plc PDF

TEMPORIZADORES Y CONTADORES IN-TC 12 99.01

Las instrucciones con que contamos para realizar loscontadores en los equipos MIDA son CNT y CNTR. La diferenciaexistente entre ambas es la siguiente: en la instrucción CNT elCONTADOR se recarga su preselección que se encuentra contenidaen el programa como constante, mientras que en la instrucción CNTRse recarga mediante un registro interno cualquiera).

Por ultimo comentar que es posible utilizar los contadores comotemporizadores si se utilizan relés de bases de tiempo como entradasde impulsos:

LD 400LD R_BASE ;El contador contará los impulsos de la

;base tiempos utilizadaCNT 200 Cont_tiempoOUT 401

Como el contador cuenta los flancos ascendentes del R_BASEse tiene que la precisión de este tipo de temporización es del doble delde la base de tiempos empleada.

RELE DE IMPULSOS BASE DE TIEMPOSOBTENIDA

MÁXIMO TIEMPOTEMPORIZABLE

10ms 20ms 655.34s (11min)

100ms 200ms 6553.4s (109min)

.5s 1s 546min (9h)

1s 2s 1092min (18h)

10s 3s 182h (7.5días)

1 min. 2 min. 32767min (1365 días)

Por lo que se puede realizar el contaje de tiempo mediante unabase de tiempos “fabricada” por el mismo programador para obtenertemporizaciones mayores se puede encadenar varios contadores,encargándose uno de ellos de acumular por ejemplo horas, días.

Describimos a continuación las instrucciones de contador:

Page 79: Manual Tecnico de Programacion Plc PDF

TEMPORIZADORES Y CONTADORES IN-TC 13 99.01

CNT XXXX YYYY

NEMÓNICO: CNTOPERANDO XXXX: Dirección del contador.OPERANDO YYYY: Constante que indica la preselección del

contador.CÓDIGO INSTRUCCIÓN: 14

DESCRIPCIÓN:

Carga en pila lógica un estado ‘1' tras un CONTAJE programado.El operando XXXX es la dirección del contador a utilizar.El operando YYYY es la constante que indica la preselección delcontador, número de impulsos a contar.Si el preselección del contador tiene contenido cero, la “salida” de lainstrucción CNT es ‘1'.Incrementa un nivel la pila lógica. (+1).

RELÉINICIO

ENT.IMPULSO

REG. CONTAJE(RAM)

RELÉSALIDA óFINAL DECONTAJE

ESTADO

‘1' X Reg=Preselección ‘0' RECARGA

‘0' ‘0' , ‘1' Reg. = Reg - 1 ≠ 0 ‘0' CONTANDO

‘0' ‘0' , ‘1' Reg. = Reg - 1 = 0 ‘1' FIN CONTAJE

‘0' ó ‘1’ ‘X’ Reg. = 0 ‘1' Reg. de contaje escero

CNT

Page 80: Manual Tecnico de Programacion Plc PDF

TEMPORIZADORES Y CONTADORES IN-TC 14 99.01

# Ejemplo:

LD 1 ;Carga el estado de la entrada digital 1 en pila;lógica (inicio de cuenta)

LD 2 ;Entrada de impulsos de cuenta.CNT 200 100 ;Cuenta de 100 impulsos.OUT 101 ;Cuando hayan entrado 100 impulsos por la

;entrada 2, la salida 101 se activa (también se;activa por interrupciones el relé interno 200).

RELE 1 CONTADOR 200RELE 101

100

RELE 2

Page 81: Manual Tecnico de Programacion Plc PDF

TEMPORIZADORES Y CONTADORES IN-TC 15 99.01

CNTR XXXX YYYY

NEMÓNICO: CNTROPERANDO XXXX: Dirección del contador.OPERANDO YYYY: Registro entero.CÓDIGO INSTRUCCIÓN: 22

DESCRIPCIÓN:

Carga en pila lógica un estado ‘1' tras un CONTAJE programado.El operando XXXX es la dirección del contador a utilizar.El operando YYYY es el registro entero que contiene la constanteque indica la preselección del contador, número de impulsos acontar.Si el contenido del registro entero tiene valor cero, la “salida” de lainstrucción CNTR es ‘1'.Decrementa un nivel la pila lógica (-1).

RELÉINICIO

ENT.IMPULSO

REG. CONTAJE(RAM)

RELÉSALIDA óFINAL DECONTAJE

ESTADO

‘1' X Reg=Preselección ‘0' RECARGA

‘0' ‘0' , ‘1' Reg. = Reg - 1 ≠ 0 ‘0' CONTANDO

‘0' ‘0' , ‘1' Reg. = Reg - 1 = 0 ‘1' FIN CONTAJE

‘0' ó ‘1’ ‘X’ Reg. = 0 ‘1' Reg. de contaje escero

CNTR

Page 82: Manual Tecnico de Programacion Plc PDF

TEMPORIZADORES Y CONTADORES IN-TC 16 99.01

# Ejemplo:

MOVCI 100 ;Carga en la pila aritmética la constante;100

STOI 500 ;Almacena el contenido de la pila;aritmética en el registro entero 500

LD 1 ;Carga el estado de la entrada digital 1 en;pila lógica (permisión de cuenta)

LD 2 ;Entrada de impulsos de cuenta.CNTR 200 500 ;Cuenta de 100 impulsos (contenido de

;registro entero 500), por la entrada digital;2 e iniciándose cuando la entrada 1 pasa;a estado ‘0'.

OUT 101 ;Cuando hayan entrado 100 impulsos, la;salida 101 se activa (también se activa por;interrupciones el relé interno 200).

RELE 1 CONTADOR 200RELE 101

100

RELE 2

Page 83: Manual Tecnico de Programacion Plc PDF

TEMPORIZADORES Y CONTADORES IN-TC 17 99.01

# EJEMPLOS:

Para efectuar estos ejemplos deberemos comprobar las instrucciones y el direccionamiento de losrelés/registros de la memoria, disponibles en el equipo MIDA que estamos programando.

A.- Puesta en marcha y reset de un temporizador.

El funcionamiento de este ejemplo es el siguiente: una vez activada laentrada 1 y siempre que la entrada 2 no este activada, hasta pasadoun tiempo predeterminado por el temporizador 250 la salida 104 nopasara al estado "1" (ON). Si pulsamos la entrada 2 se produce unreset en el temporizador y la salida 104 si esta en "1" pasara a "0".

LD 1 ;Puesta en marcha del;temporizador

OR 400ANDNT 2 :Puesta a cero de la salida 104 y

;reset del temporizador.OUT 400 ;Salida digital controladaLD 400TIM 250 10 ;Tiempo de permanencia en ONOUT 104 ;Salida digital temporizada

B.- Puesta en marcha y reset de un temporizador fijando el tiempo deeste por un registro entero.

El funcionamiento de este ejemplo es mismo que el anterior, pero eneste caso en vez de utilizar la instrucción TIM en donde se marca eltiempo a temporizar directamente (segundo operando), hemosutilizado la TIMR en donde el tiempo a temporizar se encuentraalmacenado en un registro interno de tipo entero, apuntado por elsegundo operando, tal y como se describe en los comentariosadjuntos del programa ejemplo.

MOVCI 20 ;Carga en pila aritmética la;constate entera 20

STOI 300 ;Almacena dicha constante en el;registro entero 300.

Page 84: Manual Tecnico de Programacion Plc PDF

TEMPORIZADORES Y CONTADORES IN-TC 18 99.01

LD 1 ;Puesta en marcha del;temporizador

OR 400ANDNT 2 :puesta a cero de la salida 104 y

;reset del temporizador.OUT 400 ;Salida digital controladaLD 400TIMR 250 300 ;Tiempo de permanencia en ONOUT 104 ;Salida digital temporizada

C.- Generador de impulsos.

Señalar que la frecuencia de la salida impulsos estará en función delos tiempos que se programen en los temporizadores.

LD 1 ;puesta en marcha generador de;impulsos

LD 400ORLDANDNT 2 ;paro generador de impulsosOUT 400 ;autorización puesta en marcha

;generador de impulsosLD 400ANDNT 410 ;reset del temporizador ONTIM 250 10 ;temporizador generado del estado

;ONOUT 405LD 405AND 104 ;reset del temporizador OFFTIM 251 10 ;temporizador generador del estado

;OFFOUT 410LD 405OUT 104

Page 85: Manual Tecnico de Programacion Plc PDF

TEMPORIZADORES Y CONTADORES IN-TC 19 99.01

D.- Contador de piezas

Se trata de contar 10 piezas y una vez se han contado dichas piezasavisar que se ha finalizado la cuenta.

LD 1 ;Puesta en marcha contador.OR 400ANDNT 2 ;Paro contador y reset.OUT 400 ;Autorización contador.LDNT 400LD 5 ;Entrada contador.CNT 200 10 ;Contador con valor de cuenta a 10.OUT 104 ;Salida señal aviso fin de cuenta.

Page 86: Manual Tecnico de Programacion Plc PDF

TEMPORIZADORES Y CONTADORES IN-TC 20 99.01

.

Page 87: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES ARITMETICAS IN-AR 1 99.01

Las funciones aritméticas que se pueden realizar con lasinstrucciones de que disponen los equipos MIDA son las querelacionamos a continuación:

• Suma, resta, multiplicación y división, en formatos entero ycoma flotante (operamos con registros de 16 bits y 32 bitsrespectivamente).

• Almacenamiento y lectura del contenido de los registrosenteros y en coma flotante.

• Conversión de datos enteros en coma flotante.• Conversión de datos en coma flotante en formato entero, con

redondeo.

El diagrama de flujo describe la forma derealizar operaciones aritméticas.

Para realizar cualquier operaciónaritmética, las instrucciones manipulan losdatos tanto enteros como en coma flotante através de la pila aritmética.

En todas las operaciones la forma deoperar es la misma: por cadenas polacas conacumulador, utilizando la pila aritmética comomemoria intermedia. Puede operarse concontenidos de registros ó constantesnuméricas tanto en formato entero ó en comaflotante. Pero los datos empleados en cadaoperación deben de ser del mismo formato, esdecir, debe observarse la concordancia dedatos en todas las operaciones que seefectúen. Por ello, existen instrucciones deconversión de datos enteros a coma flotante yviceversa.

INICIO

Carga un datoen la pilaaritmética

Carga un datoen la pilaaritmética

Realiza laoperaciónaritmética

resultado enpila

Page 88: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES ARITMETICAS IN-AR 2 99.01

! ALMACENAMIENTO Y LECTURA DE VALORES A REGISTROS.

Para asignar valores a registros, enteros ó en coma flotante sedebe realizar a través de la pila aritmética.

Un dato, ya sea entero ó coma flotante, debe ser introducido enla pila aritmética para luego ser almacenado en un registro del formatocorrespondiente.

Para asignar el dato cte. al registro reg se debe realizar uno delos siguientes códigos de programa dependiendo del formato delregistro.

MOVCI cteSTOI reg reg = cte

SETRI reg cte reg = cteMOVCF cteSTOF reg reg = cte

Todo almacenamiento de un dato en un registro lleva implícitouna lectura anterior ya sea de una constante ó del contenido de otroregistro.

Así, en los códigos descritos anteriormente, las instruccionesMOVxx son de lectura y las STOxx son de almacenamiento.

La instrucción SETRI no utiliza la pila aritmética.

Las instrucciones disponibles para lectura y escritura de losregistros son:

MOVRI MOVRF MOVIF STOF SETRIMOVCI MOVCF STOI STOFXMOVIX MOVFX STOIX STOFI

Page 89: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES ARITMETICAS IN-AR 3 99.01

! OPERACIONES ARITMÉTICAS CON DATOS ENTEROS (16 bitscon signo).

Las operaciones aritméticas que pueden realizarse con lasinstrucciones disponibles en los equipos MIDA son:

• Suma• Resta• Multiplicación• División.

Todas estas operaciones se realizan con la precisión propia delos datos enteros de 16 bits con signo; es decir, sin tener en cuentadecimales y con una capacidad de cálculo de:

-32768 a 32767 (215 * 215 -1).

Dato entero de 16 bits con signo

SS b b b b b b b b b b b b b b b

$ BYTE DE DATOS BYTE DE DATOS

(La flecha indica el bit de signo).

Las instrucciones disponibles son:

ADDI SUBI DIVIADDC MULI DIVCSUBI MULC INC

Page 90: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES ARITMETICAS IN-AR 4 99.01

Las operaciones pueden realizarse entre contenidos deregistros enteros, entre constantes ó bien entre ambos, tal como sedescribe en la tabla siguiente:

MOVRI AMOVRI BADDISTOI C

regC = regA + regB

MOVRI AMOVCI BSUBISTOI C

regC = regA - B

MOVCI AMOVRI BMULISTOI C

regC = A * regB

MOVCI AMOVCI BDIVISTOI C

regC = A / B

MOVRI AMOVRI BMOVRI CADDISUBISTOI D

Reg D = A+B-C

Page 91: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES ARITMETICAS IN-AR 5 99.01

Cuando se trata de operar el contenido de un registro con unaconstante, se pueden utilizar las siguientes instrucciones para“ahorrar” líneas de programa:

MOVRI AADDC BSTOI C

regC = regA + B

MOVRI ASUBC BSTOI C

regC = reg A -B

MOVRI AMULC BSTOI C

regC = regA * B

MOVRI ADIVC BSTOI C

regC = regA / B

MOVRI AMOVRI BADDC CDIVISTOI D

regC = reg B+C / A

Page 92: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES ARITMETICAS IN-AR 6 99.01

! OPERACIONES ARITMÉTICAS CON DATOS EN COMAFLOTANTE (32 bits IEEE).

Las operaciones aritméticas que pueden realizarse con lasinstrucciones disponibles en los equipos MIDA son:

• Suma• Resta• Multiplicación• División.

Todas estas operaciones se realizan con la precisión propia delos datos en coma flotante de 32 bits en formato IEEE pero con unacapacidad de representación en pantalla y de transmisión por lospuertos de comunicaciones de 16 cifras significativas.

La capacidad de cálculo es de 3.4*10 38 a -3.4*1038 ( pero el númeromáximo visualizable es de 16 cifras).

Dato en coma flotante de 32 bits IEEE

S Exponente Mantisa

$ EXPONENTE(8 bits)

MANTISA(23 bits)

(La flecha indica el bit de signo)

Las instrucciones de que disponen los equipos MIDA para estetipo de operaciones son las siguientes:

ADDF SUBF MULF DIVF

Page 93: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES ARITMETICAS IN-AR 7 99.01

Las operaciones pueden realizarse entre contenidos deregistros, entre constantes ó bien entre ambos, tal como se describeen la tabla siguiente:

MOVRF AMOVRF BADDFSTOF C

RegC = regA + regB

MOVRF AMOVCF BSUBFSTOF C

RegC = regA – B

MOVCF AMOVRF BMULFSTOF C

RegC = A * regB

MOVCF AMOVCF BDIVFSTOF C

RegC = A / B

MOVCF AMOVCF BMOVCF CMULFDIVSTOI D

Reg D = B * C / A

Page 94: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES ARITMETICAS IN-AR 8 99.01

! CONVERSIÓN DE TIPOS DE DATOS.

El equipo dispone de instrucciones para convertir datos enterosen coma flotante y viceversa.

La conversión de datos enteros en coma flotante se realizaa través de la pila aritmética mediante la instrucción MOVIF.

Las instrucciones de conversión pasan a pila aritmética elcontenido de un registro entero convirtiéndolo en coma flotante. Eldato queda convertido en uno de formato de coma flotante de 32 bits,de esta manera, poder operar con datos de esta precisión.

La conversión de datos en coma flotante en enteros serealiza transportando desde la pila un dato en coma flotante yalmacenándolo en un registro de formato entero mediante lainstrucción STOFI.

Al almacenarlo, este dato se redondea por defecto ó exceso,según indica la siguiente tabla:

Hasta XX.4999 Por defecto XX

Desde XX.5000 Por exceso XX + 1

Así, por ejemplo si el dato es 23.34 el resultado es 23. Por elcontrario, si este dato es 23.68 el resultado es 24.

Page 95: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES ARITMETICAS IN-AR 9 99.01

El dato queda convertido en un formato entero de 16 bits para,de esta manera, poder operar con datos de esta precisión

! INSTRUCCIONES RELACIONADAS

Antes de comenzar con la descripción de cada una de lasinstrucciones que componen este grupo, adjuntamos una tabla endonde se encuentran relacionadas todas ellas.

MOVRI MOVRF ADDI ADDFMOVCI MOVCF SUBI SUBFMOVIX MOVFX MULI MULFSETRI DIVI DIVF

ADDCSTOI STOF SUBC

STOIX STOFX MULCMOVIF STOFI DIVC INC

Describimos a continuación las instrucciones de este grupo:

Page 96: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES ARITMETICAS IN-AR 10 99.01

MOVRI XXXX

NEMÓNICO: MOVRIOPERANDO XXXX: Registro entero de 16 bits.CÓDIGO INSTRUCCIÓN: 33

DESCRIPCIÓN:

CARGA en pila aritmética el contenido del registro entero.El operando es la dirección del registro entero cuyo contenido setransfiere a la pila aritmética.Incrementa un nivel la pila aritmética (+1).

# Ejemplo:

MOVRI 300 ;Carga en la pila aritmética el contenido del;registro entero 300, por ejemplo 1378.

MOVRI

Page 97: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES ARITMETICAS IN-AR 11 99.01

MOVCI XXXX

NEMÓNICO: MOVCIOPERANDO XXXX: Constante entera de 16 bits.CÓDIGO INSTRUCCIÓN: 32

DESCRIPCIÓN:

CARGA en pila aritmética una constante en formato entero.El operando es la constante entera, introducida en el programa endecimal, que se transfiere a la pila aritmética.Incrementa un nivel la pila aritmética (+1)

# Ejemplo:

MOVCI 338 ;Carga en pila aritmética la constante entera 338STOI 500 ;Almacena el contenido de la pila aritmética en el

;registro entero 500

MOVCI

Page 98: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES ARITMETICAS IN-AR 12 99.01

STOI XXXX

NEMÓNICO: STOIOPERANDO XXXX: Registro entero de 16 bits.CÓDIGO INSTRUCCIÓN: 34

DESCRIPCIÓN:

ALMACENA en un registro entero el último dato de la pilaaritmética.El operando es el registro entero donde se almacena el último datode la pila aritmética.Decrementa un nivel la pila aritmética (-1).

# Ejemplo:

MOVCI -152 ;Carga en la pila aritmética la constante -152STOI 800 ;Almacena el contenido de la pila aritmética en el

;registro entero 800

STOI

Page 99: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES ARITMETICAS IN-AR 13 99.01

SETRI XXXX YYYY

NEMÓNICO: SETRIOPERANDO XXXX: Registro entero de 16 bits.OPERANDO YYYY: Constante de formato entero.CÓDIGO INSTRUCCIÓN: 35

DESCRIPCIÓN:

ALMACENA en el registro entero del primer operando la constanteindicada por el segundo operando.El operando XXXX es la dirección del registro entero en donde seva a cargar el dato.El operando YYYY es la constante entera que va a almacenarse enel registro entero apuntado por el operando XXXX.Mantiene inalterado el nivel la pila aritmética. (0)

# Ejemplo:

SETRI 300 3200 ;Almacena el dato 3200 en el registro;entero 300.

SETRI

Page 100: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES ARITMETICAS IN-AR 14 99.01

MOVIX XXXX

NEMÓNICO: MOVIXOPERANDO XXXX: Registro entero de 16 bits.CÓDIGO INSTRUCCIÓN: 30

DESCRIPCIÓN:

CARGA en pila aritmética el contenido del registro entero apuntado.El operando es el registro entero que contiene la dirección delregistro entero con el contenido a transferir a la pila aritmética.Incrementa un nivel la pila aritmética (+1)

# Ejemplo:

SETRI 300 137 ;Almacena la constante 137 en el reg.;entero 300

SETRI 500 300 ;Almacena la constante 300 en el reg.;entero 500

MOVIX 500 ;Carga en pila aritmética el contenido del;reg. entero 300, puesto que es el;apuntado por el reg. entero 500, es decir;el dato 137

STOI 600 ;Almacena el contenido de la pila;aritmética en el registro entero 600

MOVIX

Page 101: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES ARITMETICAS IN-AR 15 99.01

STOIX XXXX

NEMÓNICO: STOIXOPERANDO XXXX: Registro entero de 16 bits.CÓDIGO INSTRUCCIÓN: 31

DESCRIPCIÓN:

ALMACENA el último dato de la pila aritmética en el registro enteroapuntado.El operando es el registro entero que contiene la dirección delregistro entero donde se almacena el último dato de la pilaaritmética.Decrementa un nivel la pila aritmética (-1)

# Ejemplo:

SETRI 680 150 ;Almacena la constante 150 en el reg.;entero 680

MOVCI 1850 ;Carga en pila aritmética el dato 1850STOIX 680 ;Almacena el contenido de la pila

;aritmética en el reg. entero 150, puesto;que es el apuntado por el reg. entero 680.

STOIX

Page 102: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES ARITMETICAS IN-AR 16 99.01

MOVRF XXXX

NEMÓNICO: MOVRFOPERANDO XXXX: Registro en coma flotante de 32 bits.CÓDIGO INSTRUCCIÓN: 27

DESCRIPCIÓN:

CARGA en pila aritmética el contenido de un registro en comaflotante.El operando es la dirección del registro en coma flotante cuyocontenido se transfiere a la pila aritmética.Incrementa dos niveles la pila aritmética (+2).

# Ejemplo:

MOVRF 100 ;Carga en la pila aritmética el contenido del reg.;en coma flotante 100, por ejemplo 378.54

STOF 500 ;Almacena el contenido de la pila aritmética en el;reg. en coma flotante 500

MOVRF

Page 103: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES ARITMETICAS IN-AR 17 99.01

STOF XXXX

NEMÓNICO: STOFOPERANDO XXXX: Registro en coma flotante de 32 bits.CÓDIGO INSTRUCCIÓN: 28

DESCRIPCIÓN:

ALMACENA en un registro en coma flotante el último dato de la pilaaritmética.El operando es la dirección del registro en coma flotante sobre elcual se almacena el ultimo dato de la pila aritmética.Decrementa dos niveles la pila aritmética (-2)

# Ejemplo:

MOVCF 2.3458 ;Carga en pila aritmética la constante;2.3458

STOF 500 ;Almacena el contenido de la pila;aritmética en el reg. en coma flotante 500

STOF

Page 104: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES ARITMETICAS IN-AR 18 99.01

MOVCF XXXX

NEMÓNICO: MOVCFOPERANDO XXXX: Constante en coma flotante.CÓDIGO INSTRUCCIÓN: 26

DESCRIPCIÓN:

CARGA en pila aritmética una constante en coma flotante.El operando es la constante en coma flotante, introducida en elprograma en decimal, que se transfiere a la pila aritmética.Incrementa dos niveles la pila aritmética (+2).

# Ejemplo:

MOVCF 100.54687 ;Carga en pila aritmética la constante en;coma flotante 100.54687

STOF 470 ;Almacena el contenido de la pila;aritmética en el reg. en coma flotante 470

MOVCF

Page 105: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES ARITMETICAS IN-AR 19 99.01

MOVFX XXXX

NEMÓNICO: MOVFXOPERANDO XXXX: Registro entero de 16 bits.CÓDIGO INSTRUCCIÓN: 23

DESCRIPCIÓN:

CARGA en pila aritmética el contenido del registro en coma flotanteapuntado.El operando es el registro entero que contiene la dirección delregistro en coma flotante con el contenido a transferir a la pilaaritmética.Incrementa dos niveles la pila aritmética (+2).

# Ejemplo:

MOVCF 0.720 ;Carga en pila aritmética la constante en;coma flotante 0.720

STOF 100 ;Almacena el contenido de la pila;aritmética en el reg. en coma flotante 100

SETRI 500 100 ;Almacena la cte. 100 en el reg entero 500MOVFX 500 ;Carga en pila aritmética el contenido del

;reg. en coma flotante 100, puesto que es;el apuntado por el reg. entero 500, es;decir el dato 0.720

STOF 600 ;Almacena el contenido de la pila;aritmética en el reg. en coma flotante 600

MOVFX

Page 106: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES ARITMETICAS IN-AR 20 99.01

STOFX XXXX

NEMÓNICO: STOFXOPERANDO XXXX: Registro entero de 16 bits.CÓDIGO INSTRUCCIÓN: 24

DESCRIPCIÓN:

ALMACENA el último dato de la pila aritmética en el registro encoma flotante apuntado.El operando es el registro entero que contiene la dirección delregistro en coma flotante donde se almacena el último dato de la pilaaritmética.Decrementa dos niveles la pila aritmética (-2).

# Ejemplo:

SETRI 400 500 ;Almacena la constante 500 en el;reg. entero 400

MOVCF 18558.2 ;Carga en pila aritmética la constante en;coma flotante 18558.2

STOFX 400 ;Almacena el contenido de la pila;aritmética en el reg. en coma flotante 500,;puesto que es el apuntado por el reg.;entero 400.

STOFX

Page 107: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES ARITMETICAS IN-AR 21 99.01

ADDI

NEMÓNICO: ADDIOPERANDO XXXX: No dispone de operando.CÓDIGO INSTRUCCIÓN: 40

DESCRIPCIÓN:

SUMA los dos últimos datos enteros de la pila aritmética y deja elresultado en la pila aritmética.Decrementa un nivel la pila aritmética (-1).

# Ejemplo:

MOVCI 100 ;Carga en pila aritmética la constante 100MOVRI 300 ;Carga en pila aritmética el contenido del reg.

;entero 300 (por ejemplo 72)ADDI ;Suma los dos últimos datos contenidos en la pila

;aritmética y deja el resultado en la misma pila;aritmética, es decir, el dato 172

STOI 410 ;Almacena el contenido de la pila aritmética en el;reg. entero 410 (resultado de la suma).

ADDI

Page 108: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES ARITMETICAS IN-AR 22 99.01

SUBI

NEMÓNICO: SUBIOPERANDO XXXX: No dispone de operando.CÓDIGO INSTRUCCIÓN: 41

DESCRIPCIÓN:

RESTA los dos últimos datos enteros de la pila aritmética y deja elresultado en la pila aritmética.El sustraendo es el último dato de la pila aritmética. El minuendo esel anterior.Decrementa un nivel la pila aritmética (-1)

# Ejemplo:

MOVRI 300 ;Carga en la pila aritmética el contenido del reg.;entero 300 (por ejemplo 111).

MOVCI 2 ;Carga en la pila aritmética la constante 2SUBI ;Resta los dos últimos datos contenidos en la pila

;aritmética y deja el resultado en la misma pila;aritmética, es decir, el dato 109

STOI 500 ;Almacena el contenido de la pila aritmética en el;reg. entero 500 (resultado de la resta).

SUBI

Page 109: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES ARITMETICAS IN-AR 23 99.01

MULI

NEMÓNICO: MULIOPERANDO XXXX: No dispone de operando.CÓDIGO INSTRUCCIÓN: 42

DESCRIPCIÓN:

MULTIPLICA los dos últimos datos enteros de la pila aritmética ydeja el resultado en la pila aritmética.Decrementa un nivel la pila aritmética (-1).

# Ejemplo:

MOVRI 300 ;Carga el contenido del reg. entero 300 en la pila;aritmética (por ejemplo -128).

MOVCI 2 ;Carga la constante 2 en la pila aritmética.MULI ;Multiplica los dos últimos datos contenidos en la

;pila aritmética y deja el resultado en la misma pila;aritmética, es decir, el dato -256.

STOI 250 ;Almacena el contenido de la pila aritmética en el;reg. entero 250 (resultado de la multiplicación).

MULI

Page 110: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES ARITMETICAS IN-AR 24 99.01

DIVI

NEMÓNICO: DIVIOPERANDO XXXX: No dispone de operando.CÓDIGO INSTRUCCIÓN: 43

DESCRIPCIÓN:

DIVIDE los dos últimos datos enteros de la pila aritmética y deja elresultado en la pila aritmética.El divisor es el último estado de la pila aritmética. El dividendo es elanterior.Decrementa un nivel la pila aritmética (-1)

# Ejemplo:

MOVRI 100 ;Carga en la pila aritmética el contenido del reg.;entero 100, por ejemplo -2002.

MOVCI 2 ;Carga en la pila aritmética la constante 2.DIVI ;Divide los dos últimos datos contenidos en la pila

;aritmética y deja el resultado en la misma pila;aritmética, es decir, el dato -1001.

STOI 250 ;Almacena el contenido de la pila aritmética en el;reg. entero 250 (resultado de la división).

DIVI

Page 111: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES ARITMETICAS IN-AR 25 99.01

ADDC XXXX

NEMÓNICO: ADDCOPERANDO XXXX: Constante de formato entero.CÓDIGO INSTRUCCIÓN: 45

DESCRIPCIÓN:

SUMA al último dato de la pila aritmética la constante del operando.El operando es la constante entera a sumar, introducida en elprograma en decimal, con el último dato de la pila aritmética.Mantiene el nivel de la pila aritmética inalterado (0).

# Ejemplo:

MOVCI -285 ;Carga en pila aritmética la constante -285ADDC 100 ;Suma al último dato de la pila aritmética la

;constante 100 y deja el resultado en la misma;pila aritmética, es decir, el dato -185.

STOI 255 ;Almacena el contenido de la pila aritmética en el;reg. entero 255 (resultado de la suma).

ADDC

Page 112: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES ARITMETICAS IN-AR 26 99.01

SUBC XXXX

NEMÓNICO: SUBCOPERANDO XXXX: Constante de formato entero.CÓDIGO INSTRUCCIÓN: 46

DESCRIPCIÓN:

RESTA al último dato de la pila aritmética la constante del operando.El operando es el sustraendo constante entera a restar, introducidaen el programa en decimal, con el último dato de la pila aritmética.Mantiene el nivel de la pila aritmética inalterado (0).

# Ejemplo:

MOVCI 180 ;Carga en pila aritmética la constante 180SUBC 25 ;Resta al último dato de la pila aritmética la

;constante 25 y deja el resultado en la misma pila;aritmética, es decir, el dato 165.

STOI 525 ;Almacena el contenido de la pila aritmética en el;reg. entero 525 (resultado de la resta).

SUBC

Page 113: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES ARITMETICAS IN-AR 27 99.01

MULC XXXX

NEMÓNICO: MULCOPERANDO XXXX: Constante de formato entero.CÓDIGO INSTRUCCIÓN: 47

DESCRIPCIÓN:

MULTIPLICA el último dato de la pila aritmética con la constante deloperando.El operando es la constante entera a multiplicar, introducida en elprograma en decimal, con el último dato de la pila aritmética.Mantiene el nivel de la pila aritmética inalterado (0).

# Ejemplo:

MOVRI 300 ;Carga en pila aritmética el contenido del reg.;entero 300, por ejemplo 40.

MULC 5 ;Multiplica al último dato de la pila aritmética la;constante 5 y deja el resultado en la misma pila;aritmética, es decir, el dato 200.

STOI 815 ;Almacena el contenido de la pila aritmética en el;reg. entero 815 (resultado de la multiplicación).

MULC

PILA ARITMET.

MULC 5STOI

40

PILA ARITMET.

200REG CONTEN. REG CONTEN.

815 200

MOVRI

300 40

Page 114: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES ARITMETICAS IN-AR 28 99.01

DIVC XXXX

NEMÓNICO: DIVCOPERANDO XXXX: Constante de formato entero.CÓDIGO INSTRUCCIÓN: 48

DESCRIPCIÓN:

DIVIDE el último dato de la pila aritmética con la constante deloperando.El operando es el divisor a dividir, introducida en el programa endecimal, con el último dato de la pila aritmética.El operando es el divisor de la operación.Mantiene el nivel de la pila aritmética inalterado (0).

# Ejemplo:

MOVRI 220 ;Carga en pila aritmética el contenido del reg.;entero 220, por ejemplo 1000.

DIVC 5 ;Divide al último dato de la pila aritmética la;constante 5 y deja el resultado en la misma pila;aritmética, es decir, el dato 200.

STOI 635 ;Almacena el contenido de la pila aritmética en el;reg. entero 635 (resultado de la división).

DIVC

Page 115: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES ARITMETICAS IN-AR 29 99.01

INC XXXX YYYY

NEMÓNICO: INCOPERANDO XXXX: Registro entero de 16 bits.OPERANDO YYYY: Constante de formato entero.CÓDIGO INSTRUCCIÓN: 44

DESCRIPCIÓN:

INCREMENTA ó DECREMENTA el contenido de un registro enterouna cantidad constante entera.El operando XXXX es la dirección del registro entero a incrementar.El operando YYYY es la cantidad que se incrementa ó decrementael registro entero, según sea positivo ó negativo.No opera con las pilas (0).

# Ejemplo:

MOVCI 1820 ;Carga en pila aritmética la constante 1820STOI 300 ;Almacena el contenido de la pila

;aritmética en el reg. entero 300.INC 300 180 ;Incrementa el contenido del reg. entero

;300 en 180, por lo cual el contenido del;reg. 300 pasa a ser 2000.

INC 300 -10 ;Decrementa el contenido del reg. entero;300 en 10, por lo cual el contenido del reg.;300 pasa a ser 1990.

INC

Page 116: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES ARITMETICAS IN-AR 30 99.01

ADDF

NEMÓNICO: ADDFOPERANDO XXXX: No dispone de operando.CÓDIGO INSTRUCCIÓN: 49

DESCRIPCIÓN:

SUMA los dos últimos datos en coma flotante de la pila aritmética ydeja el resultado en la pila aritmética.Decrementa dos niveles la pila aritmética (-2).

# Ejemplo:

MOVCF 100.34 ;Carga en pila aritmética la constante en;coma flotante 100.34

MOVRF 300 ;Carga en pila aritmética el contenido del;reg. en coma flotante 300, por ejemplo;0.286.

ADDF ;Suma los dos últimos datos contenidos en;la pila aritmética y deja el resultado en la;misma pila aritmética, es decir, el dato;100.626

STOF 41 ;Almacena el contenido de la pila;aritmética en el reg. en coma flotante 41;(resultado de la suma).

ADDF

Page 117: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES ARITMETICAS IN-AR 31 99.01

SUBF

NEMÓNICO: SUBFOPERANDO XXXX: No dispone de operando.CÓDIGO INSTRUCCIÓN: 50

DESCRIPCIÓN:

RESTA los dos últimos datos en coma flotante de la pila aritmética ydeja el resultado en la pila aritmética.El sustraendo es el último dato de la pila aritmética. El minuendo esel anterior.Decrementa dos niveles la pila aritmética (-2).

# Ejemplo:

MOVRF 100 ;Carga en la pila aritmética el contenido del reg en;coma flotante 100, por ejemplo 328.328

MOVCF 2.1 ;Carga en la pila aritmética la constante 2.1SUBF ;Resta los dos últimos datos contenidos en la pila

;aritmética y deja el resultado en la misma pila;aritmética, es decir, el dato 326.228

STOF 260 ;Almacena el contenido de la pila aritmética en el;reg. en coma flotante 260 (resultado de la resta).

SUBF

Page 118: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES ARITMETICAS IN-AR 32 99.01

MULF

NEMÓNICO: MULFOPERANDO XXXX: No dispone de operando.CÓDIGO INSTRUCCIÓN: 51

DESCRIPCIÓN:

MULTIPLICA los dos últimos datos en coma flotante de la pilaaritmética y deja el resultado en la pila aritmética.Decrementa dos niveles la pila aritmética (-2).

# Ejemplo:

MOVCF 250.1 ;Carga la constante 250.1 en la pila aritmética.MOVCF 97.09 ;Carga la constante 97.09 en la pila aritmética.MULF ;Multiplica los dos últimos datos contenidos en la

;pila aritmética y deja el resultado en la misma pila;aritmética, es decir, el dato 24282.209

STOF 515 ;Almacena el contenido de la pila aritmética en el;reg. en coma flotante 515 (resultado de la;multiplicación).

MULF

Page 119: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES ARITMETICAS IN-AR 33 99.01

DIVF

NEMÓNICO: DIVFOPERANDO XXXX: No dispone de operando.CÓDIGO INSTRUCCIÓN: 52

DESCRIPCIÓN:

DIVIDE los dos últimos datos en coma flotante de la pila aritmética ydeja el resultado en la pila aritmética.El divisor es el último estado de la pila aritmética. El dividendo es elanterior.Decrementa dos niveles la pila aritmética (-2).

# Ejemplo:

MOVCF 488.8 ;Carga en la pila aritmética la constante 488.8MOVCF 2.1 ;Carga en la pila aritmética la constante 2.1.DIVF ;Divide los dos últimos datos contenidos en la pila

;aritmética y deja el resultado en la misma pila;aritmética, es decir, el dato 232.761

STOF 1500 ;Almacena el contenido de la pila aritmética en el;reg. en coma flotante 1500 (resultado de la;división).

DIVF

Page 120: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES ARITMETICAS IN-AR 34 99.01

MOVIF XXXX

NEMÓNICO: MOVIFOPERANDO XXXX: Registro entero de 16 bits.CÓDIGO INSTRUCCIÓN: 25

DESCRIPCIÓN:

CARGA en pila aritmética el contenido de un registro enteroconvirtiéndolo en formato de coma flotante.El operando es el registro entero cuyo contenido se convierte acoma flotante y se pasa a pila aritmética, es decir, convertimos undato entero de 16 bits en coma flotante de 32 bits.Incrementa dos niveles la pila aritmética (+2).

# Ejemplo:

MOVIF 300 ;Carga en pila aritmética el contenido del reg.;entero 300 (por ejemplo 1005), convirtiéndolo en;formato de coma flotante (1005.00)

STOF 700 ;Almacena el contenido de la pila aritmética en el;reg. en coma flotante 700.

MOVIF

Page 121: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES ARITMETICAS IN-AR 35 99.01

STOFI XXXX

NEMÓNICO: STOFIOPERANDO XXXX: Registro en coma flotante de 16 bits.CÓDIGO INSTRUCCIÓN: 29

DESCRIPCIÓN:

ALMACENA en un registro entero el último dato de la pila aritméticade formato en coma flotante, convirtiéndolo previamente en entero.El operando es la dirección del registro entero.El dato en coma flotante de la pila aritmética se almacena en formatoentero y se redondea (cuando el decimal es superior a 0.5 seredondea por exceso, al contrario se redondea por defecto).Decrementa dos niveles la pila aritmética (-2).

# Ejemplo:

MOVRF 350 ;Carga en pila aritmética el contenido del reg. en;coma flotante 350, por ejemplo 100.58

STOFI 520 ;Almacena el contenido de la pila aritmética en el;reg. entero 520, redondeándose en formato;entero (dato 101).

STOFI

Page 122: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES ARITMETICAS IN-AR 36 99.01

# EJEMPLOS:

Para efectuar estos ejemplos deberemos comprobar las instrucciones y el direccionamiento de losrelés/registros de la memoria, disponibles en el equipo MIDA que estamos programando.

A.- Se trata de realizar la siguiente operación matemática:

(60 + 100) / 2 = R

donde R es el resultado de la operación que visualizaremos por eldisplay.

MOVCI 60 ;Carga la constante entera 60 en la pila.MOVCI 100 ;Carga la constante entera 100 en la pila.ADDI ;Suma las dos constantes.MOVCI 2 ;Carga la constante entera 2 en pila.DIVI ;Divide el resultado de la suma anterior por la

;constante 2.STOI 400 ;Almacena en el registro entero 400 el resultado

;de la operación.CLEAR ;Borra el buffer intermedio dejando el puntero

;de visualización en primera posición.DISRI 400 3 ;Copia en el buffer intermedio el contenido del

;registro entero 400 con tres cifras.COM 0 ;Visualiza el contenido del buffer intermedio en el

;display LCD.END

B.- Se trata de realizar prácticamente un ejemplo similar al anteriorpero visualizando los resultados intermedios en tres LCD. (Ejemploejecutado en un equipo con tres visualizadores LCD).La operación matemática en este caso es la siguiente:

[(60 + 100) / 2] * 40 = R

El resultado de la suma lo visualizamos en el display LCD 1.El resultado de la división lo visualizamos en el display LCD 2.El resultado de la multiplicación lo visualizamos en el display LCD 3.

Page 123: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES ARITMETICAS IN-AR 37 99.01

MOVCI 60 ;Carga la constante entera 60 en la pila aritméticaMOVCI 100 ;Carga la constante entera 100 en la pila.ADDI ;Suma las dos constantes.STOI 400 ;Almacena el resultado de la suma en el registro

;entero 400MOVRI 400 ;Carga el contenido del registro entero 400 en pila

;aritmética.MOVCI 2 ;Carga la constante entera 2 en pila aritmética.DIVI ;Realiza la división con los datos de la pila.STOI 410 ;Almacena el resultado de la división en el registro

;entero 410MOVRI 410 ;Carga el contenido del registro entero 410 en pila

;aritmética.MOVCI 40 ;Carga la constante entera 40 en pila aritmética.MULI ;Realiza la multiplicación con los datos de la pila.STOI 420 ;Almacena el resultado de la multiplicación en el

;registro entero 420CLEAR ;Borra el buffer intermedio y sitúa el puntero en la

;primera posición.DISRI 400 3 ;Copia en buffer intermedio el contenido del

;registro entero 400 con tres cifras en total.COM 0 ;Visualiza el contenido del buffer intermedio

;en display LCD 1CLEAR ;Borra el buffer intermedio y sitúa el puntero

;en la primera posición.DISRI 410 3 ;Copia en buffer intermedio el contenido del

;registro entero 410 con tres cifras en total.COM 1 ;Visualiza el contenido del buffer intermedio

;en el display LCD 2CLEAR ;Borra el buffer intermedio y sitúa el puntero

;en la primera posición.DISRI 420 3 ;Copia en buffer intermedio el contenido del

;registro entero 420 con tres cifras en total.COM 2 ;visualiza el contenido del buffer intermedio

;en el display LCD 3END

Page 124: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES ARITMETICAS IN-AR 38 99.01

C.- Escribir en instrucciones la fórmula siguiente (empleada paralinealizar una sonda PT100):

T = -244.913 + 0.0234 (K * ent_ad) + 0.0137 (K * ent_ad)2

siendo K la constante y ent_ad una entrada analógica de un equipoMIDA.

;Definición de etiquetas;ent_ad equ xxx ;xxx = reg. entero equivalente a una entrada

;analógicacons_k equ xxx ;xxx = reg. en coma flotante que contiene la

;constante Kinter equ xxx ;xxx = reg. en coma flotante para resultados de

;operacionesresultado equ xxx ;xxx = reg. en coma flotante para dejar el

;resultado de la operación.;

MOVIF ent_ad ;Carga en pila aritmética el contenido del;reg. entero "ent_ad" convirtiéndolo en;formato de coma flotante

MOVRF cons_k ;Carga en la pila aritmética el contenido del;reg. en coma flotante "cons_k"

MULF ;Multiplica los dos últimos datos contenidos;en la pila aritmética y deja el resultado en;la misma pila aritmética.

STOF inter ;Almacena el contenido de la pila;aritmética en el reg. en coma flotante;"inter", resultado de la multiplicación;(K * ent_A/D)

MOVCF -244.913 ;Carga la constante -244.913 en la pila;aritmética.

MOVRF inter ;Carga en la pila aritmética el contenido del;reg. en coma flotante "inter"

MOVCF 0.0234 ;Carga la constante 0.0234 en la pila;aritmética.

MULF ;Multiplica los dos últimos datos contenidos;en la pila aritmética y deja el resultado en;la misma pila aritmética (0.0234 * "inter")

Page 125: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES ARITMETICAS IN-AR 39 99.01

ADDF ;Suma los dos últimos datos contenidos en;la pila aritmética y deja el resultado en la;misma pila aritmética (-244.913 + el;resultado de la multiplicación anterior).

MOVRF inter ;Carga en la pila aritmética el contenido del;reg. en coma flotante "inter"

MOVCF 0.0137 ;Carga la constante 0.0137 en la pila;aritmética.

MULF ;Multiplica los dos últimos datos contenidos;en la pila aritmética y deja el resultado en;la misma pila aritmética (0.0137 * "inter")

ADDF ;Suma los dos últimos datos contenidos en;la pila aritmética y deja el resultado en la;misma pila aritmética (el resultado de la;suma anterior + el resultado de la ultima;multiplicación).

STOF resultado ;Almacena el contenido de la pila;aritmética en un reg. en coma flotante;(resultado de la suma).

Page 126: Manual Tecnico de Programacion Plc PDF

INSTRUCCIONES ARITMETICAS IN-AR 40 99.01

.

Page 127: Manual Tecnico de Programacion Plc PDF

COMPARACIONES ARITMETICAS IN-CA 1 99.01

El equipo dispone de instrucciones que permiten realizar todotipo de comparaciones aritméticas entre constantes, contenidos deregistros ó entre ambos:

" Si dos datos son IGUALES." Si un dato es MAYOR ó IGUAL a otro." Si un dato es MENOR ó IGUAL a otro." Si un dato es MAYOR que otro." Si un dato es MENOR que otro.

Todas las comparacionespueden realizarse en formatoentero ó en coma flotante. Perodebe cumplir la concordancia dedatos, es decir, se debencomparar siempre datos delmismo tipo.La forma de operar es a travésde la pila aritmética.

El diagrama de flujoindica la forma de operar. Paracargar los datos en la pilaaritmética se utilizan lasinstrucciones:

• MOVRI ó MOVCI para lacarga de datos enteros(registros o constantes).

• MOVRF ó MOVCF para lacarga de datos en coma flotante(registros o constantes).

IN IC IO

C a rg a u n d a to e n la p ila a r itm é tic a

C a rg a u n d a to e n la p ila a r itm é tic a

R e a liza la c o m p a ra c ió n

a r itm é tic a

R e su lta d o ?

S I

N O

E je c u ta e l s a lto

N o e je c u ta e l s a lto

F IN

Page 128: Manual Tecnico de Programacion Plc PDF

COMPARACIONES ARITMETICAS IN-CA 2 99.01

! INSTRUCCIONES RELACIONADAS

Las instrucciones de este grupo son:

CPEI CPEF

CPGEI CPGEF

CPLEI CPLEF

CPGI CPGF

CPLI CPLF

Describimos a continuación las instrucciones de este grupo:

Page 129: Manual Tecnico de Programacion Plc PDF

COMPARACIONES ARITMETICAS IN-CA 3 99.01

CPEI XXXX

NEMÓNICO: CPEIOPERANDO XXXX: Número o etiqueta de línea de programa.CÓDIGO INSTRUCCIÓN: 60

DESCRIPCIÓN:

La ejecución del programa SALTA si el resultado de la comparaciónde los dos últimos datos enteros de la pila aritmética es IGUAL.El operando es el número o etiqueta de línea destino del salto.Decrementa dos niveles la pila aritmética (-2).

# Ejemplo:

0000 MOVRI 300 ;Carga en la pila aritmética el reg. entero 300.0001 MOVCI 2 ;Carga en la pila aritmética la constante 2.0002 CPEI 100 ;Si el contenido del reg. entero 300 es igual a 2, el

;programa salta a la línea100, sino continua en la;línea 3.

0003 ---------0004 --------------- ---------0100 ---------

Compara que los datos introducidos en la pila aritmética soniguales. Al realizarse la comparación el programa saltara a la línea 100si el contenido de ambos es el mismo y en el caso de que no seaniguales, el programa continuara en la línea 3

CPEI

Page 130: Manual Tecnico de Programacion Plc PDF

COMPARACIONES ARITMETICAS IN-CA 4 99.01

CPGEI XXXX

NEMÓNICO: CPGEIOPERANDO XXXX: Número o etiqueta de línea de programa.CÓDIGO INSTRUCCIÓN: 61

DESCRIPCIÓN:

La ejecución del programa SALTA si el resultado de la comparaciónde los dos últimos datos enteros de la pila aritmética es MAYOR oIGUAL.El operando es el número o etiqueta de línea destino del salto.El último dato de la pila aritmética es el que se compara con elanterior.Decrementa dos niveles la pila aritmética (-2).

# Ejemplo:

0030 MOVRI 350 ;Carga en la pila aritmética el contenido del reg.;entero 350.

0031 MOVCI 42 ;Carga en la pila aritmética la constante 42.0032 CPGEI 485 ;Si el contenido del reg. 350 es mayor ó igual que

;42, salta a la línea de programa 485, sino;continua en la línea 33.

0033 ---------0034 --------------- ---------0485 ---------

Si el contenido del registro entero introducido en la pilaaritmética en primer lugar es mayor o igual que la constanteintroducida en segundo lugar, al realizarse la comparación, laejecución del programa pasara a la línea 485, en caso contrarioseguirá su ejecución por la línea 33.

CPGEI

Page 131: Manual Tecnico de Programacion Plc PDF

COMPARACIONES ARITMETICAS IN-CA 5 99.01

CPLEI XXXX

NEMÓNICO: CPLEIOPERANDO XXXX: Número o etiqueta de línea de programa.CÓDIGO INSTRUCCIÓN: 62

DESCRIPCIÓN:

La ejecución del programa SALTA si el resultado de la comparaciónde los dos últimos datos enteros de la pila aritmética es MENOR oIGUAL.El operando es el número o etiqueta de línea destino del salto.El último dato de la pila aritmética es el que se compara con elanterior.Decrementa dos niveles la pila aritmética (-2).

# Ejemplo:

0102 MOVRI 421 ;Carga en la pila aritmética el contenido del reg.;entero 421.

0103 MOVCI -250 ;Carga en la pila aritmética la constante –250.0104 CPLEI 1050 ;Si el contenido del reg. entero 421 es menor ó

;igual que -250, la ejecución del programa salta a;la línea 1050, sino continua en la línea 105.

0105 ---------0106 --------------- ---------1050 ---------

Si el contenido del registro entero introducido en la pilaaritmética en primer lugar es menor o igual que la constanteintroducida en segundo lugar, al realizarse la comparación, laejecución del programa pasara a la línea 1050, en caso contrarioseguirá su ejecución por la línea 105.

CPLEI

Page 132: Manual Tecnico de Programacion Plc PDF

COMPARACIONES ARITMETICAS IN-CA 6 99.01

CPGI XXXX

NEMÓNICO: CPGIOPERANDO XXXX: Número o etiqueta de línea de programa.CÓDIGO INSTRUCCIÓN: 63

DESCRIPCIÓN:

La ejecución del programa SALTA si el resultado de lacomparación de los dos últimos datos enteros de la pila aritméticaes MAYOR.El operando es el número o etiqueta de línea destino del salto.El último dato de la pila aritmética es el que se compara con elanterior.Decrementa dos niveles la pila aritmética (-2).

# Ejemplo:

0010 MOVRI 930 ;Carga en la pila aritmética el contenido del reg.;entero 930.

0011 MOVCI 21 ;Carga en la pila aritmética la constante 21.0012 CPGI 90 ;Si el contenido del reg. entero 930 es mayor que

;21, la ejecución del programa salta a la línea 90,;sino continua en la línea 13.

0013 ---------0014 --------------- ---------0090 ---------

Si el contenido del registro entero introducido en la pilaaritmética en primer lugar es mayor que la constante introducida ensegundo lugar, al realizarse la comparación, la ejecución del programapasara a la línea 90, en caso contrario seguirá su ejecución por lalínea 13.

CPGI

Page 133: Manual Tecnico de Programacion Plc PDF

COMPARACIONES ARITMETICAS IN-CA 7 99.01

CPLI XXXX

NEMÓNICO: CPLIOPERANDO XXXX: Número o etiqueta de línea de programa.CÓDIGO INSTRUCCIÓN: 64

DESCRIPCIÓN:

La ejecución del programa SALTA si el resultado de la comparaciónde los dos últimos datos enteros de la pila aritmética es MENOR.El operando es el número o etiqueta de línea destino del salto.El último dato de la pila aritmética es el que se compara con elanterior.Decrementa dos niveles la pila aritmética (-2).

# Ejemplo:

0035 MOVCI 282 ;Carga en la pila aritmética la constante 2820036 MOVRI 300 ;Carga en la pila aritmética el contenido del reg.

;entero 300.0037 CPLI 900 ;Si el contenido del reg. entero 300 es menor que

;282, la ejecución del programa salta a la línea;900, sino continua en la línea 38.

0038 ---------0039 --------------- ---------0900 ---------

Si la constante introducida en la pila aritmética en primer lugares menor que el contenido del registro entero introducido en segundolugar, al realizarse la comparación, la ejecución del programa pasara ala línea 900, en caso contrario seguirá su ejecución por la línea 38.

CPLI

Page 134: Manual Tecnico de Programacion Plc PDF

COMPARACIONES ARITMETICAS IN-CA 8 99.01

CPEF XXXX

NEMÓNICO: CPEFOPERANDO XXXX: Número de línea de programa.CÓDIGO INSTRUCCIÓN: 54

DESCRIPCIÓN:

La ejecución del programa SALTA si el resultado de la comparaciónde los dos últimos datos en coma flotante de la pila aritmética esIGUAL.El operando es el número de línea de programa destino del salto.Decrementa cuatro niveles la pila aritmética (-4).

# Ejemplo:

0000 MOVRF 100 ;Carga en la pila aritmética el contenido del reg.;en coma flotante 100, pe. 2.10001

0001 MOVCF 2.1 ;Carga en la pila la constante 2.1.0002 CPEF 120 ;Si el contenido del reg. en coma flotante 100 es

;igual a 2.10001, la ejecución del programa salta a;la línea 120, sino continua en la línea 3.

0003 ---------0004 --------------- ---------0120 ---------

Si el contenido del registro en coma flotante introducido en lapila en primer lugar es igual que la constante introducida en segundolugar, al realizarse la comparación, la ejecución del programa pasara ala línea 120, en caso contrario seguirá su ejecución por la línea 3.Señalar que los números a comparar deben de ser exactamenteiguales, coincidiendo en todos sus decimales. En el ejemplo anterior silos datos a comparar hubieran sido 2.1001 en primer lugar y 2.1 ensegundo lugar la ejecución del programa proseguiría en la línea 3.

CPEF

Page 135: Manual Tecnico de Programacion Plc PDF

COMPARACIONES ARITMETICAS IN-CA 9 99.01

CPGEF XXXX

NEMÓNICO: CPGEFOPERANDO XXXX: Número o etiqueta de línea de programa.CÓDIGO INSTRUCCIÓN: 55

DESCRIPCIÓN:

La ejecución del programa SALTA si el resultado de la comparaciónde los dos últimos datos en coma flotante de la pila aritmética esMAYOR o IGUAL.El operando es el número o etiqueta de línea destino del salto.El último dato de la pila aritmética es el que se compara con elanterior.Decrementa cuatro niveles la pila aritmética (-4).

# Ejemplo:

0002 MOVRF 100 ;Carga en la pila aritmética el contenido del reg;en coma flotante 100.

0003 MOVCF 2.1 ;Carga en la pila aritmética la constante 2.1.0004 CPGEF 190 ;Si el contenido del reg. en coma flotante 100

;es mayor ó igual que 2.1, la ejecución del;programa salta a la línea de programa 190, sino;continua en la línea 5.

0005 --------------- ---------0190 ---------

Si el contenido del registro en coma flotante introducido en lapila aritmética en primer lugar es mayor o igual que la constanteintroducida en segundo lugar, al realizarse la comparación, laejecución del programa pasara a la línea 190, en caso contrarioseguirá su ejecución por la línea 5.

CPGEF

Page 136: Manual Tecnico de Programacion Plc PDF

COMPARACIONES ARITMETICAS IN-CA 10 99.01

CPLEF XXXX

NEMÓNICO: CPLEFOPERANDO XXXX: Número o etiqueta de línea de programa.CÓDIGO INSTRUCCIÓN: 56

DESCRIPCIÓN:

La ejecución del programa SALTA si la comparación de los dosúltimos datos en coma flotante de la pila aritmética es MENOR oIGUAL.El operando es el número de línea o etiqueta destino del salto.El último dato de la pila aritmética es el que se compara con elanterior.Decrementa cuatro niveles la pila aritmética (-4).

# Ejemplo:

0000 MOVRF 212 ;Carga en pila aritmética el contenido del reg. en;coma flotante 212.

0001 MOVCF 6.82 ;Carga en la pila la constante 6.82.0002 CPLEF 100 ;Si el contenido del reg. en coma flotante 212 es

;menor ó igual que 6.82, la ejecución del programa;salta a la línea de programa 100, sino continua en;la línea 3.

0003 ---------0004 --------------- ---------0100 ---------

Si el contenido del registro en coma flotante introducido en lapila aritmética en primer lugar es menor o igual que la constanteintroducida en segundo lugar, al realizarse la comparación, laejecución del programa pasara a la línea 100, en caso contrarioseguirá su ejecución por la línea 3.

CPLEF

Page 137: Manual Tecnico de Programacion Plc PDF

COMPARACIONES ARITMETICAS IN-CA 11 99.01

CPGF XXXX

NEMÓNICO: CPGFOPERANDO XXXX: Número o etiqueta de línea de programa.CÓDIGO INSTRUCCIÓN: 57

DESCRIPCIÓN:

La ejecución del programa SALTA si el resultado de la comparaciónde los dos últimos datos en coma flotante de la pila aritmética esMAYOR.El operando es el número o etiqueta de línea destino del salto.El último dato de la pila aritmética es el que se compara con elanterior.Decrementa cuatro niveles la pila aritmética (-4).

# Ejemplo:

0000 MOVRF 805 ;Carga en la pila aritmética el contenido del reg;en coma flotante 805,

0001 MOVCF 213.7 ;Carga en la pila aritmética la constante 213.7.0002 CPGF 1000 ;Si el contenido del reg en coma flotante 805 es

;mayor que 213.7, la ejecución del programa salta;a la línea de programa 1000, sino continua en la;línea 3.

0003 ---------0004 --------------- ---------1000 ---------

Si el contenido del registro en coma flotante introducido en lapila aritmética en primer lugar es mayor que la constante introducidaen segundo lugar, al realizarse la comparación, la ejecución delprograma pasara a la línea 1000, en caso contrario seguirá suejecución por la línea 3.

CPGF

Page 138: Manual Tecnico de Programacion Plc PDF

COMPARACIONES ARITMETICAS IN-CA 12 99.01

CPLF XXXX

NEMÓNICO: CPLFOPERANDO XXXX: Número o etiqueta de línea de programa.CÓDIGO INSTRUCCIÓN: 58

DESCRIPCIÓN:

La ejecución del programa SALTA si el resultado de la comparaciónde los dos últimos datos en coma flotante de la pila aritmética esMENOR.El operando es el número o etiqueta de línea destino del salto.El último dato de la pila aritmética es el que se compara con elanterior.Decrementa cuatro niveles la pila aritmética (-4).

# Ejemplo:

0000 MOVCF 1.99 ;Carga en la pila aritmética la constante 1.99.0001 MOVRF 210 ;Carga en la pila aritmética el contenido del reg.

;en coma flotante 210.0002 CPLF 100 ;Si la constante es menor que el contenido del reg

;en coma flotante 210, la ejecución del programa;salta la la línea de programa 100, sino continua;en la línea 3.

0003 ---------0004 --------------- ---------0100 ---------

Si la constante introducida en la pila en primer lugar es menorque el contenido del registro en coma flotante introducido en segundolugar, al realizarse la comparación, la ejecución del programa pasara ala línea 100, en caso contrario seguirá su ejecución por la línea 3.

CPLF

Page 139: Manual Tecnico de Programacion Plc PDF

COMPARACIONES ARITMETICAS IN-CA 13 99.01

# EJEMPLOS:

Para efectuar estos ejemplos deberemos comprobar las instrucciones y el direccionamiento de losrelés/registros de la memoria, disponibles en el equipo MIDA que estamos programando.

A.- Realizar un controlador sencillo de temperatura que cuando seeleve la temperatura por encima de 70ºC dispare una alarma y corte elencendido de los calefactores y por debajo de los 70ºC los conecte, esdecir, un control del tipo TODO / NADA.Se trata pues de controlar una salida digital en función de unatemperatura y otra segunda que dispare una alarma en caso de que latemperatura sea igual o supere los 70ºC.

;Definición literalestxt0 lite “AL.TEMP”;inic MOVRF 400 ;Carga el contenido del registro en coma

;flotante en la pila aritmética (el contenido;del registro es la temperatura, convertida;a grados, que se viene tratado en otra;zona del programa).

STOF 401 ;Almacena el contenido de la pila;aritmética en el registro en coma flotante;401 (registro de temperatura).

MOVRF 401 ;Carga el contenido del registro en coma;flotante en pila aritmética.

MOVCF 70 ;Carga la constante 70 en coma flotante en;pila aritmética.

CPGEF alar ;Compara si el contenido del registro en;coma flotante401 es mayor o igual que la;constante 70, si es así salta a la línea;"alar" del programa.

CLEAR ;Borra el buffer intermedio y sitúa el;puntero en la primera posición.

DISRF 401 62 ;Copia en el buffer intermedio el contenido;del registro en coma flotante 401.

COM 0 ;Copia el contenido del buffer intermedio;en el display LCD.

SET 105 ;Activa el relé 105 (arranque calefactores).

Page 140: Manual Tecnico de Programacion Plc PDF

COMPARACIONES ARITMETICAS IN-CA 14 99.01

RESET 106 ;Desactiva el relé 106 (alarma exceso;temperatura).

JNZ inicalar RESET 105 ;Desactiva el relé 105 (arranque

;calefactores).SET 106 ;Activa el relé 106 (alarma exceso

;temperatura).CLEAR ;Borra el buffer intermedio y sitúa el

;puntero en la primera posición.DISL txt0 ;Carga en el buffer intermedio el mensaje

;de la tabla de literales "txt0".COM 0 ;Copia el contenido del buffer intermedio

;en el display LCD.END

Si queremos ver como funciona este programa de forma inmediata,podemos sustituir las instrucciones MOVRF 400 por MOVCF 80 yveremos que en el display aparece el mensaje AL.TEMP, si por elcontrario las sustituimos por MOVCF 60 veremos que se visualiza elcontenido del registro en coma flotante 401.

Page 141: Manual Tecnico de Programacion Plc PDF

RECONOCIMIENTO DE TECLADO IN-RT 1 99.01

En los equipos MIDA disponemos de un teclado incorporado.Dicho teclado puede utilizarse para activar ó desactivar salidas ó relésinternos, introducir datos numéricos, así como para poner en hora elreloj interno de equipo y crear menús personalizados.

Las instrucciones relacionadas con el teclado dependiendodel equipo MIDA que estemos programando son las siguientes:

INK Detecta la pulsación de una tecla predeterminada.

INI Permite la introducción de datos enteros.

INF Permite la introducción de datos en coma flotante.

INPIX Permite la introducción de datos enteros, sin detenerel programa.

INPFX Permite la introducción de datos en coma flotante,sin detener el programa.

INICF Permite la introducción de datos enteros.

INPCX Permite la introducción de datos enteros, sin detenerel programa.

También puede considerarse la instrucción ‘LD’ para detectar lapulsación de una tecla predeterminada.

Las acciones que pueden realizarse con las instruccionesdescritas pueden ser:

" Detección de pulsación de teclas." Introducción de datos enteros ó en coma flotante." Creación de menús personalizados.

Page 142: Manual Tecnico de Programacion Plc PDF

RECONOCIMIENTO DE TECLADO IN-RT 2 99.01

! DETECCIÓN DE TECLASLa pulsación de cualquier tecla del teclado puede detectarse

mediante la instrucción ‘INK’ ó bien consultando el estado del reléinterno asociado a cada una de las teclas, mediante la instrucción ‘LD’.

Detección de pulsación de teclas.Cada una de las teclas tiene un código asignado que coincide

con el del relé asociado a cada una de ellas (ver Direccionamiento dela Memoria en el Manual de Usuario del equipo MIDAcorrespondiente).

Existe un flag interno de tecla pulsada en el equipo que indica lapulsación de una tecla. La instrucción INK transfiere un ‘1' a la pilalógica si ese flag esta a ‘1' y el código de su operando coincide con elde la última tecla que se pulsó.

Transfiere un ‘0' a la pila lógica si no coinciden esos códigos óbien no ha habido pulsación de ninguna tecla.

El flag interno de tecla pulsada se borra cada vez que elresultado de una instrucción INK es ‘1'.

La detección es autorepetitiva (tal como se detectan las teclasen un PC). Si se mantiene pulsada la tecla se va detectandorepetitivamente cada 0.5s, tras una espera inicial de 2s.

El resultado de la detección sólo es ‘1' durante un scan deprograma.

Detección de estado de teclas.Existen unos relés asociados a cada tecla (ver Direccionamiento

de la Memoria en el Manual de Usuario de cada equipo), estos relésson reflejo del estado de cada una de las teclas.

Utilizando la instrucción LD puede detectarse la pulsación deteclas como si se tratase de pulsadores exteriores. Así, por ejemplopuede programarse:

LD 30 ;Detección de la tecla <ENTER> de un MIDA14.OUT 100 ;La salida digital 100 está activada todo el tiempo que la

;tecla <ENTER> esté pulsada.

Se debe observar el modo de programación descrito en elcapitulo Instrucciones Lógicas y Saltos de este Manual Técnico.

Page 143: Manual Tecnico de Programacion Plc PDF

RECONOCIMIENTO DE TECLADO IN-RT 3 99.01

INK XXXX

NEMÓNICO: INKOPERANDO XXXX: Constante que indica el código de la teclaCÓDIGO INSTRUCCIÓN: 85

DESCRIPCIÓN:

CARGA en pila lógica un estado ‘1' si el código de la última teclapulsada coincide con el indicado con el operando, en caso contrarioel estado cargado es ‘0'.El operando XXXX es el código de la tecla que se desea detectar.El código de tecla es diferente en cada equipo MIDA, ver Manual deUsuario de este.Existe un registro de última tecla pulsada que se activa cuando sepulsa cualquier tecla, y se desactiva cuando la instrucción INKreconoce la tecla buscada.Incrementa un nivel la pila lógica (+1)

# Ejemplo:

INK 340 ;Detección de la tecla <ENTER> de un MIDA64JNZ 100 ;Si la última tecla pulsada es <ENTER>, la

;ejecución pasa a la línea de programa 100INK 344 ;Detección de la tecla <7>JNZ 200 ;Pero si la última tecla pulsada es <7>, la

:ejecución pasa a la línea de programa 200INK 341 ;Detección de la tecla CLEAR>OUT 500 ;Al pulsar <CLEAR>, el relé interno 500 se activa

;durante un scan de programa.

INK

Page 144: Manual Tecnico de Programacion Plc PDF

RECONOCIMIENTO DE TECLADO IN-RT 4 99.01

# EJEMPLOS:

Para efectuar estos ejemplos deberemos comprobar las instrucciones y el direccionamiento de losrelés/registros de la memoria, disponibles en el equipo MIDA que estamos programando.

A.- También puede descargarse la pulsación de una tecla sobre unrelé interno cualquiera:

INK 63 ;Detección del relé de una teclaOUT 500 ;El relé interno 500 es ‘1' cada vez que se detecta

;la pulsación de la tecla

El resultado de la detección sólo es ‘1' durante un scan de programa.

B.- Paro / marcha mediante dos teclas definidas.

INK 340 ;Detección del relé de una tecla (paro).OUT 400 ;Descarga la pulsación de la tecla durante un

;scan de programaINK 344 ;Detección del relé de una tecla (marcha)OUT 401 ;Descarga la pulsación de la tecla durante

;un scan de programaLD 400OR 101ANDNT 401OUT 101 ;Se realiza una malla de paro / marcha sencilla

C.- Realización de un menú con tres opciones que atienda a laspulsaciones de las teclas ENTER, UP y CLEAR para desviar el flujo deprograma hacia tres subrutinas diferentes en las que activarán relés.

;Tabla literalestexto0 lite “PRIMER MENU”texto1 lite “SEGUNDO MENU”texto2 lite “TERCER MENU”;

Page 145: Manual Tecnico de Programacion Plc PDF

RECONOCIMIENTO DE TECLADO IN-RT 5 99.01

tec0 INK 60 ;Detección de tecla <ENTER>, por ejemplo.JZ tec1 ;Si ha sido pulsada la tecla <ENTER> continua en

;la siguiente línea de programa, de lo contrario;salta a la etiqueta de programa tec1.

CLEAR ;Borra el buffer intermedio y sitúa el puntero:en primera posición.

DISL 0 ;Copia en el buffer intermedio el primer mensaje;de la tabla de literales.

COM 0 ;Visualiza el contenido del buffer intermedio en el;display LCD.

CALL rut1 ;Llamada a la rutina de programa rut1.tec1 INK 62 ;Detección de tecla <CLEAR>, por ejemplo.

JZ tec2 ;Si ha sido pulsada la tecla <CLEAR> continua en;la siguiente línea de programa, de lo contrario;salta a la etiqueta de programa tec2.

CLEAR ;Borra el buffer intermedio y sitúa el puntero:en primera posición.

DISL 1 ;Copia en el buffer intermedio el segundo mensaje;de la tabla de literales.

COM 0 ;Visualiza el contenido del buffer intermedio en el;display LCD.

CALL rut2 ;Llamada a la rutina de programa rut2.tec2 INK 63 ;Detección de tecla <UP>, por ejemplo.

JZ tec1 ;Si ha sido pulsada la tecla <UP> continua en;la siguiente línea de programa, de lo contrario;salta a la etiqueta de programa tec1.

CLEAR ;Borra el buffer intermedio y sitúa el puntero:en primera posición.

DISL 2 ;Copia en el buffer intermedio el tercer mensaje;de la tabla de literales.

COM 0 ;Visualiza el contenido del buffer intermedio en el;display LCD.

CALL rut3 ;Llamada a la rutina de programa rut3.END

rut1 RESET 101 ;Desactiva el relé 101.RESET 102 ;Desactiva el relé 102.SET 100 ;Activa el relé 100.RET ;Vuelve a la línea siguiente del programa desde

;donde se produjo la llamada (CALL) a esta;subrutina.

Page 146: Manual Tecnico de Programacion Plc PDF

RECONOCIMIENTO DE TECLADO IN-RT 6 99.01

rut2 RESET 100 ;Desactiva el relé 100.RESET 102 ;Desactiva el relé 102.SET 101 ;Activa el relé 101RET ;Vuelve a la línea siguiente del programa desde

;donde se produjo la llamada (CALL) a esta;subrutina.

rut3 RESET 100 ;Desactiva el relé 100.RESET 101 ;Desactiva el relé 101.SET 102 ;Activa el relé 102.RET ;Vuelve a la línea siguiente del programa desde

;donde se produjo la llamada (CALL) a esta;subrutina.

END

Page 147: Manual Tecnico de Programacion Plc PDF

RECONOCIMIENTO DE TECLADO IN-RT 7 99.01

! INTRODUCCIÓN DE DATOS NUMERICOS.

Existe dos grupos de instrucciones para la introducción de datosnuméricos:

" Introducción de datos, deteniendo el programa usuario." Introducción de datos, sin detener el programa usuario.

Introducción de datos, deteniendo el programa.

Dependiendo de las instrucciones INI, INF e INICF queutilicemos, estas nos permiten introducir datos numéricos enteros y encoma flotante, desde el teclado del equipo (claves de acceso,preselecciones de tiempos ó de contajes, consignas de alarma, etc.).

Cuando se ejecuta cualquiera de estas instrucciones apareceen el punto del display LCD fijado por programa tantos asteriscoscomo procedan según el formato que se fija en el operando de lainstrucción. La introducción de datos numéricos se realiza mediantelas teclas del equipo. Si se comete cualquier error en la introduccióndel dato, puede anularse mediante la tecla <CLEAR>.

La introducción finaliza cuando se pulsa la tecla <ENTER> paraaceptar el dato introducido, por lo tanto el programa queda esperandoel <ENTER> de la finalización de la entrada de datos, para continuarla ejecución del mismo, por lo que a la hora de utilizar estasinstrucciones deberemos de tener en cuenta que detenemos laejecución del programa hasta que validamos la entrada del dato.

NOTA: Estas instrucciones detiene la ejecución del programa usuario.

Cualquier tecla, si se mantiene pulsada un tiempo, produce unaautorepetición, tal como ya se ha descrito más arriba, de 0.5 seg.después de los 2 seg. de espera inicial.

Las instrucciones INI, INF e INICF disponen de un o dosoperandos, según el equipo que estemos programando, siendo sucomportamiento diferente (ver Manual de Usuario del equipocorrespondiente para observar que instrucción se ha de utilizar):

Page 148: Manual Tecnico de Programacion Plc PDF

RECONOCIMIENTO DE TECLADO IN-RT 8 99.01

INI A (introducción de datos enteros)

AFormato de la introducción del dato. O número dedisplay LCD, sobre el cual se va a realizar laintroducción (equipos con más de un display LCD).

INF A B (introducción de datos en coma flotante)

AFormato de la introducción del dato. O número dedisplay LCD, sobre el cual se va a realizar laintroducción (equipos con más de un display LCD).

B Número de decimales (equipos con más de un displayLCD)

INICF AB (introducción de datos enteros con formato)

AB Formato de la introducción del dato.

El número máximo en formato entero que puede introducirseestá comprendido entre -32768 y 32767 (datos enteros de 16 bits consigno).

La posición del primer carácter viene dada por la posición delpuntero dentro del buffer intermedio (ver instrucción LOC).

En caso de que se este utilizando una instrucción INPIX, INPFX,INPCX o CLKP se esperará a que dicha instrucción acaba antes deejecutar cualquier instrucción INI, INF o INICF.

Page 149: Manual Tecnico de Programacion Plc PDF

RECONOCIMIENTO DE TECLADO IN-RT 9 99.01

Introducción de datos, sin detener el programa usuario.

También disponemos las instrucciones INPIX, INPFX e INPCXpara la introducción datos enteros o coma flotante, con la diferencia dela instrucciones anteriores (INI, INFe INICF) que estas no detienen laejecución del programa del usuario.

El funcionamiento de las instrucciones INPIX, INPFX e INPCXes a través de interrupciones, lo cual permite que el programa usuariono se detenga. Por el contrario el microprocesador del equipo MIDAtendrá más interrupciones que atender provocando que el programausuario se ejecute más lentamente.

Puede llegar a ocurrir que no se puedan atender todas lasinterrupciones simultáneamente perdiendo algunas interrupciones demenor prioridad. Este efecto es el causante de que durante laejecución de estas instrucciones, a veces falle algún mensaje decomunicación vía RS. El fallo es esporádico y si se tiene la precauciónde que en caso de fallo, se realizan reintentos, el problemadesaparece.

Dada la compatibilidad con las instrucciones DISIX y DISFX,para el caso de formatos negativos (justificación izquierda) lasinstrucciones INPIX, INPFX e INPCX tomaran el valor absoluto delformato para así poder utilizar los mismos punteros que para lasinstrucciones de visualización (esta compatibilidad depende delmodelo MIDA que estemos programando).

En el caso de la instrucción INPFX, el numero de decimales nolo tiene en cuenta, (pero es necesario ponerlo para guardar lacompatibilidad con la instrucción DISFX) pues es el propio usuario queal introducir el dato pone el punto decimal en el lugar que él lo desee.Ejemplo: Podemos utilizar el contenido 62 de un registro entero para lainstrucción DISFX (6 dígitos, dos de ellos decimales), pero a la veztambién para la instrucción INPFX, pero esta ultima ignorara elformato de número de decimales.

Page 150: Manual Tecnico de Programacion Plc PDF

RECONOCIMIENTO DE TECLADO IN-RT 10 99.01

INPIX A BC (introducción de datos enteros)

A Registro entero que contiene la dirección del registroentero donde almacenar el dato introducido.

BCRegistro entero que contiene el formato de laintroducción del dato. O número de display LCD, sobreel cual se va a realizar la introducción (equipos con másde un display LCD).

INPFX A BC (introducción de datos en coma flotante)

A Registro entero que contiene la dirección del registro encoma flotante donde almacenar el dato introducido.

BC

Registro entero que contiene el formato de laintroducción del dato. O número de display LCD, sobreel cual se va a realizar la introducción, y numero dedecimales (equipos con más de un display LCD).

INPCX A BC (introducción de datos enteros con formato)

A Registro entero que contiene la dirección del registro encoma flotante donde almacenar el dato introducido

BC Registro entero que contiene el formato de laintroducción del dato.

El número máximo en formato en coma flotante (IEEE de 32bits) que puede introducirse es el que resulta de la limitación de losdígitos que se pueden visualizar en los distintos displays de cadaequipo. Los datos al ser introducidos quedan en pila aritmética.

La posición del primer carácter viene dada por la posición del punterodentro del buffer intermedio (ver instrucción LOC).

Page 151: Manual Tecnico de Programacion Plc PDF

RECONOCIMIENTO DE TECLADO IN-RT 11 99.01

En caso de que se este ejecutando una instrucción INPIX,INPFX, INPCX o CLKP, no se puede ejecutar otra vez una de estasinstrucciones, hasta que no se halla finalizado la primera.

En los equipos MIDA que dispongan de un display LCD,mientras se esta introduciendo el dato se puede modificar el contenidode este. En la zona no ocupada por la introducción, el display LCDfuncionará normalmente y tras aceptar la introducción del dato, eldisplay LCD recuperará el contenido enviado sobre la zona ocupada.

En el caso de que el equipo MIDA disponga mas de un displayLCD, los displays LCD no afectados por la instrucción funcionaránnormalmente y tras aceptar la introducción del dato, el display LCDocupado recuperará el último contenido enviado.

En las instrucciones INPIX, INPFX e INPCX el contenidoalmacenado en los registros apuntados por los operandos debe estardentro de los márgenes.

En el registro entero con la dirección de destino del resultado, sino esta dentro de los márgenes se activará el error del equipo "Fuerade limites" en el registro entero de errores (ver Manual Usuario delequipo). Este error se activará justo después de ejecutar la instrucción.

En el registro entero con el formato del dato a introducir setomará un valor por defecto en caso de que el contenido no seacorrecto.

Existe un relé interno "Relé Input" (ver Manual Usuario delequipo), el cual se activara al llamar cualquier de las instruccionesINPIX, INPFX e INPCX y se mantendrá activada mientras estemosintroduciendo el dato. Se desactivara en el momento que validemos eldato con la tecla <ENTER>.

NOTA:El registro destino de la introducción del dato (mediante lasinstrucciones INI, INF, INICF, INPIX, INPFX, e INPCX) solo puede serun registro que se encuentre dentro de la RAM o NOVRAM y no sepueden utilizar registros que estén dentro de la EEPROM.

A continuación describimos las instrucciones de cada grupo:

Page 152: Manual Tecnico de Programacion Plc PDF

RECONOCIMIENTO DE TECLADO IN-RT 12 99.01

INI XXXX

NEMÓNICO: INIOPERANDO XXXX: Constante que indica el formato de la

introducción del dato o Número de display LCD, sobre el cual se va a realizar la introducción.

CÓDIGO INSTRUCCIÓN: 86

DESCRIPCIÓN:

INTRODUCCIÓN por el teclado del equipo de datos numéricosenteros.El operando fija el formato de introducción en cuanto a la cantidadde cifras que se van a permitir introducir (contando el signo) o es eldisplay LCD sobre el cual se va a realizar la introducción del dato(en equipos MIDA con mas de un display LCD).La ejecución de esta instrucción termina con la pulsación final de latecla <ENTER>.El dato introducido se carga sobre la pila aritmética.Incrementa un nivel la pila aritmética (+1).Detiene la ejecución del programa.

# Ejemplo para un MIDA con un display LCD de 32 caracteres:

CLEAR ;Borra el buffer intermedio y posiciona el puntero;de visualización en la primera posición.

DISL 19 ;Copia en el buffer intermedio el mensaje;declarado en vigésima posición dentro de la;tabla de textos del programa. Este mensaje sé;refiere al dato que se va a introducir.

LOC 20 ;Posiciona el puntero de visualización en la;posición 21 (centro de la segunda línea del LCD).

COM 0 ;Copia el contenido del buffer intermedio en el;LCD para que aparezca el mensaje referente al;dato que se va a introducir.

INI 4 ;Permite introducir un dato entero de cuatro cifras.

INI

Page 153: Manual Tecnico de Programacion Plc PDF

RECONOCIMIENTO DE TECLADO IN-RT 13 99.01

STOI 300 ;Almacena en el registro entero 300 el dato;introducido por teclado.

# Ejemplo para un MIDA con tres displays LCD de 4 1/2 dígitos:

CLEAR ;Borra el buffer intermedio y posiciona el puntero;de visualización en la primera posición.

DISL 0 ;Copia en el buffer intermedio el mensaje;declarado en la primera posición dentro de la;tabla de textos del programa. Este mensaje se;refiere al dato que se va a introducir.

COM 0 ;Copia el contenido del buffer intermedio en el;primer LCD (superior), para que aparezca el;mensaje referente al dato que se va a introducir.

CLEAR ;Borra el buffer intermedio y posiciona el puntero;de visualización en la primera posición.

INI 2 ;Permite introducir un dato entero en el tercer;LCD (inferior).

STOI 450 ;Almacena en el registro entero 450 el dato;introducido por teclado.

Page 154: Manual Tecnico de Programacion Plc PDF

RECONOCIMIENTO DE TECLADO IN-RT 14 99.01

INF XXXX YYYY

NEMÓNICO: INFOPERANDO XXXX: Constante que indica el formato de la

introducción del dato o Número de display LCD, sobre el cual se va a realizar la introducción.

OPERANDO YYYY: Constante que indica el número de decimales (solo en equipos MIDA con mas de un display LCD).

CÓDIGO INSTRUCCIÓN: 87

DESCRIPCIÓN:

INTRODUCCIÓN por el teclado del número de display o de datosnuméricos en coma flotante.El operando XXXX el formato de introducción en cuanto a lacantidad de cifras que se van a permitir introducir (se debe contar elsigno y el punto decimal) o es el display LCD sobre el cual se va arealizar la introducción del dato (según equipo MIDA).El operando YYYY indica el número de decimales (solo en equiposMIDA con mas de un display LCD).La ejecución de esta instrucción termina con la pulsación final de latecla <ENTER>.El dato introducido se carga sobre la pila aritmética.Incrementa dos niveles la pila aritmética (+2).Detiene la ejecución del programa.

# Ejemplo para un MIDA con un display LCD de 32 caracteres:

CLEAR ;Borra el buffer intermedio y posiciona el puntero;de visualización en la primera posición.

DISL 5 ;Copia en el buffer intermedio el mensaje;declarado en la posición 6 dentro de la tabla de;textos del programa

INF

Page 155: Manual Tecnico de Programacion Plc PDF

RECONOCIMIENTO DE TECLADO IN-RT 15 99.01

LOC 1 ;Posiciona el puntero de visualización en la;posición 2 del display LCD.

COM 0 ;Copia el contenido del buffer intermedio en el;display para que aparezca el mensaje referente;al dato que se va a introducir.

INF 8 ;Permite introducir un dato en coma flotante de;ocho cifras.

STOF 300 ;Almacena en el registro en coma flotante 300 el;dato introducido por teclado.

# Ejemplo para un MIDA con tres displays LCD de 4 1/2 dígitos:

CLEAR ;Borra el buffer intermedio y posiciona el puntero;de visualización en la primera posición.

DISL 1 ;Copia en el buffer intermedio el mensaje declarado;en la posición 2 dentro de la tabla de textos

COM 1 ;Copia el contenido del buffer intermedio en el;segundo LCD (medio), para que aparezca el;mensaje referente al dato que se va a introducir.

INF 2 1 ;Permite introducir un dato en coma flotante en el;tercer LCD (inferior), con un decimal.

STOF 300 ;Almacena en el registro en coma flotante 300 el;dato introducido por teclado

Page 156: Manual Tecnico de Programacion Plc PDF

RECONOCIMIENTO DE TECLADO IN-RT 16 99.01

INICF XXXX

NEMÓNICO: INICFOPERANDO XXXX: Constante que indica el formato de la

introducción del dato.CÓDIGO INSTRUCCIÓN: 86

DESCRIPCIÓN:

INTRODUCCIÓN por el teclado del equipo de datos numéricosenteros.El operando XXXX fija el formato de introducción en cuanto a lacantidad de cifras que se van a permitir introducir (sin tener encuenta el signo y el punto decimal) e indica la posición del puntodecimal.El formato es el siguiente: ABdonde A es el número de cifras que se van a permitir introducir ydonde B, indica la posición del punto decimal.Esta instrucción formatea la entrada de datos desde teclado encuanto a números de cifras y de decimales, pero el almacenamientoen memoria se realiza siempre sin decimales.Por lo que no se puede almacenar un número mayor de 3.2767 omenor de -327.68, puesto que los datos que se almacena son 32767y -32767 (dato entero de 16 bits con signo).La ejecución de esta instrucción termina con la pulsación final de latecla <ENTER>.El dato introducido se carga sobre la pila aritmética.Incrementa un nivel la pila aritmética (+1).Detiene la ejecución del programa.

# Ejemplo para un MIDA con un display LCD de 8 caracteres:

CLEAR ;Borra el buffer intermedio y posiciona el puntero;de visualización en la primera posición.

LOC 2 ;Posiciona el puntero de visualización en la;posición 3 del display LCD.

INICF

Page 157: Manual Tecnico de Programacion Plc PDF

RECONOCIMIENTO DE TECLADO IN-RT 17 99.01

INICF 32 ;Permite introducir un dato entero de tres cifras,;y el punto decimal después de la primera cifra.

STOI 400 ;Almacena en el registro entero 400 el dato;introducido por teclado.

Page 158: Manual Tecnico de Programacion Plc PDF

RECONOCIMIENTO DE TECLADO IN-RT 18 99.01

INPIX XXXX YYYY

NEMÓNICO: INPIXOPERANDO XXXX: Registro entero.OPERANDO YYYY: Registro entero.CÓDIGO INSTRUCCIÓN: 88

DESCRIPCIÓN:

INTRODUCCIÓN por el teclado del equipo de datos numéricos enenteros.El operando XXXX es el registro entero que contiene la dirección delregistro entero donde almacenar el dato introducido.El operando YYYY es el registro entero que contiene el formato dela introducción del dato. O es el display LCD sobre el cual se va arealizar la introducción del dato (en equipos MIDA con mas de undisplay LCD).El formato es el número de cifras a visualizar, incluyendo el signo. Siel formato es negativo se justifica a la izquierda y si es positivo a laderecha.Existe un relé interno "Relé Input" (ver Manual Usuario del equipo),el cual se activara al llamar esta instrucción y se mantendrá activadamientras estemos introduciendo el dato. Se desactivara en elmomento que validemos el dato con la tecla <ENTER>.No opera con las pilas (0).No detiene la ejecución del programa.

# Ejemplo para un equipo con un display LCD:

SETRI 725 400 ;Almacena el dato 400 en el reg. entero;725

SETRI 300 4 ;Almacena el dato 4 en el reg. entero 300.INPIX 725 300 ;Permite introducir un dato cuyo formato es

;el contenido del reg. entero 300 y;almacena el dato introducido en el reg.;entero 400, puesto que es el apuntado por; el reg. entero 725.

INPIX

Page 159: Manual Tecnico de Programacion Plc PDF

RECONOCIMIENTO DE TECLADO IN-RT 19 99.01

INPFX XXXX YYYY

NEMÓNICO: INPFXOPERANDO XXXX: Registro entero.OPERANDO YYYY: Registro entero.CÓDIGO INSTRUCCIÓN: 89

DESCRIPCIÓN:INTRODUCCIÓN por el teclado del equipo de datos numéricos encoma flotante.El operando XXXX es el registro entero que contiene la dirección delregistro en coma flotante donde almacenar el dato introducido.El operando YYYY es el registro que contiene el formato de laintroducción del dato. El formato es el siguiente: ABCdonde AB es el número de cifras a introducir, incluyendo el signo. Oes el display LCD sobre el cual se va a realizar la introducción deldato (en equipos MIDA con mas de un display LCD).Y donde C es el número de decimales (Ver compatibilidad deformato con la instrucción DISFX, al principio este capitulo).Existe un relé interno "Relé Input" (ver Manual Usuario del equipo),el cual se activara al llamar esta instrucción y se mantendrá activadamientras estemos introduciendo el dato. Se desactivara en elmomento que validemos el dato con la tecla <ENTER>.No opera con las pilas (0).No detiene la ejecución del programa.

# Ejemplo para un equipo con mas de un display LCD:

SETRI 310 250 ;Almacena el dato 250 en el reg. entero;310.

MOVCI 23 ;Carga en pila aritmética la constante 60.STOI 251 ;Almacena el contenido de la pila

;aritmética en el reg. entero 251.INPFX 310 251 ;Permite introducir un dato cuyo formato es

;el contenido del registro 251 (6 = 6 cifras;con signo) y Almacena el dato introducido;en el reg. en coma flotante 250, puesto;que es el apuntado por el reg. entero 310.

INPFX

Page 160: Manual Tecnico de Programacion Plc PDF

RECONOCIMIENTO DE TECLADO IN-RT 20 99.01

INPCX XXXX YYYY

NEMÓNICO: INPCXOPERANDO XXXX: Registro entero.OPERANDO YYYY: Registro entero.CÓDIGO INSTRUCCIÓN: 88

DESCRIPCIÓN:

INTRODUCCIÓN por el teclado del equipo de datos numéricosenteros.El operando XXXX es el registro entero que contiene la dirección delregistro entero donde almacenar el dato introducido.El operando YYYY es el registro entero que contiene el formato dela introducción del dato en cuanto a la cantidad de cifras que se vana permitir introducir (sin tener en cuenta el signo y el punto decimal)e indica la posición del punto decimal.El formato es el siguiente: ABDonde A es el número de cifras que se van a permitir introducir ydonde B, indica la posición del punto decimal.Esta instrucción formatea la entrada de datos desde teclado encuanto a números de cifras y de decimales, pero el almacenamientoen memoria se realiza siempre sin decimales.Por lo que no se puede almacenar un número mayor de 3.2767 omenor de -327.68, puesto que los datos que se almacena son 32767y -32767 (dato entero de 16 bits con signo).La ejecución de esta instrucción termina con la pulsación final de latecla <ENTER>.Existe un relé interno "Relé Input" (ver Manual Usuario del equipo),el cual se activara al llamar esta instrucción y se mantendrá activadamientras estemos introduciendo el dato. Se desactivara en elmomento que validemos el dato con la tecla <ENTER>.El dato introducido se carga sobre la pila aritmética.Incrementa un nivel la pila aritmética (+1).No detiene la ejecución del programa.

INPCX

Page 161: Manual Tecnico de Programacion Plc PDF

RECONOCIMIENTO DE TECLADO IN-RT 21 99.01

# Ejemplo para un MIDA con un display LCD de 8 caracteres:

MOVCI 500 ;Carga en pila aritmética la constante 500.STOI 650 ;Almacena el contenido de la pila

;aritmética en el reg. entero 650.MOVCI 52 ;Carga en pila aritmética la constante 52.STOI 700 ;Almacena el contenido de la pila

;aritmética en el reg. entero 700.INPCX 650 700 ;Permite introducir un dato cuyo formato es

;el contenido del registro 700 (5 cifras con;dos decimales) y Almacena el dato;introducido en el reg. entero 500, puesto;que es el apuntado por el reg. entero 650.

Page 162: Manual Tecnico de Programacion Plc PDF

RECONOCIMIENTO DE TECLADO IN-RT 22 99.01

# EJEMPLOS:

Para efectuar estos ejemplos deberemos comprobar las instrucciones y el direccionamiento de losrelés/registros de la memoria, disponibles en el equipo MIDA que estamos programando.

A.- Para un display LCD de 16x2 caracteres.Introducción de un dato entero de dos cifras con signo, a partir delprimer punto de la segunda línea del display. En la primera línea deldisplay LCD debe aparecer un texto.El dato se almacenará posteriormente en el registro entero 800.

CLEAR ;Borra el buffer intermedio y sitúa el;puntero en la primera posición.

DISL texto ;Copia en el buffer intermedio el mensaje;de la tabla de textos apuntado.

COM 0 ;Visualiza el contenido del buffer;intermedio en el display LCD.

INI 3 ;Permite la introducción de tres cifras;(uno va a ser el signo). Una vez;introducido y pulsado la tecla ENTER,;dejamos el resultado en la pila aritmética.

STOI 800 ;Almacena en el contenido de la pila;aritmética en el registro entero 800

En el display LCD aparece:

M E N S A J E I N T R O D .

* * *

Page 163: Manual Tecnico de Programacion Plc PDF

RECONOCIMIENTO DE TECLADO IN-RT 23 99.01

B.- Introducción de un dato en coma flotante de ocho cifras conposibilidad de ser negativo a partir de la tercera posición de la primeralínea del display.Al final del dato que se introduce debe visualizarse la leyenda m/s.El dato se almacenará en el registro en coma flotante 500.

CLEAR ;Borra el buffer intermedio y sitúa el;puntero en la primera posición.

LOC 12 ;Posiciona puntero visualizaciónDISCH 109 ;Copia al buffer intermedio el carácter "m"DISCH 47 ;Copia al buffer intermedio el carácter "/"DISCH 115 ;Copia al buffer intermedio el carácter "s"DISCH 46 ;Copia al buffer intermedio el carácter "."LOC 2 ;Posiciona puntero de visualización.COM 0 ;Visualiza el contenido del buffer

;intermedio en el display LCD (m/s).INF 10 ;Permite la introducción de 10 cifras

;(uno puede ser el signo y otro el punto;decimal). ). Una vez introducido y pulsado;la tecla ENTER, dejamos el resultado en;la pila aritmética.

STOF 500 ;Almacena en el contenido de la pila;aritmética en el registro en coma flotante;500

El aspecto del display es:

* * * * * * * * * * m / s .

Page 164: Manual Tecnico de Programacion Plc PDF

RECONOCIMIENTO DE TECLADO IN-RT 24 99.01

C.- Se trata de introducir un dato en coma flotante por teclado de cincocifras con signo. Al mismo tiempo que se introduce el dato utilizaremosel relé interno "Relé Input" para activar una salida.

;Definición de textostext0 lite “PULSA F1”text1 lite “INTROD CODIGO”

SETRI 600 500 ;Almacena el dato 500 en el reg. entero;600.

SETRI 300 6 ;Almacena el dato 6 en el reg. entero 300.CLEAR ;Borra el buffer intermedio y sitúa el

;puntero en primera posiciónDISL text0 ;Copia en el buffer intermedio el texto de la

;tabla de textos "text0"COM 0 ;Visualiza el contenido del buffer

;intermedio en el display LCDINK 356 ;Detecta la pulsación una teclaRESET 104 ;Desactiva el relé 104JZ fin ;Salta a "fin" si la tecla no ha sido pulsada

conti CLEAR ;Borra el buffer intermedio y sitúa el;puntero en la primera posición.

DISL text1 ;Copia en el buffer intermedio el texto de la;tabla de textos "text1"

COM 0 ;Visualiza el contenido del buffer;intermedio en el display LCD

INPFX 600 300 ;Permite la introducción de un dato cuyo;formato se encuentra en el reg entero 300;y almacena el dato introducido en el reg.;entero que se encuentra apuntado por el;registro entero 600.

LD 391 ;Carga en pila lógica el estado del relé 391;(correspondiente al Relé Input)

OUT 104 ;Carga el valor lógico del relé 391 a la;salida 104

INK 340 ;Detección de una teclaJZ conti ;Si no se pulsa la tecla salta a "conti"

fin END

Page 165: Manual Tecnico de Programacion Plc PDF

RECONOCIMIENTO DE TECLADO IN-RT 25 99.01

D.- Se trata de introducir un número de cuatro cifras con 2 decimales yalmacenar el dato en el registro 500. Al mismo tiempo queintroducimos el dato tenemos una salida la 105, que esta mandandoun tren de impulsos. Dicha salida se conecta con la entrada 1 y sedetiene con la entrada 2. También podemos observar que el "ReléInput", se pone a uno mientras llamamos a la instrucción INPCX.Observaremos que mientras se ejecuta dicha instrucción la salidapulsante sigue actuando, con lo que vemos que el programa no sedetiene.

;Definición de textostext1 lite “INTROD CODIGO”

LD 1 ;Carga en pila lógica el estado de la;entrada 1

LD 400 ;Carga en pila lógica el estado del relé 400ORLD ;Realiza una or lógica entre la entrada 1 y

;el relé400.ANDNT 2 ;Realiza una and negada de la entrada 2

;con el bloque lógico anterior.OUT 400 ;Descarga el resultado de la función lógica

;realizada sobre el relé 400LD 400 ;Carga en pila lógica el estado de la

;entrada 400ANDNT 401 ;Realiza una and negada de la entrada 401

;con la entrada anterior 400TIM 250 10 ;Temporiza 10 décimas de segundoOUT 105 ;Descarga el resultado de la función lógica

;realizada sobre la salida 105LD 105 ;Carga en pila lógica el estado de la

;entrada 105TIM 251 10 ;Temporiza 10 décimas de segundoOUT 401 ;Descarga el resultado de la función lógica

;sobre la salida del relé 401.MOVCF 500 ;Carga en pila aritmética la constante 500STOF 600 ;Almacena en el registro entero 600 la

;constante 500.MOVCI 42 ;Carga en pila aritmética la constante 42

Page 166: Manual Tecnico de Programacion Plc PDF

RECONOCIMIENTO DE TECLADO IN-RT 26 99.01

STOI 300 ;Almacena en el registro entero 300 la;constante 42.

CLEAR ;Borra el buffer intermedio y sitúa el;puntero en primera posición

DISL text1 ;Copia en el buffer intermedio el texto de la;tabla de textos "text1"

COM 0 ;Visualiza el contenido del buffer;intermedio en el display LCD

INPCX 600 300 ;Permite la introducción de un dato cuyo;formato se encuentra en el registro entero;300 y almacena el dato introducido en el;registro entero apuntado por el registro;300

LD 391 ;Carga en pila lógica el estado del relé 391;(correspondiente al Relé Input)

OUT 104 ;Saca el valor por la salida 104END

Page 167: Manual Tecnico de Programacion Plc PDF

VISUALIZACIÓN Y COMUNICACIONES IN-VC 1 99.01

Las instrucciones que utilizaremos para la visualización ytransmisión por los puertos de comunicaciones son:

CLEAR DISRI DISIX DISL

LOC DISRF DISFX DISLX

LOCX DISCH DISCX COM

! MODO DE PROGRAMACIÓN

Mediante el juego de instrucciones descrito se pueden visualizaró transmitir por los puertos de comunicaciones:

" Contenidos de registros enteros." Contenidos de registros en coma flotante." Caracteres de la tabla ASCII." Los mensajes de la tabla de textos del programa.

El buffer intermedio disponible es de 132 bytes. Todas lasinstrucciones descritas operan sobre el buffer intermedio. Sólo lainstrucción COM lo hace directamente sobre los visualizadores ópuertos de comunicaciones.

El operando de la instrucción COM indica donde se envía elcontenido del buffer intermedio:

La programación consiste en componer la visualización en elbuffer intermedio y luego copiarla sobre el destino deseado.

Page 168: Manual Tecnico de Programacion Plc PDF

VISUALIZACIÓN Y COMUNICACIONES IN-VC 2 99.01

! VISUALIZACIÓN Y TRANSMISIÓN DE DATOS.

Todas las instrucciones de visualización y transmisión operansobre el buffer intermedio. Sólo la instrucción COM operadirectamente sobre los visualizadores ó puertos de comunicaciones.

Toda la composición que se realice sobre el buffer intermediomediante las instrucciones descritas debe ser copiado sobre losvisualizadores ó los puertos de comunicaciones. La instrucción quepermite esta copia es COM.

El modo de programación con los puertos de comunicacioneses exactamente la misma que la de visualización.

Cada equipo dispone de un registro entero para cada uno de lospuertos de comunicaciones, en donde se especifica el ancho detransmisión (Ver Manual de Usuario del equipo correspondiente).El valor que contenga este registro es el número de caracteres que elpuerto de comunicaciones transmitirá al ejecutarse una instrucciónCOM.Por ejemplo, si tenemos el registro entero que corresponde al anchode transmisión en 40, cada vez que el equipo realiza una inicializacióncarga dicho dato sobre el registro. Si se precisa otro ancho debeinicializarse este registro al principio del programa.

El equipo dispone de relés internos para detectar el estado y eltime-out de los puertos de comunicaciones, ver Manual de Usuario delequipo correspondiente.Los relés que disponemos son, según los equipos:

• De Recepción: Se activa cada vez que hay una recepción.• De Transmisión: Se activa cada vez que hay una transmisión.• De señal CTS: Permanece activado siempre que la señal de

hardware CTS esta activado.Indicando que el equipo puede transmitir.

• De Time-Out: Se activa cada vez que el equipo llega a unTime-Out, es decir, 5 seg. después de unintento de transmisión sin éxito.

Page 169: Manual Tecnico de Programacion Plc PDF

VISUALIZACIÓN Y COMUNICACIONES IN-VC 3 99.01

Así por ejemplo, es posible realizar programas que detecten si unaimpresora está en off-line para dar el error pertinente mediante unmensaje de reintentar ó abandonar la impresión.La dirección de los displays consultar en el Manual de Usuario delequipo correspondiente.

En la visualización el equipo empleara los n primeroscaracteres enviados para completar el display, el resto sedespreciara.Por ejemplo: en un display de 8 caracteres enviamos un texto de16, únicamente visualizara los ocho primeros.En algunos equipos se dispone de la posibilidad de visualizartextos más largos que su propio display mediante la rotación detextos.

Page 170: Manual Tecnico de Programacion Plc PDF

VISUALIZACIÓN Y COMUNICACIONES IN-VC 4 99.01

COM XXXX

NEMÓNICO: COMOPERANDO XXXX: Constante que indica el destino de la copia

procedente del buffer intermedio.CÓDIGO INSTRUCCIÓN: 80

DESCRIPCIÓN:

COPIA del buffer intermedio a visualizadores y/ó puertos decomunicaciones.El operando es el destino de la copia (ver Manual de Usuario delequipo correspondiente).No opera con las pilas (0)

# Ejemplo para un MIDA64:

CLEAR ;Borra buffer intermedio, dejando el puntero de;visualización en la primera posición (la cero).

DISL 1 ;Copia en buffer intermedio el mensaje en;primera posición de la tabla de textos del;programa.

COM 0 ;Copia el contenido del buffer intermedio en el;display LCD.

COM 1 ;También copia el contenido del buffer intermedio;al puerto de comunicaciones COM1.

COM 2 ;También copia el contenido del buffer intermedio;al puerto de comunicaciones COM2.

COM 3 ;Y también copia el contenido del buffer intermedio;al display de 6 dígitos rojo.

COM

Page 171: Manual Tecnico de Programacion Plc PDF

VISUALIZACIÓN Y COMUNICACIONES IN-VC 5 99.01

! PUNTERO DEL BUFFER INTERMEDIO.

El posicionamiento de los datos en el buffer intermedio se hacemediante las instrucciones CLEAR, LOC y LOCX.

El puntero (cursor) de visualización es un registro internoreservado que contiene la posición en la que se va a colocar elpróximo carácter que se va a introducir en el buffer intermedio.

El puntero de visualización se va moviendo a medida que sevan ejecutando las instrucciones de visualización y en función de lacantidad de datos que se graban en el buffer intermedio.NOTA: Tener en cuenta que la primera posición del buffer intermedioes la 0.

Mediante las instrucciones indicadas, es posible alterar estepuntero para controlar la visualización.

La instrucción CLEAR posiciona el puntero en la primeraposición del buffer intermedio, habiendo borrado previamente elcontenido del buffer.

Las instrucciones LOC y LOCX simplemente posicionan elcursor (puntero de visualización) en la posición indicada por susoperandos.

El operando de la instrucción LOC indica en valor absoluto ellugar donde se posiciona el cursor.

El operando de la instrucción LOCX indica el registro quecontiene el lugar donde se posiciona el cursor.

A continuación describimos las instrucciones de este grupo:

Page 172: Manual Tecnico de Programacion Plc PDF

VISUALIZACIÓN Y COMUNICACIONES IN-VC 6 99.01

CLEAR

NEMÓNICO: CLEAROPERANDO XXXX: No dispone de operando.CÓDIGO INSTRUCCIÓN: 70

DESCRIPCIÓN:

BORRA el contenido del buffer intermedio y pone el puntero devisualización en la primera posición (posición 0).No opera con las pilas (0).

# Ejemplo:

CLEAR ;Borra buffer intermedio, dejando el puntero de;visualización en la primera posición de la;izquierda (la cero).

COM 0 ;Borra el LCDCOM 1 ;Envía por COM1 (RS232) una línea en blanco.COM 2 ;Envía por COM2 (RS485) una línea en blanco.

hasta 132 caracteres(Buffer intermedio)

CLEAR

Page 173: Manual Tecnico de Programacion Plc PDF

VISUALIZACIÓN Y COMUNICACIONES IN-VC 7 99.01

LOC XXXX

NEMÓNICO: LOCOPERANDO XXXX: Constante que indica la posición dentro del

buffer intermedio.CÓDIGO INSTRUCCIÓN: 75

DESCRIPCIÓN:

POSICIONA el puntero de visualización en un punto determinado delbuffer intermedio.El operando es el punto del buffer intermedio donde se almacenaráel próximo carácter.La primera posición es la 0.No opera con las pilas (0)

# Ejemplo:

CLEAR ;Borra buffer intermedio, dejando el puntero de;visualización en la primera posición (la cero).

LOC 4 ;Posiciona el puntero de visualización en la;cuarta posición (la primera es la cero).

DISL 29 ;Copia en el buffer intermedio el mensaje;declarado en la posición treinta (el primero es el;cero) dentro de la tabla de textos del programa.

COM 0 ;Copia el contenido del buffer intermedio en el;display LCD.

M I M E N S A hasta 132caracteres

$ (Buffer intermedio)

LOC

Page 174: Manual Tecnico de Programacion Plc PDF

VISUALIZACIÓN Y COMUNICACIONES IN-VC 8 99.01

LOCX XXXX

NEMÓNICO: LOCXOPERANDO XXXX: Registro entero.CÓDIGO INSTRUCCIÓN: 76

DESCRIPCIÓN:

POSICIONA el puntero de visualización en el punto del bufferintermedio contenido en un registro entero.El operando es la dirección del registro entero que contiene el puntodel buffer intermedio donde se almacenará el próximo carácter.La primera posición es la 0.No opera con las pilas (0)

# Ejemplo:

MOVCI 1 ;Carga en pila aritmética la constante 2.STOI 300 ;Almacena el contenido de la pila aritmética en el

;registro entero 300CLEAR ;Borra buffer intermedio, dejando el puntero de

;visualización en la primera posición (la cero).LOCX 300 ;Posiciona el puntero de visualización en la

;primera posición (la primera es la cero).DISL 29 ;Copia en el buffer intermedio el mensaje

;declarado en la posición treinta (el primero es el;cero) dentro de la tabla de textos del programa

COM 0 ;Copia el contenido del buffer intermedio en el;display LCD.

O T R O M E N S A J hasta 132caracteres

$ (Buffer intermedio)

LOCX

Page 175: Manual Tecnico de Programacion Plc PDF

VISUALIZACIÓN Y COMUNICACIONES IN-VC 9 99.01

! MENSAJES Y CARACTERES ASCII.

Para visualizar y transmitir los mensajes utilizamos lasinstrucciones DISL y DISLX. El equipo dispone de una tabla de unnúmero determinado de mensajes y de caracteres cada uno. (ver elManual de Usuario).

Estos mensajes deben declararse en el mismo programamediante la directiva LITE, en caso de programar el equipo con uneditor standard.

Cada mensaje dispone de un número de caracteres, tanto sison completos como sino. Así pues, aunque un mensaje contenga 1, 2ó 3 caracteres, su visualización ocupará igualmente el máximo delongitud de caracteres que acepta el mensaje, puesto que el resto secompleta con espacios en blanco.

En el buffer intermedio los mensajes pueden encadenarse unosa otros para formar otros más largos.

Mediante las instrucciones LOC y LOCX, se puede manejar elpuntero de visualización para que podamos intercalar en un mensajedatos numéricos, caracteres adicionales, etc.

El operando de la instrucción DISL indica en valor absoluto laposición del mensaje dentro de la tabla de textos, empieza desdecero.

El operando de la instrucción DISLX indica el registro enteroque contiene la posición del mensaje dentro de la tabla.

También podemos visualizar caracteres ASCII de formaindividual mediante la instrucción DISCH.

Por ultimo comentar la instrucción DISCX, que contiene unoperando en el que situamos el registro entero que contiene elcarácter ASCII a grabar en el buffer intermedio.

Consultar la tabla de caracteres ASCII disponible para cadaequipo y tipo de display en el Manual de Usuario correspondiente aeste.

Si el mensaje enviado al buffer intermedio es mayor a loscaracteres disponibles en el display, visualiza los primeros caracteresdespreciando el resto de ellos.

A continuación describimos las instrucciones de este grupo:

Page 176: Manual Tecnico de Programacion Plc PDF

VISUALIZACIÓN Y COMUNICACIONES IN-VC 10 99.01

DISL XXXX

NEMÓNICO: DISLOPERANDO XXXX: Constante que indica la dirección del mensaje

dentro de la tabla de textos.CÓDIGO INSTRUCCIÓN: 71

DESCRIPCIÓN:

COPIA en el buffer intermedio un mensaje de la tabla de textos delprograma.El operando es la dirección del mensaje dentro de la tabla de textos.El primer mensaje de la tabla es el 0.No opera con las pilas. (0)

# Ejemplo:

Text1 lite "Mensaje Uno"Text2 lite "Mensaje Dos"Text3 lite "Mensaje Tres"Text4 lite "Mensaje Cuatro"Text5 lite "Mensaje Cinco"

CLEAR ;Borra buffer intermedio, dejando el cursor;primera posición (la cero).

DISL 3 ;Copia en el buffer intermedio el texto número 4;(dirección 3) de la tabla, colocándolo en la:primera posición del buffer intermedio (la;dirección del primer mensaje es la 0).

COM 0 ;Copia el mensaje "Mensaje Cuatro" del buffer;intermedio al display LCD.

DISL

Page 177: Manual Tecnico de Programacion Plc PDF

VISUALIZACIÓN Y COMUNICACIONES IN-VC 11 99.01

DISLX XXXX

NEMÓNICO: DISLXOPERANDO XXXX: Registro entero.CÓDIGO INSTRUCCIÓN: 72

DESCRIPCIÓN:

COPIA en el buffer intermedio el mensaje apuntado.El operando es el registro entero que contiene la dirección delmensaje dentro de la tabla de textos del programa.El primer mensaje de la tabla es el 0.No opera con las pilas. (0)

# Ejemplo:

Text1 lite "Mensaje Uno"Text2 lite "Mensaje Dos"Text3 lite "Mensaje Tres"Text4 lite "Mensaje Cuatro"Text5 lite "Mensaje Cinco"

MOVCI 2 ;Carga en pila aritmética la constante 2.STOI 410 ;Almacena el contenido de la pila aritmética en el

;registro entero 410.CLEAR ;Borra buffer intermedio, dejando el puntero de

;visualización en la primera posición (la cero).DISLX 410 ;Copia en el buffer intermedio el texto número 3

;(dirección 2) de la tabla de textos (la dirección del;primer mensaje es la 0).

COM 0 ;Copia el mensaje "Mensaje Tres" del buffer;intermedio al display LCD.

DISLX

Page 178: Manual Tecnico de Programacion Plc PDF

VISUALIZACIÓN Y COMUNICACIONES IN-VC 12 99.01

DISCH XXXX

NEMÓNICO: DISCHOPERANDO XXXX: Valor decimal del carácter ASCII.CÓDIGO INSTRUCCIÓN: 77

DESCRIPCIÓN:

COPIA en el buffer intermedio el carácter ASCII indicado.El operando es el valor decimal del carácter ASCII correspondiente.Consultar el Manual de Usuario correspondiente para cada equipopara ver los caracteres ASCII compatibles para estos.No opera con las pilas. (0)

# Ejemplo:

CLEAR ;Borra el buffer intermedio, dejando el puntero de;visualización en la primera posición.

DISCH 79 ;Copia en el buffer intermedio el carácter “O”.DISCH 75 ;Copia en el buffer intermedio el carácter “K”.COM 1 ;Copia el contenido del buffer intermedio al

;puerto de comunicaciones.

DISCH

Page 179: Manual Tecnico de Programacion Plc PDF

VISUALIZACIÓN Y COMUNICACIONES IN-VC 13 99.01

DISCX XXXX

NEMÓNICO: DISCXOPERANDO XXXX: Registro entero.CÓDIGO INSTRUCCIÓN: 81

DESCRIPCIÓN:

COPIA en el buffer intermedio el carácter ASCII apuntado en elregistro indicado en el operando.El operando XXXX es el registro entero que contiene el valor decimaldel carácter ASCII a transferir.Consultar el Manual de Usuario correspondiente para cada equipopara ver los caracteres ASCII compatibles para estos.No opera con las pilas (0)

# Ejemplo:

MOVCI 79 ;Carga en pila aritmética la constante 79.STOI 200 ;Almacena el contenido de la pila aritmética en el

;registro entero 200.CLEAR ;Borra buffer intermedio, dejando el puntero de

;visualización en la primera posición (la cero).DISCX 200 ;Copia en el buffer intermedio el carácter ASCII 79

;(O) puesto que es el apuntado por el registro;entero 200.

COM 0 ;Copia el contenido del buffer intermedio al;display LCD.

DISCX

Page 180: Manual Tecnico de Programacion Plc PDF

VISUALIZACIÓN Y COMUNICACIONES IN-VC 14 99.01

# EJEMPLOS:Para efectuar estos ejemplos deberemos comprobar las instrucciones y el direccionamiento de losrelés/registros de la memoria, disponibles en el equipo MIDA que estamos programando.

A.-

;DEFINICIÓN DE TEXTOStext1 lite “Este es un texto”text2 lite “de 32 caracteres”text3 lite “s”;

MOVCI 33 ;Carga en pila aritmética la constante 33.STOI 20 ;Almacena el contenido de la pila

;aritmética en el reg. entero 20. (registro;correspondiente al ancho de transmisión;deseado para COM1)

MOVCI 16 ;Carga en pila aritmética la constante 16.STOI 21 ;Almacena el contenido de la pila

;aritmética en el reg. entero 21. (registro;correspondiente al ancho de transmisión;deseado para COM2)

CLEAR ;Borra el buffer intermedio y sitúa el;puntero en la primera posición.

DISL text1 ;Carga en el buffer intermedio el mensaje;de la tabla de textos apuntado.

DISL text2 ;Carga en el buffer intermedio el mensaje;de la tabla de textos apuntado.

DISL text3 ;Carga en el buffer intermedio el mensaje;de la tabla de textos apuntado.

COM 1 ;Transmisión del buffer intermedio a COM1COM 2 ;Transmisión del buffer intermedio a COM2

Resultado:

Este es un texto de 32 caracteres(Transmisión por COM1)

Este es un texto(Transmisión por COM2)

Page 181: Manual Tecnico de Programacion Plc PDF

VISUALIZACIÓN Y COMUNICACIONES IN-VC 15 99.01

B.-

;DECLARACIÓN DE TEXTOS;texto_A lite “Este es texto 1”texto_B lite “Alarma tension”;;PROGRAMA

...

...MOVCI 1 ;Carga en pila aritmética la constante 1STOI 500 ;Almacena el contenido de la pila

;aritmética en el reg. entero 500.CLEAR ;Borra el buffer intermedio y sitúa el

;puntero en la primera posición.DISL texto_A ;Carga en el buffer intermedio el mensaje

;de la tabla de textos apuntado.DISLX 500 ;Copia en el buffer intermedio el texto

;número 2 (dirección 1) de la tabla de;textos (la dirección del primer mensaje es;la 0).

COM 0 ;Visualiza el contenido del buffer;intermedio en el display LCD.

E s t e e s t e x t o

1 A l a r m a t e n s i

o n Hasta 132 caracteres(Buffer intermedio)

Page 182: Manual Tecnico de Programacion Plc PDF

VISUALIZACIÓN Y COMUNICACIONES IN-VC 16 99.01

! VISUALIZACIÓN Y TRANSMISIÓN DE DATOS NUMÉRICOS.

Se pueden visualizar y transmitir datos numéricos en formatosentero y coma flotante.

Para ello tenemos las instrucciones DISRI y DISRF en lascuales consta de dos operandos.

El segundo operando de estas instrucciones indica cómo seformatea el dato, es decir, con cuántos dígitos y decimales, así comola justificación derecha ó izquierda.

Cuando se visualicen datos introducidos desde el teclado debetenerse en cuenta el formato con que se han introducido.

El signo negativo se visualiza, pero el positivo no. Esto implicaque la visualización se corre un lugar a la izquierda dejando unespacio en blanco cuando el dato es positivo.

Si se introduce un formato de visualización 0 en enteros, elequipo visualiza el dato utilizando todos las caracteres necesariospara su representación.

Si se introduce un formato de visualización 0 en coma flotante,el equipo visualiza el dato utilizando todos los caracteres necesariospara su representación con 0 decimales.

El equipo reserva espacio en el buffer intermedio para lavisualización, según sea el formato programado dejando el resto delos caracteres en blanco. Pero si el dato es mayor que el formato (porerror, etc.), el equipo siempre visualiza utilizando los caracteresnecesarios para no falsear la visualización.

En visualización de datos en coma flotante si se utilizanformatos de una sola cifra, el número de decimales que se van avisualizar es 0.

Se deben evitar formatos de visualización imposibles ó nocorrectos, ya que podrían producirse efectos no deseados en lavisualización general del equipo. El compilador no detecta los formatosno permitidos.

Además, disponemos de dos instrucciones DISIX y DISFX, lascuales funcionan iguales que las anteriores, pero estas son indexadas(ver compatibilidad de formato con las instrucciones INPIX e INPFX enel capitulo "Reconocimiento de Teclado" en este mismo Manual).

A continuación describimos las instrucciones de este grupo:

Page 183: Manual Tecnico de Programacion Plc PDF

VISUALIZACIÓN Y COMUNICACIONES IN-VC 17 99.01

DISRI XXXX YYYY

NEMÓNICO: DISRIOPERANDO XXXX: Registro entero.OPERANDO YYYY: Constante que indica el formato con que se

va a copiar.CÓDIGO INSTRUCCIÓN: 73

DESCRIPCIÓN:

COPIA en el buffer intermedio el contenido de un registro entero.El operando XXXX es la dirección del registro entero que se copia.El operando YYYY es el formato del dato a copiar.El formato puede ser AB o ABC, dependiendo del equipo queestemos programando:donde AB es la cantidad de cifras que se van a copiar.donde C indica la posición del punto decimal.Si el segundo operando es positivo la visualización se justifica a laderecha.Si el segundo operando es negativo, la visualización se justifica a laizquierda.No opera con las pilas.(0)

# Ejemplo:

CLEAR ;Borra buffer intermedio, dejando el puntero de;visualización en la primera posición (la cero).

DISRI 300 -3 ;Copia en el buffer intermedio el contenido del;registro entero 300 con 3 cifras en total (contando;el signo). La justificación es a la izquierda, pues;el formato es negativo.

COM 0 ;Copia el contenido del buffer intermedio en el;display LCD.

DISRI

Page 184: Manual Tecnico de Programacion Plc PDF

VISUALIZACIÓN Y COMUNICACIONES IN-VC 18 99.01

DISIX XXXX YYYY

NEMÓNICO: DISIXOPERANDO XXXX: Registro entero.OPERANDO YYYY: Registro entero.CÓDIGO INSTRUCCIÓN: 74

DESCRIPCIÓN:

COPIA en el buffer intermedio el contenido del registro enteroapuntado.El operando XXXX es el registro entero que contiene la dirección delregistro entero a copiar.El operando YYYY es la dirección del registro entero que contiene elformato del dato a copiar.El formato puede ser AB o ABC, dependiendo del equipo queestemos programando:donde AB es la cantidad de cifras que se van a copiar.donde C indica la posición del punto decimal.Si el formato es positivo la visualización se justifica a la derecha.Si el formato es negativo, la visualización se justifica a la izquierda.No opera con las pilas (0).

# Ejemplo:

SETRI 300 500 ;Almacena el dato 500 en el reg. entero 300.SETRI 301 3 ;Almacena el dato 3 en el reg. entero 301.CLEAR ;Borra buffer intermedio, dejando el

;puntero de visualización en la posición 0.DISIX 300 301 ;Copia en el buffer intermedio el contenido

;del reg. entero 500, puesto que es el;apuntado por el reg. entero 300, con un;formato de 3 cifras (mas el signo) y;justificado a la derecha, que es el indicado;por el contenido del reg. entero 301.

COM 0 ;Copia el contenido del buffer intermedio;en el display LCD.

DISIX

Page 185: Manual Tecnico de Programacion Plc PDF

VISUALIZACIÓN Y COMUNICACIONES IN-VC 19 99.01

DISRF XXXX YYYY

NEMÓNICO: DISRFOPERANDO XXXX: Registro en coma flotante.OPERANDO YYYY: Constante que indica el formato con que se

va a copiar.CÓDIGO INSTRUCCIÓN: 68

DESCRIPCIÓN:COPIA en el buffer intermedio el contenido de un registro en comaflotante.El operando XXXX es la dirección del registro en coma flotante quese copia.El operando YYYY es el formato en cuanto a la cantidad de cifras ydecimales que se van a copiar. El formato es el siguiente: ABCdonde AB es el número de dígitos a visualizar, incluyendo signo ypunto decimal, y donde C es el número de decimales.Si el formato es positivo la visualización se justifica a la derecha.Si el formato es negativo, la visualización se justifica a la izquierda.No opera con las pilas. (0)

# Ejemplo:

MOVCF -28.5 ;Carga en pila aritmética la constante en;coma flotante -28.5

STOF 100 ;Almacena el contenido de la pila;aritmética en el reg. en coma flotante 100

CLEAR ;Borra buffer intermedio, dejando el;puntero de visualización en la primera;posición (la cero).

DISRF 100 73 ;Copia en el buffer intermedio el contenido;del reg. en coma flotante 100 con 7 cifras;en total, de las cuáles 3 serán decimales.;La justificación es a la derecha

COM 0 ;Copia el contenido del buffer intermedio;en el display LCD.

DISRF

Page 186: Manual Tecnico de Programacion Plc PDF

VISUALIZACIÓN Y COMUNICACIONES IN-VC 20 99.01

DISFX XXXX YYYY

NEMÓNICO: DISFXOPERANDO XXXX: Registro entero.OPERANDO YYYY: Registro entero.CÓDIGO INSTRUCCIÓN: 69

DESCRIPCIÓN:

COPIA en el buffer intermedio el contenido de un registro en comaflotante apuntado.El operando XXXX es el registro entero que contiene la dirección delregistro en coma flotante que se copia.El operando YYYY es la dirección del registro entero que contiene elformato con el cual se copia. El formato es el siguiente: ABCdonde AB es el número de dígitos a visualizar, incluyendo signo ypunto decimal, y donde C es el número de decimales.Si el formato es positivo la visualización se justifica a la derecha.Si el formato es negativo, la visualización se justifica a la izquierda.No opera con las pilas.(0)

# Ejemplo:

SETRI 500 100 ;Almacena el dato 100 en el reg. entero;500.

SETRI 301 62 ;Almacena el dato 62 en el reg. entero 301.MOVCF 33.1578 ;Carga en pila aritmética la constante en

;coma flotante 33.1578STOF 100 ;Almacena el contenido de la pila

;aritmética en el reg. en coma flotante 100CLEAR ;Borra buffer intermedio, dejando el

;puntero de visualización en la primera;posición (la cero).

DISFX 500 301 ;Copia en el buffer intermedio el contenido;del reg. en coma flotante 100, puesto que;es el apuntado por el reg. entero 500, con;un formato de 6 cifras (mas el signo), de

DISFX

Page 187: Manual Tecnico de Programacion Plc PDF

VISUALIZACIÓN Y COMUNICACIONES IN-VC 21 99.01

;las cuáles 2 serán decimales y justificado;a la derecha, ya que es el indicado por el;contenido del reg. entero 301.

COM 0 ;Copia el contenido del buffer intermedio;en el display LCD.

Page 188: Manual Tecnico de Programacion Plc PDF

VISUALIZACIÓN Y COMUNICACIONES IN-VC 22 99.01

# EJEMPLOS:

Para efectuar estos ejemplos deberemos comprobar las instrucciones y el direccionamiento de losrelés/registros de la memoria, disponibles en el equipo MIDA que estamos programando.

A.- Visualización de un registro entero utilizando dos métodos,mediante las instrucciones DISRI y DISIX en un mismo display

MOVCI -1435 ;Carga en la pila aritmética la constante; -1435

STOI 500 ;Almacena el contenido de la pila;aritmética en el registro entero 500.

MOVCI 500 ;Carga en la pila aritmética la constante;500.

STOI 501 ;Almacena el contenido de la pila;aritmética en el registro entero 501.

MOVCI 5 ;Carga en la pila aritmética la constante 5.STOI 502 ;Almacena el contenido de la pila

;aritmética en el registro entero 502.CLEAR ;Borra el buffer intermedio y sitúa el

;puntero en la primera posición.DISRI 500 5 ;Copia en el buffer intermedio el

;contenido del registro 500 con 5;dígitos.

LOC 16 ;Sitúa el puntero en la posición 16.DISIX 501 502 ;Copia en el buffer intermedio el

;contenido del registro 501 con el;formato que figura en el registro 502.

COM 0 ;Visualiza el contenido del buffer;intermedio en el display LCD.

Resultado:

- 1 4 3 5

- 1 4 3 5(Visualizador LCD)

Page 189: Manual Tecnico de Programacion Plc PDF

VISUALIZACIÓN Y COMUNICACIONES IN-VC 23 99.01

B.- Visualización de un mismo registro en coma flotante utilizando dosmétodos, mediante las instrucciones DISRF y DISFX en un mismodisplay

MOVCF -1435.5 ;Carga en la pila aritmética la constante;–1435.5.

STOF 500 ;Almacena el contenido de la pila;aritmética en el registro en coma flotante;500.

MOVCF 500 ;Carga en la pila aritmética la constante;500.

STOF 501 ;Almacena el contenido de la pila;aritmética en el registro en coma flotante;501.

MOVCF 71 ;Carga en la pila aritmética la constante;71.

STOF 502 ;Almacena el contenido de la pila;aritmética en el registro en coma flotante;502.

CLEAR ;Borra el buffer intermedio y sitúa el;puntero en la primera posición.

DISRF 500 71 ;Copia en el buffer intermedio el contenido;del registro 500 en el formato indicado;por el segundo operando 71

LOC 16 ;Sitúa el puntero en la posición;indicada.

DISFX 501 502 ;Copia en el buffer intermedio el contenido;del registro 501 con el formato apuntado:por el contenido del registro 502;en el registro 502.

COM 0 ;Visualiza el contenido del buffer;intermedio en el display LCD.

Resultado:

- 1 4 3 5 . 5

- 1 4 3 5 . 5(Visualizador LCD)

Page 190: Manual Tecnico de Programacion Plc PDF

VISUALIZACIÓN Y COMUNICACIONES IN-VC 24 99.01

C.- Visualizar:- Un texto- El contenido en un registro en coma flotante con dos decimales

que puede variar entre 0 y 327.67, con justificación izquierda.- Un carácter ASCII en el display LCD.- Transmitir por ambos puertos de comunicaciones un mensaje de

32 caracteres.

;DEFINICIÓN DE ETIQUETAS;texto1 lite “ESTA ES LA MITAD”texto2 lite “- - - - - - - - - - - - - - - “texto3 lite “V=”;;PROGRAMA;

CLEAR ;Borra el buffer intermedio y sitúa el;puntero en la primera posición.

DISL texto3 ;Copia al buffer intermedio el texto de la;tabla de textos apuntado

LOC 2 ;Sitúa el puntero en la posición indicada.DISRF 500 -62 ;Copia en el buffer intermedio el contenido

;del reg. en coma flotante 500 con el;formato indicado por el segundo operando

LOC 5 ;Sitúa el puntero en la posición indicada.DISCH 65 ;Copia en el buffer intermedio el carácter

;ASCII ”A”.COM 0 ;Visualiza el contenido del buffer

;intermedio por el LCD.CLEAR ;Borra el buffer intermedio y sitúa el

;puntero en la primera posiciónDISL texto1 ;Copia al buffer intermedio el texto de la

;tabla de textos apuntado.DISL texto2 ;Copia al buffer intermedio el texto de la

;tabla de textos apuntado.COM 1 ;Transmite el contenido del buffer

;intermedio por el puerto de comunicación.COM 2 ;Transmite el contenido del buffer

;intermedio por el puerto de comunicación

Page 191: Manual Tecnico de Programacion Plc PDF

VISUALIZACIÓN Y COMUNICACIONES IN-VC 25 99.01

D.- Visualizar y transmitir por el puerto de comunicaciones- Un texto apuntado por un registro.- Una variable en el interior de este texto con un decimal que

puede variar entre 0 y 99.9, con justificación izquierda.- Transmitir hora y fecha por el puerto de comunicación RS232.

;DEFINICIÓN DE ETIQUETAS;texto32 lite “VALOR:”;;PROGRAMA

MOVCI 0 ;Carga en pila aritmética la constante 0.STOI 500 ;Almacena el contenido de la pila

;aritmética en el registro entero 500.CLEAR ;Borra el buffer intermedio y sitúa el

;puntero en la primera posición.DISLX 500 ;Copia en el buffer intermedio el texto

;indicado por el contenido del reg. entero;500.

LOC 6 ;Sitúa el puntero en la posición indicada.DISRF 501 -41 ;Copia en el buffer intermedio el contenido

;del registro entero 501 con el formato;indicado por el segundo operando.

COM 0 ;Visualiza el contenido del buffer;intermedio en el display LCD.

CLEAR ;Borra el buffer intermedio y sitúa el;puntero en la primera posición.

TIME ;Copia en el buffer intermedio la hora;en el formato HH:MM:SS.

DISCH 32 ;Copia en el buffer intermedio el;carácter ASCII "espacio en blanco".

DATE ;Copia en el buffer intermedio la fecha;en formato DD:MM:AA.

COM 1 ;Transmite el contenido del buffer;intermedio por el puerto COM1.

Page 192: Manual Tecnico de Programacion Plc PDF

VISUALIZACIÓN Y COMUNICACIONES IN-VC 26 99.01

! VISUALIZACIÓN ROTATIVA EN DISPLAY

Existe en algún modelo de equipo MIDA, la posibilidad de quelos textos, mensajes y/o visualización de cualquier relé / registrosalgan de forma rotativa en el display LCD.

Para ello se dispone de un relé denominado "Display ModoRotativo" (ver Mapa de Memoria del Manual de Usuario del equipo).

Al ejecutar la instrucción COM x (x es el display en el cual sedirecciona) el contenido del buffer intermedio aparecerá fijo si el relé"Display Modo Rotativo" esta a "0" o aparecerá por la derecha deldisplay desplazándose hacia la izquierda si dicho relé esta a "1".

Para fijar la longitud del texto a visualizar, se puede colocar uncarácter con valor ASCII "0" al final del texto. La longitud máxima deltexto es la longitud máxima de texto admitido por el equipo, y cualquiercarácter que se añada de más será despreciado.

Las instrucciones de reconocimiento de teclado y los comandosdel MIDAbus que afectan a los visualizadores, no tienen en cuenta elestado del relé "Display Modo Rotativo".

Modificar el estado del relé no cambiará el comportamiento deldisplay, solo al ejecutar una instrucción COM podremos modificardicho comportamiento (y su contenido si fuera necesario).

# EJEMPLOS:

Para efectuar estos ejemplos deberemos comprobar las instrucciones y el direccionamiento de losrelés/registros de la memoria, disponibles en el equipo MIDA que estamos programando.

A.-;Definición de etiquetasrotar equ xx (indicar el relé "Display Modo Rotativo".;;Definición de textostexto1 lite “MI TEXTO ES DE 24 CARAC”.....

Page 193: Manual Tecnico de Programacion Plc PDF

VISUALIZACIÓN Y COMUNICACIONES IN-VC 27 99.01

CLEAR ;Borra el buffer intermedio, dejando el;puntero de visualización en la primera;posición.

DISL texto1 ;Copia en el buffer intermedio el texto;TEXTO1 de la tabla de literales,;colocándolo en la primera posición del;buffer intermedio.

LOC 23 ;Posiciona el puntero de visualización en la;posición 24 (la primera es la cero).

DISCH 0 ;Copia en el buffer intermedio el carácter;“0”.

SET rotar ;Activa el relé "Display Modo Rotativo".COM 0 ;Copia el contenido del buffer intermedio

;al display LCD.

El texto que mostrará es: “MI TEXTO ES DE 24 CARAC” en un displayLCD de 8 caracteres:

MM I

M IM I T

4 C A R A C MC A R A C M I

C A R A C M IA R A C M I T

Se puede observar que al rotar el texto, el final del mismo seenlaza con el principio quedando escrito un "CARACMI TEXTO ES DE24 ", por eso se ha de tener en cuenta de añadir algún carácter deseparación entre textos (por ejemplo espacios blancos).

Page 194: Manual Tecnico de Programacion Plc PDF

VISUALIZACIÓN Y COMUNICACIONES IN-VC 28 99.01

B.-Supongamos estamos controlando un proceso, y en el registro entero250 tenemos el tiempo transcurrido (en minutos) y en el registro entero260 la temperatura (en décimas de grado). Queremos mostrar un textorotativo que indique el tiempo y la temperatura, y si la temperatura esmayor de 50 grados mostrar un texto fijo en el que ponga "ALARMA"

;Definición de etiquetastiempo equ xxx ;(registro entero).temp equ xxx ;(registro entero)grados equ xxx ;(registro entero)rotar equ xxx ;(relé "Display Modo Rotativo");;Definición de textostxt lite “TIEMPO XXX MIN. TEMPERATURA XX.X "txt_ala lite “ALARMA"

MOVRI tempMOVCI 500 ;50 grados (en décimas de grados).CLEARCPGI alr ;Salta si hay alarma (TEMP>50º)DISL txt ;Copia al buffer el textoLOC 7DISRI tiempo 30LOC 28DISRI grados 41LOC 34DISCH 0 ;Copiamos carácter 0 al finalSET rotar ;Activa el relé "Display Modo

;Rotativo".COM 0..........

alr RESET rotar ;Desactiva el relé "Display Modo;Rotativo".

CLEARDISL txt_alaCOM 0.....

Page 195: Manual Tecnico de Programacion Plc PDF

RELOJ INTERNO EN TIEMPO REAL IN-R 1 99.01

Los equipos MIDA disponen de un reloj en tiempo real protegidopor una batería de Ni-Cd.

El equipo MIDA dispone de unos registros enteros de 16 bitsdonde se actualizan automáticamente sus contenidos, ya que son unreflejo de la hora/fecha del reloj interno.Estos registros pueden ser tratados aritméticamente de igual formaque cualquier otro registro entero del equipo.Así, un programa MIDA puede acceder a los registros que sedescriben a continuación.

DATO REGISTRO

Segundo delminuto

Indica el número de segundos que han transcurridodentro del minuto en curso.(0 - 59)

Minuto de lahora

Indica el número de minutos que han transcurridodentro de la hora en curso.(0 - 59)

Hora del día Indica la hora del día en curso.(0 - 23)

Horario

Indica el número de minutos que han transcurridodesde la última hora cero (número de minutos deldía).(hora * 60 + minuto)

Día del mes Indica el día del mes.(1 - 31)

Día de lasemana

Indica el día de la semana.(0 - 6, lunes – domingo)

Mes del año Indica el mes del año.(1 - 12)

Año Indica el año.(los dos últimos dígitos)

Page 196: Manual Tecnico de Programacion Plc PDF

RELOJ INTERNO EN TIEMPO REAL IN-R 2 99.01

! MODO DE PROGRAMACIÓNTodos los registros descritos son accesibles por el programa

para tratar aritméticamente, visualizar, comparar, almacenar enregistros de los ficheros de la base de datos, etc.Algunas de las funciones principales para las que se emplea el reloj entiempo real son:

" Realización de programaciones horarias." Visualización y/ó transmisión vía serie." Puesta en hora del reloj.

Realización de programaciones horarias: este tipo de función esadecuada para la ejecución de un proceso a una determinada hora,minuto, día de la semana, etc.Para ello se deben emplear los registros descritos realizandocomparaciones y/ó tratamientos aritméticos según las explicacionesde los apartados Instrucciones Aritméticas y ComparacionesAritméticas de este Manual Técnico.

Visualización y/ó transmisión vía serie: se pueden utilizar lasinstrucciones de visualización y comunicación de registros descritasen el apartado Visualización y Comunicaciones ó las instruccionesespeciales que puedan disponer cada uno de los equipos.Existen unas instrucciones especialmente diseñadas para lavisualización ó transmisión de datos por los puertos serie: unaimpresora, PC, etc. Estas son:

DATE TIME

Puesta en hora el reloj del equipo. Existen unas instrucciones paraesta acción:

CLOCK CLKP

Page 197: Manual Tecnico de Programacion Plc PDF

RELOJ INTERNO EN TIEMPO REAL IN-R 3 99.01

DATE

NEMÓNICO: DATEOPERANDO XXXX: No dispone de operando.CÓDIGO INSTRUCCIÓN: 78

DESCRIPCIÓN:COPIA en el buffer intermedio la fecha en formato DD/MM/AA, paravisualizar en el/los displays ó transmitir por cualquier puerto decomunicaciones la fecha del reloj interno del equipo.También se puede utilizar para almacenar en registros de algúnfichero de la base de datos (si el MIDA dispone de ella).No opera con las pilas (0)

# Ejemplo:

CLEAR ;Borra buffer intermedio, dejando el cursor en la;primera posición (la cero).

DATE ;Copia en buffer intermedio la fecha en formato;DD/MM/AA.

COM 0 ;Copia el contenido del buffer intermedio;en el display LCD.

DATE

Page 198: Manual Tecnico de Programacion Plc PDF

RELOJ INTERNO EN TIEMPO REAL IN-R 4 99.01

TIME

NEMÓNICO: TIMEOPERANDO XXXX: No dispone de operando.CÓDIGO INSTRUCCIÓN: 79

DESCRIPCIÓN:COPIA en el buffer intermedio la hora en formato HH/MM/SS, paravisualizar en el/los displays ó transmitir por cualquier puerto decomunicaciones la hora del reloj interno del equipo.También se puede utilizar para almacenar en registros de algúnfichero de la base de datos (si el MIDA dispone de ella).No opera con las pilas (0)

# Ejemplo:

CLEAR ;Borra buffer intermedio, dejando el puntero de;visualización en la primera posición (la cero).

TIME ;Copia en buffer intermedio la hora en formato;HH:MM:SS

COM 0 ;Copia el contenido del buffer intermedio;en el display LCD.

TIME

Page 199: Manual Tecnico de Programacion Plc PDF

RELOJ INTERNO EN TIEMPO REAL IN-R 5 99.01

CLOCK

NEMÓNICO: CLOCKOPERANDO XXXX: No dispone de operandoCÓDIGO INSTRUCCIÓN: 84

DESCRIPCIÓN:Permite una PUESTA en HORA/FECHA del reloj interno del equipomediante el teclado.Al ejecutarse esta instrucción se detiene la ejecución del programa yaparece en el display LCD la fecha, hora y día de la semana.Una vez visualizado, se puede realizar la puesta en hora/fecha.Para modificar la hora/fecha pulsaremos la tecla <CLEAR>.La ejecución de esta instrucción termina con la pulsación final de latecla <ENTER>.No opera con las pilas (0).Detiene la ejecución del programa.

# Ejemplo:

INK 340 ;Detección de una tecla.JZ et1 ;Si la tecla ha sido pulsada, continua a la

;siguiente línea, de lo contrario salta a "et1".CLOCK ;Se ejecuta la función de PUESTA en HORA y se

;detiene el programa, esperando la pulsación de;la tecla <ENTER>.

......et1 ......

CLOCK

Page 200: Manual Tecnico de Programacion Plc PDF

RELOJ INTERNO EN TIEMPO REAL IN-R 6 99.01

CLKP

NEMÓNICO: CLKPOPERANDO XXXX: No dispone de operandoCÓDIGO INSTRUCCIÓN: 97

DESCRIPCIÓN:Permite una PUESTA en HORA/FECHA del reloj interno del equipomediante el teclado, sin detener el programa usuario.En caso de que se este ejecutando una instrucción INPIX, INPFX oINPCX, la instrucción CLKP no se ejecutará.Al ejecutarse esta instrucción no se detiene la ejecución delprograma y aparece en el display LCD la fecha, hora y día de lasemana.Una vez visualizado, se puede realizar la puesta en hora/fecha.Para modificar la hora/fecha pulsaremos la tecla <CLEAR>.La ejecución de esta instrucción termina con la pulsación final de latecla <ENTER>.Existe un relé interno "Relé Input" (ver Manual Usuario del equipo),el cual se activara al llamar esta instrucción y se mantendrá activadamientras estemos introduciendo el dato. Se desactivara en elmomento que validemos el dato con la tecla <ENTER>.Mientras se esta introduciendo la hora/fecha se puede modificar elcontenido del display, el cual se actualizara cuando validemos lanueva hora/fecha.No opera con las pilas (0).No detiene la ejecución del programa.

# Ejemplo:

INK 30 ;Detección de una tecla.JZ et1 ;Si la tecla ha sido pulsada, continua a la

;siguiente línea, de lo contrario salta a "et1".CLKP ;Se ejecuta la función de PUESTA en HORA,

;activa el "Relé Input" y continua el programa.et1 ......

CLKP

Page 201: Manual Tecnico de Programacion Plc PDF

RELOJ INTERNO EN TIEMPO REAL IN-R 7 99.01

# EJEMPLOS:

Para efectuar estos ejemplos deberemos comprobar las instrucciones y el direccionamiento de losrelés/registros de la memoria, disponibles en el equipo MIDA que estamos programando.

A.- Visualizar, la hora y la fecha en el principio de cada una de laslíneas del LCD y un mensaje OK al final de la primera línea. Ytransmitir por COM1 sólo la fecha y hora separadas por un espacio enblanco.

CLEAR ;Borra el buffer intermedio y sitúa el puntero;en la primera posición.

TIME ;Copia en el buffer intermedio la hora.LOC 16 ;Sitúa el puntero en la posición indicada.DATE ;Copia en el buffer intermedio la fecha.LOC 14 ;Sitúa el puntero en la posición indicada.DISCH 79 ;Copia en el buffer intermedio el carácter en

;formato ASCII “O”.DISCH 75 ;Copia en el buffer intermedio el carácter en

;formato ASCII “K”.COM 0 ;Visualiza el contenido del buffer intermedio

;en el display LCD.CLEAR ;Borra el buffer intermedio y sitúa el puntero

;en la primera posición.DATE ;Copia en el buffer intermedio la fecha.DISCH 32 ;Copia en el buffer intermedio el carácter en

;formato ASCII "espacio en blanco".TIME ;Copia en el buffer intermedio la hora.COM 1 ;Transmite el contenido del buffer intermedio

;por el puerto de comunicaciones.

Resultados:

H H : M M : S S O K

D D / M M / A A(Visualizador LCD)

DD/MM/AA HH:MM:SS(Transmisión por COM1)

Page 202: Manual Tecnico de Programacion Plc PDF

RELOJ INTERNO EN TIEMPO REAL IN-R 8 99.01

B.- Activar una salida digital el día 23 de abril de 1999 a las 11.30hdurante 10s.

RESET 400 ;Desactiva el relé 400.MOVRI 47 ;Carga registro de año en curso.MOVCI 99 ;Carga en pila aritmética la constante 99.CPEI eti1 ;Detecta si es el año en que se debe

;conectar la salida digital.JMP exit ;Salta si no cumple la comparación a "exit".

eti1 MOVRI 46 ;Carga registro de mes en curso.MOVCI 4 ;Carga en pila aritmética la constante 4.CPEI eti2 ;Detecta si es el mes en que se debe

;conectar la salida digital.JMP exit ;Salta si no cumple la comparación a "exit".

eti2 MOVRI 44 ;Carga registro de día en curso.MOVCI 23 ;Carga en pila aritmética la constante 23.CPEI eti3 ;Detecta si es el día en que se debe

;conectar la salida digital.JMP exit ;Salta si no cumple la comparación a "exit".

eti3 MOVRI 43 ;Carga registro horario (número de minutos;transcurridos del día).

MOVCI 690 ;Carga las 11.30h convertido a minutos (11;* 60 + 30 = 690).

CPEI eti3 ;Detecta si es el momento de la conexión;de la salida digital.

JMP exit ;Salta si no cumple la comparación a "exit".eti3 SET 400 ;Activa el relé interno que indica que la

;salida digital se debe conectar.exit LD 400 ;Inicio malla de control.

OR 101ANDNT 401ANDNT 402OUT 101 ;Malla de control de la salida digital.LD 101TIM 250 100 ;Temporización de 10s a partir de la

;activación del relé 400.OUT 401 ;Relé interno de desactivación de la salida

;digital al cabo de la temporización (10s).LD 401

Page 203: Manual Tecnico de Programacion Plc PDF

RELOJ INTERNO EN TIEMPO REAL IN-R 9 99.01

AND 101OR 402AND 400OUT 402 ;Relé que impide conectar de nuevo la

;salida digital dentro del minuto de;permanencia en ‘1' del relé 400.

... ;Sigue el programa...

El relé interno 402 se utiliza para impedir que la salida digital se vuelvaa conectar transcurridos los 10s de activación, ya que el relé 400 semantendrá en estado ‘1' todo el tiempo que la comparación de la línea"eti3" dé resultado IGUAL (1min).

En este ejemplo se supone que el MIDA64 estará en marcha la fechaen que se debe conectar la salida digital y que no es necesario preveresta contingencia.

C.- Activar una salida digital cada miércoles a las 12.00h durante unminuto.

MOVRI 45 ;Carga el día de la semana en curso.MOVCI 2 ;Carga en pila aritmética la constante 2.CPEI eti1 ;Detecta si es miércoles (2).JMP eti2 ;Salta si no cumple la comparación a "eti2"

eti1 SET 400 ;Activa el relé interno que indica la;conexión de la salida digital.

LD 400 ;Carga en pila lógica el estado del relé 400OUT 101 ;Control de la salida digital.JMP fin ;Salta a la línea "fin".

eti2 RESET 400 ;Desactiva el relé.fin END

Page 204: Manual Tecnico de Programacion Plc PDF

RELOJ INTERNO EN TIEMPO REAL IN-R 10 99.01

D.- Cada vez que se active una entrada digital almacenar la fecha,hora y el valor de una entrada analógica en una tabla (array) deregistros.

LD 0 ;Carga en pila lógica el estado de la;entrada digital 0.

ANDNT 400OUT 401 ;Detecta el flanco de activación de la

;entrada digital.LD 0 ;Carga en pila lógica el estado de la

;entrada digital 0.OUT 400 ;Almacena el estado de la entrada en el

;relé interno de memoria del estado;anterior.

LD 400 ;Carga en pila lógica el estado del relé 400JZ eti1 ;Detecta si debe almacenar los datos en la

;tabla de registros.

;A partir de este punto de programa se almacenan los;datos en la tabla de registros

MOVRI 60 ;Carga en pila aritmética la entrada;analógica.

STOI 300 ;Almacena el dato de la entrada analógica;en un registro entero 300 para fijar su;valor instantáneo.

MOVRI 101 ;Carga en pila aritmética el día del mes.STOIX punt ;Almacena el día del mes en el registro

;entero apuntado por "punt".INC punt 1 ;Incrementa el valor del registro puntero a

;la tabla de registros.MOVRI 46 ;Carga en pila aritmética el mes del año.STOIX punt ;Almacena el mes del año en el registro

;apuntado por el puntero.INC punt 1 ;Incrementa el valor del registro puntero a

;la tabla de registros.MOVRI 103 ;Carga en pila aritmética el año.STOIX punt ;Almacena el mes del año en el registro

;apuntado por el puntero.

Page 205: Manual Tecnico de Programacion Plc PDF

RELOJ INTERNO EN TIEMPO REAL IN-R 11 99.01

INC punt 1 ;Incrementa el valor del registro puntero a;la tabla de registros.

MOVRI 99 ;Carga en pila aritmética el numero de;minutos que han transcurrido desde la;ultima hora cero.

STOIX punt ;Almacena el día del mes en el registro;entero apuntado por "punt".

INC punt 1 ;Incrementa el valor del registro puntero a;la tabla de registros.

MOVRI 300 ;Carga en pila aritmética el registro entero;300.

STOIX punt ;Almacena el valor de la entrada analógica;en el momento de la activación de la;entrada digital en el registro entero;apuntado por "punt".

INC punt 1 ;Incrementa el valor del registro puntero a;la tabla de registros para dejarlo;preparado para el próximo ciclo de;escritura en la tabla de registros

eti1 ... ;Sigue el programa...

E.- Realizar un cambio de hora/fecha, mediante la instrucción CLKP.Para ello hemos programado una salida pulsante, la 104 yobservaremos que cuando entramos a realizar los cambios de losparámetros anteriormente descritos la salida 104 no se detiene, con loque vemos que la ejecución del programa continua.

;Definición de textostext0 lite “PULSA F1”

ini LD 1 ;Carga en pila lógica el estado de la;entrada 1

OR 400 ;Realiza con relé 400 una función Or lógica;con la entrada 1

ANDNT 2 ;Realiza una andnt con la entrada 2OUT 400 ;Descarga el resultado del bloque lógico

;sobre el relé 400.LD 400 ;Carga en pila lógica el estado del relé 400ANDNT 401 ;Realiza una función andnt con el relé 401

Page 206: Manual Tecnico de Programacion Plc PDF

RELOJ INTERNO EN TIEMPO REAL IN-R 12 99.01

TIM 250 10 ;Carga el temporizadorOUT 105 ;Descarga el resultado en la salida 105LD 105 ;Carga en la pila lógica la entrada 105TIM 251 10 ;Carga el temporizadorOUT 401 ;Descarga el resultado del bloque lógico

;sobre el relé 401CLEAR ;Borra el buffer intermedio y sitúa el

;puntero en la primera posiciónDISL text0 ;Copia en el buffer intermedio el texto de

;la tabla de textos "text0"LOC 17 ;Sitúa el puntero en la posición indicada.TIME ;Copia en el buffer intermedio la hora/fechaCOM 0 ;Visualiza el contenido del buffer

;intermedio por el display LCD.RESET 104 ;Desactiva el relé 104INK 356 ;Detección de una tecla.JZ ini ;Si no ha sido pulsada salta a "ini"CLEAR ;Borra el buffer intermedio y sitúa el

;puntero en primera posiciónCLKP ;Permite introducir la puesta en hora/ fechaCOM 0 ;Visualiza el contenido del buffer

;intermedio por el display LCD.LD 391 ;Carga en pila lógica el estado del relé

;"Relé Input".OUT 104 ;Descarga el estado de la pila lógica sobre

;la salida 104END

Page 207: Manual Tecnico de Programacion Plc PDF

ESTRUCTURACIÓN DE PROGRAMAS IN-ESSUBRUTINAS

1 99.01

¿Cómo estructurar un programa?. Esta es la pregunta que nosplanteamos todos a la hora de tener que realizar uno. No es objetivode este apartado, ni de este manual dar un curso de programación,pero si de hacer una serie de sugerencias que creemos ayudaran arealizar esta tarea, como mínimo de una forma más ordenada.

Un buen punto de partida sería recordar, aunque ya sabemosque es obvio, que entendemos por programa. Así pues lo podemosdefinir como una secuencia de instrucciones a ejecutar por uncomputador a fin de obtener un resultado determinado

Una forma de estructurar los programas que pueden realizar losequipos MIDA podría ser la descrita a continuación:

" Programa Principal." Procedimientos Principales." Subrutinas secundarias.

Sería recomendable, aunque no estrictamente necesario, quetodo programa MIDA se estructura de la forma arriba indicada.

Analicemos a continuación cada uno de los elementos que locomponen:

" Programa Principal es la parte del programa desde donde sellama a todas los Procedimientos Principales (control deautomatismos, visualización del programa, detección del teclado,detección de alarmas, etc.) y debe terminar con la instrucción ENDpara producir un final de ciclo o programa.

" Procedimientos Principales son subrutinas que son llamadasdesde el Programa Principal mediante la instrucción CALL y quedefinen los diferentes trabajos que va a realizar el programa delequipo. Deben terminar con la instrucción RET, provocando así elregreso al programa principal.

" Subrutinas Secundarias son subrutinas que son llamadas porcualquiera de los Procedimientos Principales mediante lainstrucción CALL, cuantas veces sea necesario para realizartareas accesorias. Deben terminar con la instrucción RET,

Page 208: Manual Tecnico de Programacion Plc PDF

ESTRUCTURACIÓN DE PROGRAMAS IN-ESSUBRUTINAS

2 99.01

provocando de esta manera el regreso al procedimiento principalcorrespondiente.

A continuación describimos un posible diagrama de cómo sepuede estructurar un programa:

Llegados a este punto nos planteamos la siguiente pregunta. ¿Yque es una subrutina?

Una subrutina es un conjunto de instrucciones que sonllamadas desde un programa o procedimiento principal, mediante unainstrucción CALL y de la que salimos para volver desde donde lahemos llamado mediante una instrucción RET.

ProgramaPrincipal

ProcedimientoPrincipal

1

ProcedimientoPrincipal

2

ProcedimientoPrincipal

3

SubrutinaSecundaria

1

SubrutinaSecundaria

2

SubrutinaSecundaria

3

SubrutinaSecundaria

4

Page 209: Manual Tecnico de Programacion Plc PDF

ESTRUCTURACIÓN DE PROGRAMAS IN-ESSUBRUTINAS

3 99.01

A continuación un diagrama de flujo de un programadesarrollado sólo hasta sus Procedimientos Principales:

El código de programa asociado a estediagrama de flujo es:

;PROGRAMA PRINCIPALCALL INICIOCALL MOVECALL TECLADOCALL VISUACALL ALARMAEND

Cada una de las líneas de este programaes un Procedimiento Principal en donde serealizan las tareas principales llamando a su veza otras Subrutinas secundarias.De esta manera se facilitan las posiblesmodificaciones del diagrama que haya querealizar en el futuro ya que sólo será necesariomodificar el Procedimiento afectado. Dentro decada uno de estos Procedimientos Principaleshabrá tantas llamadas a subrutinas Secundariascomo sean necesarias.

NOTA: En la pila de Subrutinas tiene unalmacenamiento máximo de 50 direcciones deretorno. Por lo que nunca debemos detener 51llamadas (CALL) abiertas.

Describimos a continuación las instrucciones de este grupo:

CALL RET

JMP NOP END

I N I C I O

I n ic ia l i z a c ió n d e l

p r o g r a m a

C o n t r o l d e l o s

a u t o m a t i s m o s

D e t e c c ió n d e l

t e c l a d o

V is u a l i z a c ió n d e l

p r o g r a m a

D e t e c c ió n d e

a l a r m a s

E N D

Page 210: Manual Tecnico de Programacion Plc PDF

ESTRUCTURACIÓN DE PROGRAMAS IN-ESSUBRUTINAS

4 99.01

CALL XXXX

NEMÓNICO: CALLOPERANDO XXXX: Número o etiqueta de línea de programa.CÓDIGO INSTRUCCIÓN: 95

DESCRIPCIÓN:

LLAMADA a una subrutina.El operando es el número o etiqueta de línea de programa dondeinicia la subrutina.Incrementa un nivel la pila de subrutinas (+1).

# Ejemplo 1:

CALL 100 ;Al llegar a este punto, la ejecución del;programa salta a la línea 100 donde se;inicia la subrutina pertinente.

# Ejemplo 2:

REMO equ 200

CALL REMO ;Al llegar a este punto, la ejecución del;programa salta a la línea 200 indicada por;la etiqueta donde se inicia la subrutina;pertinente.

CALL

Page 211: Manual Tecnico de Programacion Plc PDF

ESTRUCTURACIÓN DE PROGRAMAS IN-ESSUBRUTINAS

5 99.01

RET

NEMÓNICO: RETOPERANDO XXXX: No dispone de operandos.CÓDIGO INSTRUCCIÓN: 96

DESCRIPCIÓN:

RETORNO de una subrutina.El retorno se ejecuta a la línea siguiente donde se produjo lallamada, mediante la instrucción CALL.Decrementa un nivel la pila de subrutinas (-1).

# Ejemplo:

RET ;Al llegar a este punto, la ejecución del programa salta a;la línea siguiente donde se produjo la instrucción CALL;pertinente.

RET

Page 212: Manual Tecnico de Programacion Plc PDF

ESTRUCTURACIÓN DE PROGRAMAS IN-ESSUBRUTINAS

6 99.01

JMP XXXX

NEMÓNICO: JMPOPERANDO XXXX: Número o etiqueta de línea de programa.CÓDIGO INSTRUCCIÓN: 92

DESCRIPCIÓN:

SALTO incondicional a una línea de programa.El operando es el número o etiqueta de línea de programa destinodel salto.No opera con las pilas (0).

# Ejemplo:

JMP 3000 ;Al llegar a este punto la ejecución del;programa pasa a la línea de 3000,;continuando la ejecución a partir de este;punto.

JMP

Page 213: Manual Tecnico de Programacion Plc PDF

ESTRUCTURACIÓN DE PROGRAMAS IN-ESSUBRUTINAS

7 99.01

NOP

NEMÓNICO: NOPOPERANDO XXXX: No dispone de operandos.CÓDIGO INSTRUCCIÓN: 0

DESCRIPCIÓN:

NO OPERA.No opera con las pilas (0).

# Ejemplo:

LD 100OUT 300NOP ;Esta línea de programa no produce ningún efecto.END

NOP

Page 214: Manual Tecnico de Programacion Plc PDF

ESTRUCTURACIÓN DE PROGRAMAS IN-ESSUBRUTINAS

8 99.01

END

NEMÓNICO: ENDOPERANDO XXXX: No dispone de operandos.CÓDIGO INSTRUCCIÓN: 98

DESCRIPCIÓN:

Indica el FIN de programa.La ejecución del programa retorna a la línea cero y se detectanerrores en tiempo de ejecución activándose los relés internospertinentesNo opera con las pilas (0)

# Ejemplo:

END ;Al llegar a este punto, la ejecución del programa retorna;a la línea 0 y se detectan los posibles errores en tiempo;de ejecución.

NOTA: Es imprescindible que todos los programas ejecuten de formahabitual la instrucción END. De esta manera, el equipo es capaz dedetectar errores del programa MIDA en tiempo de ejecución.

END

Page 215: Manual Tecnico de Programacion Plc PDF

ESTRUCTURACIÓN DE PROGRAMAS IN-ESSUBRUTINAS

9 99.01

# EJEMPLOS:

Para efectuar estos ejemplos deberemos comprobar las instrucciones y el direccionamiento de losrelés/registros de la memoria, disponibles en el equipo MIDA que estamos programando.

A.- Realización de un esqueleto estructurado de un programa.

;DEFINICIÓN DE ETIQUETAS;scan equ xxx ;xxx = relé de 1º scan

;PROGRAMA PRINCIPAL

tem CALL inicio ;Inicialización del programaCALL tempe ;Lectura de la temperaturaCALL correc ;Corrección de los gradosCALL teclado ;Detección del tecladoCALL visua ;Visualización del programaEND

;PROCEDIMIENTOS PRINCIPALES;INICIALIZACION DEL PROGRAMA

inicio LD scan ;Carga en pila lógica el estado del relé del;de 1º scan (solo estará a 0 en el primer;scan de programa.

JZ inic0 ;Detecta el relé de primer scan de;programa para realizar una inicialización;previa de datos

RET... ;En este punto de programa se realizarán todas las... ;operaciones previas a la ejecución del programa y que... ;sólo debe ejecutarse una sola vez a la puesta en tensión... ;equipo

inic0 ......RET

;LECTURA DE LA TEMPERATURAtempe ... ;lectura de la sonda de temperatura

... ;calculo y resultado final en grados

Page 216: Manual Tecnico de Programacion Plc PDF

ESTRUCTURACIÓN DE PROGRAMAS IN-ESSUBRUTINAS

10 99.01

...RET

;CORRECIÓN DE LOS GRADOScorrec ... ;corrección de los grados medidos según unas

... ;condiciones especiales

...RET

;DETECCIÓN DEL TECLADOteclado ... ;subrutina para efectuar un menú, en donde detectamos

... ;la tecla pulsada para saltar a diferentes subrutinas

... ;secundarias

...RET

;VISUALIZACIÓN DEL PROGRAMAvisua ... ;subrutina en donde efectuamos la visualización de datos

... ;y mensajes

...RET

;;SUBRUTINAS SECUNDARIAS;www ... ;subrutina secundaria llamada por la subrutina de

... ;Detección de TecladoRET

xxx ... ;subrutina secundaria llamada por la subrutina de... ;Detección de TecladoRET

yyy ... ;subrutina secundaria llamada por la subrutina de... ;Detección de TecladoRET

zzz ... ;subrutina secundaria llamada por la subrutina de... ;Detección de TecladoRET

Page 217: Manual Tecnico de Programacion Plc PDF

ES

Page 218: Manual Tecnico de Programacion Plc PDF

.

Page 219: Manual Tecnico de Programacion Plc PDF

ENTRADAS DE CONTAJE POR ES-EIINTERRUPCIONES

1 99.01

Algunos equipos MIDA disponen de entradas digitales queposeen una doble característica, por un lado se pueden utilizar comoentradas digitales propiamente dichas, y por otro lado se puedenutilizar como entradas de contaje rápido por interrupciones.

Señalar que no se debe realizar ninguna parametrización parautilizar dichas entradas en un modo u otro. El programa MIDA puedeutilizar estas entradas de cualquier modo sin previa parametrización.

Por tanto, los equipos disponen de una o más entradas decontaje rápido por interrupciones, además debemos de tener encuenta que cada una de estas entradas lleva asociada otra entradapara selección del sentido de contaje (ver Manual de Usuario delequipo correspondiente). Aunque estas entradas de contaje no seutilicen por el programa MIDA, los registros asociados a ellas se vanactualizando por interrupciones.

Estas entradas pueden ser utilizadas para captadores deimpulsos, encoders, detectores de proximidad, detectores magnéticos,etc.

! Propiedades del contaje

El contaje se realiza por interrupciones sin influir en el tiempo descan del programa MIDA.

El tipo de entradas es el mismo que el de las entradas digitalesdiscretas del equipo: libres de tensión (por contacto) ó para detectoresNPN.

Cada una de estas entradas dispone de unos registros enterosasociados de 16 bits que variaran según el modelo de equipo MIDA aprogramar (ver Manual de Usuario del equipo correspondiente).En algunos equipos MIDA los registros enteros asociados sondiferentes si el contaje es por impulsos o por encoder.

Page 220: Manual Tecnico de Programacion Plc PDF

ENTRADAS DE CONTAJE POR ES-EIINTERRUPCIONES

2 99.01

REGISTRO ENTERO DESCRIPCIÓN

Total entrada impulsos Registro contador totalizador de laentrada de impulsos.

Destino entrada impulsos

Registro donde se debe programar lapreselección del contaje.Cada vez que la entrada cuenta unimpulso se comprueba si el contaje hallegado a la preselección para desactivarel relé preseleccionado.

Parcial entrada impulsos

Registro donde contiene el contajeparcial desde cero hasta la preseleccióndel registro "Destino entrada impulsos".Inicializandose automáticamente a cerocada vez que ha llegado a lapreselección del contaje.

Diferencia impulsos(destino - parcial)

Registro que contiene la diferencia envalor absoluto entre el registro "Destinoentrada impulsos" y el registro "Parcialentrada impulsos".

Relé asociado

Registro que contiene la dirección delrelé que se desactivará cuando elregistro "Total entrada impulsos" y elregistro "Destino entrada impulsos"contengan el mismo dato.

! Modo de programación

El tratamiento de todos los registros descritos anteriormente esigual al indicado para los registros enteros pudiéndose consultar,comparar, modificar, etc., bien por programa ó bien desde un PC.

Page 221: Manual Tecnico de Programacion Plc PDF

ENTRADAS DE CONTAJE POR ES-EIINTERRUPCIONES

3 99.01

Cada vez que el equipo detecta un impulso lo contabiliza sobreel registro "Total entrada impulsos" y comprueba si el contenido deeste registro es IGUAL que el de "Destino entrada impulsos" definal de contaje.

En caso de que estos dos registros contengan el mismo valor,el equipo desactiva el relé (interno, salida digital,etc) cuya direcciónesta almacenada en el registro "Relé asociado".

En caso de no precisar desactivar un relé, podemos programaruna preselección imposible, por ejemplo un valor negativo (-32000),para que el sistema nunca llegue este final de contaje, ó bien puedeprogramarse una dirección de relé de final de contaje que no afecte alfuncionamiento del programa.

Para realizar un código de programa de contaje hay que realizarlos siguientes pasos:

" Inicializar el registro "Total entrada impulsos", poniéndolo a ceroó almacenando su valor actual de un registro intermedio.

" Programar el registro de "Destino entrada impulsos" de contajecon el dato adecuado. Programar el registro de "Relé asociado"final de contaje con la dirección del relé que se va a usar,normalmente la salida digital que activa el movimiento de lamáquina que se desea posicionar; de esta manera, el equipo ladesactivará por interrupciones cuando los registros de "Totalentrada impulsos" y de "Destino entrada impulsos" tengan elmismo valor.

Modos de empleo: principalmente hay dos modos de empleo para lasentradas de contaje:

" Posicionamiento" Contaje de impulsos.

Page 222: Manual Tecnico de Programacion Plc PDF

ENTRADAS DE CONTAJE POR ES-EIINTERRUPCIONES

4 99.01

" Para posicionamiento se puede utilizar elrelé apuntado por el registro "Relé asociado"para dar movimiento a la máquina. Este relé sedesactivará por interrupciones cuando losregistros de "Total entrada impulsos" y"Destino entrada impulsos" tengan el mismovalor.

" Para contaje de impulsos, el registro"Destino entrada impulsos" puede teneralmacenado un valor imposible de alcanzar por elsistema para por programa recoger el número deimpulsos para comparar ó tratar aritméticamenteó utilizar el relé apuntado por el registro "Reléasociado" para detectar la llegada a unapreselección.

Detectar la condición de final de contajepor la desactivación del relé interno ó salida digitalcuya dirección se almacena en el registro "Reléasociado".

Si se trataba de posicionar la máquina, elrelé asociado de final de contaje puede haberdesconectado el movimiento.

En el caso de que queramos contar impulsos yno hayamos puesto a cero el registro de "Total

entrada impulsos", tendremos que tomar el valor del registro de"Total entrada impulsos" y restarle el valor inicial que se leyó alinicio del contaje.

INICIO

Inicialización de los

registros decontaje

Detección del fin decontaje

Resultadodel

contaje

FIN

Page 223: Manual Tecnico de Programacion Plc PDF

ENTRADAS DE CONTAJE POR ES-EIINTERRUPCIONES

5 99.01

# EJEMPLOS:

Para efectuar estos ejemplos deberemos comprobar las instrucciones y el direccionamiento de losrelés/registros de la memoria, disponibles en el equipo MIDA que estamos programando.

A.- En el presente ejemplo pretendemos realizar un posicionamientode una maquina 100 cm (1000 mm) de su origen y a su vez ver lautilización de todos los relés asociados a las entradas de contajerápido que en esta ocasión es la entrada cero.

LD 399 ;Carga en pila lógica el relé de primer scanJNZ ini ;Si está a “1” salta a "ini".SETRI 0 0 ;Almacena la constante 0 en el registro

;entero 0 (puesta a cero el registro "Total;entrada impulsos)

SETRI 1 100 ;Almacena la constante 100 en el registro;entero 1 (fin de posicionamiento en el;registro "Destino entrada impulsos)

SETRI 2 101 ;Almacena la constante 101 en el registro;entero 2 (asignación del "Relé asociado")

ini SET 101 ;Activa la salida 101("Relé asociado").MOVRI 0 ;Carga en pila aritmética el contenido del

;registro entero 0 (registro "Total entrada;impulsos)

MOVRI 1 ;Carga en pila aritmética el registro entero;1 (registro "Destino entrada impulsos).

CPGEI vis ;Compara si el reg. entero 0 es mayor o;igual que el reg. entero 1 salta a "vis".

JMP fin ;Salto incondicional a "fin"vis INK 356 ;Detección de una tecla

JZ vis ;Si no ha sido pulsada la tecla salta a "vis"SETRI 0 0 ;Si ha sido pulsada la tecla, almacena la

;constante 0 en el registro entero 0 (puesta;a cero el registro "Total entrada impulsos).

fin END ;Fin de programa

Page 224: Manual Tecnico de Programacion Plc PDF

ENTRADAS DE CONTAJE POR ES-EIINTERRUPCIONES

6 99.01

.

Page 225: Manual Tecnico de Programacion Plc PDF

INTERRUPCIONES SOFTWARE ES-IS 1 99.01

Los equipos MIDA pueden disponer de una entrada deinterrupción software.Dicha entrada suele ser una entrada digital que posee unacaracterística de funcionamiento, en la cual puede comportarse de tresformas distintas:

" Se puede utilizar como entrada digital propiamente dicha." Se puede utilizar como entrada de contaje rápido por

interrupciones." Se puede utilizar como una entrada de interrupción de

software.En el Manual de Usuario de cada equipo, vendrá especificada queentrada digital tiene la característica antes mencionada.

Una interrupción por software es una subrutina que se ejecutacada vez que se activa una entrada digital del equipo, interrumpiendola ejecución normal del programa.Por lo tanto el programa no actualizará contadores, temporizadores,bases de tiempos, entradas, etc. en el tiempo que dure la ejecución dela interrupción software.Una vez terminada esta subrutina, la ejecución del programa regresa ala línea donde se produjo la interrupción.

Una “subrutina” de interrupción por software se debe identificarde una manera especial, mediante unas Instrucciones Directivas, paraque el compilador la ubique entre las líneas de programa indicadaspara tal fin.Las Directivas de Compilación asociadas al uso de la interrupción porsoftware son:

INTER END_INTER

Y la instrucción asociada es:

IRET

Page 226: Manual Tecnico de Programacion Plc PDF

INTERRUPCIONES SOFTWARE ES-IS 2 99.01

Si un programa no dispone de las instrucciones directivas decompilación que se han citado, la entrada correspondiente como unaentrada de interrupciones por software, no se comporta como tal,pasando a ser sólo una entrada de contaje y entrada digital discreta.

! Modo de programación

Como ejemplo de tratamiento de interrupción escribimos el código deun contador de impulsos con sentido.

INTER ;Inicio de la interrupción por softwareLD 1 ;Carga en pila lógica el estado de la

;entrada 1JZ eti1 ;Determina si se debe incrementar ó

;decrementar el registro entero "conta".INC conta -1 ;Decrementa el registro entero "conta".IRET ;Retorno de la interrupción al programa

;principal del MIDA.eti1 INC conta 1 ;Incrementa el registro CONTA

IRET ;Retorno de la interrupción al programa;principal del MIDA.

END_INTER ;Fin de la interrupción por software

Viendo el ejemplo descrito, se pueden hacer las siguientesconsideraciones:

" Las Directivas de compilación INTER y END_INTER se colocan alinicio y al final respectivamente del código de programa de lainterrupción.De esta forma, el código de programa de la interrupción es posibleubicarlo en cualquier posición del programa MIDA.

" La instrucción que produce el salto de regreso al programaprincipal MIDA es la IRET y se debe insertar al final del código delprograma de interrupción (recordar que la finalización del códigodel programa de interrupción es mediante la instrucción"END_INTER")Por lo tanto, no está permitido el uso de la instrucción RET dentrode una interrupción, el compilador nos indicará un error.

Page 227: Manual Tecnico de Programacion Plc PDF

INTERRUPCIONES SOFTWARE ES-IS 3 99.01

" Están permitidas todas las demás instrucciones de la Lista deInstrucciones del equipo dentro de esta subrutina.

" Las instrucciones de salto (JZ, JNZ, JMP) no se pueden emplearpara saltar desde fuera a dentro de la interrupción, por ello si seproduce un salto hacia fuera de la interrupción no podrán regresarhacia dentro de la misma.

" Sin embargo, es posible llamar a subrutinas, mediante lainstrucción CALL, desde el módulo de interrupciones.

Nota importante:Se debe tener en cuenta que el tiempo de ejecución de lasinstrucciones contenidas en la interrupción (incluyendo subrutinas) seamenor que el tiempo preciso para realizar otros procesos importantesdel programa MIDA, como lectura de entradas, contajes,temporizaciones, etc. Para evitar que se interrumpan ó ignoren.

! Descripción

DIRECTIVA DECOMPILACIÓN DESCRIPCIÓN

INTER Directiva de compilación que indica al compiladordónde empieza la interrupción.

END_INTER Directiva de compilación que indica al compiladordónde termina la interrupción.

Page 228: Manual Tecnico de Programacion Plc PDF

INTERRUPCIONES SOFTWARE ES-IS 4 99.01

IRET

NEMÓNICO: IRETOPERANDO XXXX: No dispone de operandos.CÓDIGO INSTRUCCIÓN: 91

DESCRIPCIÓN:

Instrucción que produce el salto de regreso desde la interrupción desoftware a la ejecución normal de programa.El retorno se ejecuta a la línea siguiente donde se produjo ladetección de la interrupción, mediante la entrada digitalcorrespondiente.No opera con pilas (0).

# Ejemplo:

INTER ;Inicio de la interrupción por softwareLD 1 ;Carga en pila lógica el estado de la

;entrada 1JZ eti1 ;Determina si se debe incrementar ó

;decrementar el registro entero "conta".INC conta -1 ;Decrementa el registro entero "conta".IRET ;Retorno de la interrupción al programa

;principal del MIDA., donde se produjo la;detección de la misma.

eti1 INC conta 1 ;Incrementa el registro CONTAIRET ;Retorno de la interrupción al programa

;principal del MIDA., donde se produjo la;detección de la misma.

END_INTER ;Fin de la interrupción por software

IRET

Page 229: Manual Tecnico de Programacion Plc PDF

INTERRUPCIONES SOFTWARE ES-IS 5 99.01

# EJEMPLOS:

Para efectuar estos ejemplos deberemos comprobar las instrucciones y el direccionamiento de losrelés/registros de la memoria, disponibles en el equipo MIDA que estamos programando.

A.- Utilizar la entrada digital correspondiente a la de interrupcionessoftware para detectar alarmas, almacenándolas en una tabla deregistros.

;Programa principal MIDALD 10 ;Carga en pila lógica el estado de la

;entrada 10.OR 101ANDNT 11OUT 101 ;Control paro / marcha de la salida digital

;101...

;Fin del programa

;Subrutina de mantenimiento de la tabla de registros, (puede ser;llamada desde cualquier punto del programa)ant MOVRI punt_texto ;Carga en pila aritmética el

;contenido del reg. enteroSTOIX punt_tabla ;Almacena en una tabla de registros

;la dirección del texto asociado a la;entrada digital de alarma que se ha;activado.

INC punt_tabla 1 ;Incrementa el puntero a la tabla de;registros para la próxima anotación;en la tabla.

RET

;Inicio de la interrupción software. Este conjunto de instrucciones se;ejecuta cada vez que se activa la entrada.

INTER ;Inicio de la interrupciónSETRI punt_texto 0 ;Inicializa el puntero a la tabla de

;textosLD 12 ;Carga en pila lógica el estado de

;la entrada digital 12

Page 230: Manual Tecnico de Programacion Plc PDF

INTERRUPCIONES SOFTWARE ES-IS 6 99.01

JZ eti1 ;Si no se ha activado la alarma;salta a "eti1".

CALL ant ;Almacena en la tabla de los;registros si hay activación de la;entrada 12

eti1 INC punt_texto 1 ;Incrementa el puntero a la tabla de;los textos

LD 13 ;Carga en pila lógica el estado de la;entrada 13

JZ eti2 ;Si no se ha activado la alarma;salta a "eti2".

CALL ant ;Almacena en la tabla de los;registros si hay activación de la;entrada 13

eti2 INC punt_texto 1 ;Incrementa el puntero a tabla de;textos

LD 14 ;Carga en pila lógica el estado de la;entrada 14

JZ eti3 ;Si no se ha activado la alarma;salta a "eti3".

CALL ant ;Almacena en la tabla de los;registros si hay activación de la;entrada 14

eti3 INC punt_texto 1 ;Incrementa el puntero a la tabla de;textos

IRET ;Retorno de la interrupciónEND_INTER ;Fin de la interrupción por software.

;;Fin de la interrupción software

No es recomendable el uso de subrutinas dentro de una interrupciónpor el tiempo de ejecución que transcurre.Se debe ser muy cuidadoso en observar que el tiempo de ejecuciónTOTAL (subrutinas incluidas) de la interrupción sea inferior al tiempoentre dos interrupciones.

Page 231: Manual Tecnico de Programacion Plc PDF

INTERRUPCIONES SOFTWARE ES-IS 7 99.01

B.- Utilizar la entrada digital correspondiente a la de interrupcionessoftware para contar eventos, detectando si se ha llegado a unapreselección almacenada en un registro entero normal.

INTER ;Inicio de la interrupciónSET relé_fin ;Activa el relé interno que indica fin

;de contaje.INC conta 1 ;Incrementa contador de eventosMOVRI conta ;Carga en pila aritmética el

;contenido del reg. entero "conta";(contador).

MOVRI presel ;Carga en pila aritmética el;contenido reg. entero "presel";(preselección).

CPGEI eti1 ;Detecta si el contador ha llegado a;la preselección

RESET relé_fin ;Desactiva el relé interno que indica;fin de contaje

eti1 IRET ;Retorno de la interrupciónEND_INTER ;Fin de la interrupción por software.

Este conjunto de instrucciones se ejecuta cada vez que se activa laentrada digital correspondiente a la de interrupciones software.La interrupción se limita a activar ó desactivar el relé interno indicandosi se ha llegado ó no a la preselección contenida en un registro enteronormal.

C.- Utilizar la entrada digital correspondiente a la de interrupcionessoftware para contar impulsos en una base de tiempos dada.

;Programa principalLDNT 400TIM 250 10 ;Temporizador base de tiempos de

;1segOUT 400...... ;Continua el programa

Page 232: Manual Tecnico de Programacion Plc PDF

INTERRUPCIONES SOFTWARE ES-IS 8 99.01

;Inicio de la interrupciónINTER ;Inicio de la interrupciónINC conta 1 ;Incrementa contador de impulsosLD 250JZ eti1 ;Detecta si ha transcurrido el tiempo

;de la base de tiemposMOVRI contaSTOI inter ;Almacena en un reg. entero "inter"

;el resultado del contaje para;cálculos posteriores para ahorrar;tiempo dentro de la interrupción

eti1 IRET ;Retorno de la interrupciónEND_INTER ;Fin de la interrupción por software.

Dentro de una interrupción sólo se deben realizar las operacionesestrictamente necesarias de cara a economizar el máximo tiempo deejecución posible.

Así, en el ejemplo se descarga el resultado del contaje sobre unregistro intermedio para utilizarlo posteriormente en el programanormal para cálculos (velocidad, etc).Si en lugar de la instrucción TIM se utiliza la TIMR, la base de tiempos

INC conta 1 ;Incrementa contador de eventosMOVRI contaMOVRI preselCPGEI eti1 ;Detecta si el contador ha llegado a

;la preselecciónRESET relé_fin ;Desactiva el relé interno que indica

;fin de contajeeti1 IRET ;Retorno de la interrupción

END_INTER

La interrupción se limita a activar ó desactivar en relé internoindicando si se ha llegado ó no a la preselección contenida en unregistro entero normal..

Page 233: Manual Tecnico de Programacion Plc PDF

ENTRADAS Y SALIDAS ANALOGICAS ES-AD 1 99.01

Los equipos MIDA disponen de entradas y/o salidas analógicas,en el propio equipo o mediante módulos o cartas de ampliaciones.

! ENTRADAS ANALÓGICAS

Las entradas analógicas puede ser de dos tipos:

" Entradas Analógicas Diferenciales." Entradas Analógicas Comunes.

Modo de programación.

La adquisición de los valores de las entradas analógicas larealiza el equipo por interrupciones.

Para obtener estos valores lo único que debemos hacer es leerel contenido de los registros enteros pertinentes (véase Manual deUsuario del equipo que se utilice ó del módulo o carta de ampliación).

Estos registros son accesibles por el programa MIDA pudiendorealizar tratamientos aritméticos, de comparaciones, de visualización,etc... Son, en definitiva, unos registros enteros normales en los quecada cierto tiempo el equipo actualiza su contenido en función al valorde la entrada analógica pertinente.

Los valores máximo y mínimo que pueden contener estosregistros viene dado por la resolución del conversor.

La actualización de los registros de las entradas se haceproporcionalmente a la señal aplicada a la entrada correspondiente.Así, por ejemplo:

MOVRI 60 ;Carga en pila aritmética el valor del;registro entero 60, equivalente a una;entrada analógica

STOI 500 ;Almacena el contenido en la pila;aritmética en el registro entero 500

en el registro entero 500 se almacenará un valor entre 0 y 4000 en elcaso de una entrada analógica común o un valor entre +/- 32.767 en el

Page 234: Manual Tecnico de Programacion Plc PDF

ENTRADAS Y SALIDAS ANALOGICAS ES-AD 2 99.01

caso de una entrada analógica diferencial, proporcional a la señalanalógica conectada a la entrada analógica (registro entero 60).

El conversor analógico diferencial es del tipo extensiométrico,y a final de escala puede no haber alcanzado los puntos de resoluciónque se especifican en el Manual de Usuario. Por lo tanto es precisorealizar rutinas de calibración para calcular la pendiente de la rectacorrespondiente a esta entrada.

Así por ejemplo:Se deben obtener dos lecturas de puntos: una a un valor de

entrada cero y otra a un valor cualquiera lo más próximo al fondo deescala de la señal exterior.Seguidamente se calcula la pendiente de la recta sabiendo dos puntosde la misma.

De esta manera se obtiene un factor de escala que, operadocon la señal exterior, siempre da como resultado un punto situadoencima de la recta.Así, al multiplicar los puntos analógicos de entrada obtendremos lasunidades de ingeniería (kg, ºC, %Hr, etc.). Tanto en las entradas detipo diferencial como en las de tipo común.

Page 235: Manual Tecnico de Programacion Plc PDF

ENTRADAS Y SALIDAS ANALOGICAS ES-AD 3 99.01

Relé Fin de Conversión A/D.

Existe en algunos equipos MIDA uno o varios relés internosdenominados "Relé Fin de Conversión A/D", el cual se activa cada vezque el conversor A/D hace una lectura. Dicho relé tiene la mismadirección que el registro entero correspondiente a la entradaanalógica.

Dependiendo el tipo de conversor (según modelo MIDA oampliación), cada entrada analógica tiene un relé asociado para cadauna, o comparte el mismo relé para varias entradas analógicas (verManual Usuario del equipo MIDA y/o carta o módulos de ampliación).

Hay que tener en cuenta que el "Relé Fin de Conversión A/D"se activa la primera vez que detecta una conversión A/D, manteniendoel estado de dicho relé en "1", hasta que, mediante el programausuario no lo desactivemos. Así en la próxima conversión A/D, el relése volverá a activar, pudiendo controlar todas la conversiones A/D queefectúa el conversor.

Este relé es muy útil para poder promediar lecturas de laentrada analógica, como veremos en los ejemplos de a continuación.

Page 236: Manual Tecnico de Programacion Plc PDF

ENTRADAS Y SALIDAS ANALOGICAS ES-AD 4 99.01

# EJEMPLOS:

Para efectuar estos ejemplos deberemos comprobar las instrucciones y el direccionamiento de losrelés/registros de la memoria, disponibles en el equipo MIDA que estamos programando.

A.- Visualizar el valor de una entrada analógica de un captador detemperatura, cuyas lecturas máxima y mínima son de 0 a 100oC.Un ejemplo para una entrada analógica es de 0-20mA y otro para unaentrada analógica es de 4-20mA, ambos de 4000 ptos de resolución.

0 - 20mA

MOVIF ent_1 ;Carga el contenido registro entero "ent_1";equivalente a una entrada analógica en;formato en coma flotante.

MOVCF 100 ;Carga en pila aritmética la constante 100;en coma flotante.

MULF ;Multiplica los dos datos contenidos en la;pila aritmética, dejando el resultado en la;misma.

MOVCF 4000 ;Carga en pila aritmética la constante 4000;en coma flotante.

DIVF ;Divide los dos datos contenidos en la pila;aritmética.

STOF temper ;Almacena el resultado anterior en un;registro en coma flotante, ej. "temper".

CLEAR ;Borra el buffer intermedio y sitúa el;puntero en la primera posición

DISRF temper 51 ;Carga en el buffer intermedio el contenido,del registro en coma flotante "temper", con;un decimal.

COM 0 ;Visualiza el contenido del buffer;intermedio en el display LCD

Page 237: Manual Tecnico de Programacion Plc PDF

ENTRADAS Y SALIDAS ANALOGICAS ES-AD 5 99.01

4-20 mA.

MOVIF ent_1 ;Carga el contenido registro entero "ent_1";equivalente a una entrada analógica en;formato en coma flotante.

MOVCF 800 ;Carga en pila aritmética la constante 800;en coma flotante.

SUBF ;Divide los dos datos contenidos en la pila;aritmética (Calcula el offset de la señal de;entrada de 4mA).

MOVCF 100 ;Carga en pila aritmética la constante 100;en coma flotante.

MULF ;Multiplica los dos datos contenidos en la;pila aritmética, dejando el resultado en la;misma.

MOVCF 4000 ;Carga en pila aritmética la constante 4000;en coma flotante.

DIVF ;Divide los dos datos contenidos en la pila;aritmética.

STOF temper ;Almacena el resultado anterior en un;registro en coma flotante, ej. "temper".

CLEAR ;Borra el buffer intermedio y sitúa el;puntero en la primera posición

DISRF temper 51 ;Carga en el buffer intermedio el contenido,del registro en coma flotante "temper", con;un decimal.

COM 0 ;Visualiza el contenido del buffer;intermedio en el display LCD

Page 238: Manual Tecnico de Programacion Plc PDF

ENTRADAS Y SALIDAS ANALOGICAS ES-AD 6 99.01

B.- Tomar el dato de una entrada analógica promediando su valor unnúmero prefijado de veces.

;Definición de etiquetasfin_ad equ xxx ;relé "Fin de conversión" de la entrada analógicaent_1 equ xxx ;registro entero de una entrada analógicacont equ xxx ;registro entero (contador de lecturas realizadas)resul equ xxx ;registro entero (medida promediada)inter equ xxx ;registro en coma flotante (acumulador medidas)prom equ xxx ;constante entera (nº de promedios);

MOVCF 0 ;Carga en pila aritmética la constante 0 en coma;flotante.

STOF inter ;Inicializa un registro en coma flotante como;acumulador de las medidas, almacenando la;constante 0.

MOVCI 0 ;Carga en pila aritmética la constante indicada 0STOI cont ;Inicializa un registro entero como contador de

;lecturas realizadas, almacenando la constante 0.LD fin_ad;Carga en la pila lógica el estado del relé fin de

;conversión "fin_ad" correspondiente a la entrada;analógica.

JZ eti ;Si este relé = ‘1', es que se ha producido una;nueva lectura analógica, por lo que se debe leer;de lo contrario, salta a la línea "eti".

RESET fin_ad;Se desactiva el relé de fin de conversión "fin_ad";para preparar la próxima detección de lectura

MOVIF ent_1 ;Carga en pila el valor de la lectura analógica;convertido a formato en coma flotante

MOVRF inter ;Carga en pila aritmética el contenido del registro;en coma flotante "inter".

ADDF ;Suma los datos de la pila aritmética.STOF inter ;Acumula los valores de las lecturas analógicasINC cont 1;Incrementa en una unidad el contador de lecturas

;realizadas.MOVRI cont ;Carga en pila aritmética el contenido del registro

;entero "cont".MOVCI prom ;Carga en pila aritmética la constante "prom"

;(número de promedios).

Page 239: Manual Tecnico de Programacion Plc PDF

ENTRADAS Y SALIDAS ANALOGICAS ES-AD 7 99.01

CPLEI eti ;Comprueba si ya se ha realizado el número;de lecturas preseleccionadas

MOVRF inter ;Carga en pila aritmética el contenido del registro;en coma flotante "inter".

MOVIF cont ;Carga en pila aritmética el contenido del registro;entero "cont" en formato coma flotante.

DIVF ;Cálculo de la media aritmética de las lecturas;realizadas (acumulador/nº_de_lecturas)

STOFI resul ;Almacena el resultado, convertiendolo en entero,;en el registro entero "resul".

eti -------- ;Sigue el programa...

Page 240: Manual Tecnico de Programacion Plc PDF

ENTRADAS Y SALIDAS ANALOGICAS ES-AD 8 99.01

C.- Programa ejemplo de calibración y visualización de una PT100.Contiene rutinas de Calibración de la sonda PT100 y Visualización degrados leída por la sonda PT100

;Definición relésr1 equ 60 ;Relé de fin de conversión entrada A/Dsi equ 600 ;Flag de confirmación respuestatec1 equ 352 ;Tecla <9>Calibración sonda PT100tec2 equ 355 ;Tecla <.> Confirmación;Definición registros enterospt100 equ 60 ;Entrada analógica sonda PT100puntos equ 500 ;Intermedio puntos A/Dtemp1 equ 501 ;Puntos temperatura mínimatemp2 equ 502 ;Puntos temperatura máximaconta equ 503 ;Contador de lecturas A/Dinter equ 504 ;Intermedio para cálculosoffset equ 505 ;Offset de la sonda PT100;Definición registros en coma flotanteacum equ 0 ;Acumulador de lecturas A/Dtempox equ 1 ;Temperatura mínima calibrado en gradostempoy equ 2 ;Temperatura máxima calibrado en gradostempo equ 4 ;Temperatura calculada en gradosfactor equ 5 ;Pendiente recta sonda PT100;Definición constantenveces equ 9 ;num lecturas A/D para promediar;Definición literalestext0 lite "PT100"text1 lite "PT100 C minima"text2 lite "Temp. Min. Cal.?"text3 lite "PT100 C maxima"text4 lite "Temp. Max. Cal.?"text5 lite "PULSAR... <.> "

Page 241: Manual Tecnico de Programacion Plc PDF

ENTRADAS Y SALIDAS ANALOGICAS ES-AD 9 99.01

;PROGRAMA PRINCIPALeti CALL cal1 ;Calculo de la temperatura

CALL visua ;Visualización de la temperaturaINK tec1 ;Detección teclaJZ eti0 ;Mira si pulsa tecla de calibraciónCALL cali ;Calibración de sonda PT100

eti0 END

;CALCULO DE LA TEMPERATURA DE LA PT100cal1 MOVRI pt100 ;Carga puntos entrada sonda

MOVRI offset ;Carga el offsetSUBI ;Resta offset a los puntos medidosSTOI inter ;Guarda resultadoMOVIF inter ;Carga registro intermedioMOVRF factor ;Carga el factor de calibraciónDIVF ;Multiplica para dar temperaturaSTOF tempo ;Temperatura en ºCRET

;VISUALIZACION DE PROGRAMAvisua CLEAR ;Borra buffer intermedio

DISL text0 ;Texto "PT100"LOC 7 ;Posición puntero buffer intermedioDISRF tempo 42 ;Visualización temperaturaLOC 13 ;Posición puntero buffer intermedioDISCH 67 ;Carga carácter "C"DISCH 223 ;Carga carácter "º"COM 0 ;Visualiza en display LCDRET

;CALIBRACION PT100 (factor = tempoy - tempox / temp2 - temp1);procede a calibrar temperatura mínima (calcula pendiente de recta)cali CLEAR ;Borra buffer intermedio

DISL text2 ;Texto "Temp. Min. Cal.?"LOC 28 ;Posición puntero buffer intermedioDISCH 67 ;Carga carácter "C"DISCH 223 ;Carga carácter "º"COM 0 ;Visualiza en display LCDLOC 21 ;Posición puntero buffer intermedio

Page 242: Manual Tecnico de Programacion Plc PDF

ENTRADAS Y SALIDAS ANALOGICAS ES-AD 10 99.01

INF 6 ;Introducción temperatura mínimaSTOF tempox ;Guarda introducciónCLEAR ;Borra buffer intermedioDISL text1 ;Texto "PT100 C minima"LOC 6 ;Posición puntero buffer intermedioDISCH 223 ;Carga carácter "º"LOC 16 ;Posición puntero buffer intermedioDISL text5 ;Texto "PULSAR... <.> "COM 0 ;Visualiza en display LCD

cali1 CALL sip ;Comprueba confirmaciónJZ cali1CALL tom0 ;Toma puntos temperatura mínimaMOVRI puntos ;Carga puntos promediadosMOVRI puntos ;Carga puntos promediadosSTOI temp1 ;Guarda calculo de pendiente min.STOI offset ;Guarda calculo del offset

;procede a calibrar temperatura máxima (calcula pendiente de recta)CLEAR ;Borra buffer intermedioDISL text4 ;Texto "Temp. Max. Cal.?"LOC 28 ;Posición puntero buffer intermedioDISCH 67 ;Posición puntero buffer intermedioDISCH 223 ;Carga carácter "º"COM 0 ;Visualiza en display LCDLOC 21 ;Posición puntero buffer intermedioINF 6 ;Introducción temperatura máximaSTOF tempoy ;Guarda introducciónCLEAR ;Borra buffer intermedioDISL text3 ;Texto "PT100 C maxima"LOC 6 ;Posición puntero buffer intermedioDISCH 223 ;Carga carácter "º"LOC 16 ;Posición puntero buffer intermedioDISL text5 ;Texto "PULSAR... <.> "COM 0 ;Visualiza en display LCD

cali5 CALL sip ;Comprueba confirmaciónJZ cali5CALL tom0 ;Toma puntos temperatura máximaMOVRI puntos ;Carga puntos promediadosSTOI temp2 ;Guarda calculo de pendiente max.

Page 243: Manual Tecnico de Programacion Plc PDF

ENTRADAS Y SALIDAS ANALOGICAS ES-AD 11 99.01

MOVIF temp2 ;Carga calculo de pendiente max.MOVIF temp1 ;Carga calculo de pendiente min.SUBF ;Calcula diferencia pendienteMOVRF tempoy ;Carga temperatura max. calibradaMOVRF tempox ;Carga temperatura min. calibradaSUBF ;Calcula diferencia temperaturaDIVF ;Calcula factor de la pendienteSTOF factor ;Guarda factor pendiente de la rectaRET

;TOMA PUNTOS DE CONVERSOR PROMEDIANDOtom0 SETRI acum 0 ;Inicializa acumulador de lecturas

SETRI conta 0 ;Inicializa contador de promediostom1 LD r1 ;Carga "Relé fin conversión A/D"

JZ tom1RESET r1 ;Reseta "Relé fin conversión A/D"MOVIF pt100 ;Carga puntos entrada sondaMOVRF acum ;Carga acumulador de lecturasADDF ;Suma puntos A/D y acumuladorSTOF acum ;Guarda en el acumulador lecturasINC conta 1 ;Incrementa contador de lecturasMOVRI conta ;Carga contador de lecturasMOVCI nveces ;Carga constante de promediosCPLEI tom1 ;Comprueba si ha llegadoMOVRF acum ;Carga acumulador de lecturasMOVIF conta ;Carga contador de lecturasDIVF ;Divide acumulador con promediosSTOFI puntos ;Guarda puntos promediadosRET

;PREGUNTA CONFIRMACIÓNsip SET si ;Activa flag de confirmación

INK tec2 ;Detección teclaJNZ sip1 ;Comprueba la confirmaciónRESET si ;Borra flag de confirmación

sip1 LD si ;Activa flag de confirmaciónRET

Page 244: Manual Tecnico de Programacion Plc PDF

ENTRADAS Y SALIDAS ANALOGICAS ES-AD 12 99.01

! SALIDAS ANALÓGICAS

Los equipos MIDA disponen de salidas analógicas, mediantemódulos o cartas de ampliacionesLa información específica de cada uno de estos módulos o cartas deampliaciones se encuentra en el Manual del Usuario de estos.

Modo de programación

Las salidas analógicas del MIDA son de 4000ptos de resolucióny un rango de 0/4 - 20mA.El equipo produce una salida analógica proporcional al contenido delregistro entero asociado a dicha salida.Así, si el registro entero xxx (registro entero correspondiente a unasalida analógica de 0-20mA) contiene el dato:

4000 ,la salida será de 20mA2000 ,la salida será de 10mA0 ,la salida será de 0mA

Los registros de las salidas analógicas son accesibles por elprograma MIDA para tratarlos aritméticamente, compararlos,modificarlos, visualizarlos, etc.

En todo momento, el MIDA producirá una salida analógicaproporcional al contenido del registro.

Page 245: Manual Tecnico de Programacion Plc PDF

ENTRADAS Y SALIDAS ANALOGICAS ES-AD 13 99.01

# EJEMPLOS:

Para efectuar estos ejemplos deberemos comprobar las instrucciones y el direccionamiento de losrelés/registros de la memoria, disponibles en el equipo MIDA que estamos programando.

A.- Se toma el valor de dos entradas analógicas (de 32767 puntos), serealiza la media aritmética y se produce una salida analógica (de 4000puntos) proporcional a este cálculo.Salida Analógica = (Entrada Analógica 1) + (Entrada Analógica 2) / 2

MOVIF 60 ;Carga en la pila aritmética el valor de una;entrada analógica en formato coma flotante.

MOVIF 61 ;Carga en pila aritmética el valor de la segunda;entrada analógica en formato coma flotante

ADDF ;Suma los dos datos contenidos en la pila;aritmética y deja el resultado en la misma pila;(Ent_A/D1 + Ent_A/D2 = suma).

MOVCF 2 ;Carga la constante 2 en pila aritmética.DIVF ;Divide los dos datos contenidos en la pila

;aritmética (Suma / 2 = media_aritmética) y deja el;resultado en la misma pila.

STOF 0 ;Almacena en el registro en coma flotante 0 el;contenido de la pila aritmética (media aritmética;de las dos entradas analógicas)

MOVRF 0 ;Carga en la pila aritmética el contenido del;registro en coma flotante 0.

MOVCF 4000 ;Carga en pila aritmética la constante 4000.MULF ;Multiplica los dos datos de la pila aritmética (La

;media se multiplica por la resolución de la salida;analógica)

MOVCF 32767;Carga la constante en coma flotante 32767 (se;divide por la resolución estimada de las;entradas analógicas

DIVF ;Divide los datos de la pila aritmética dejando el;resultado en la misma pila (realiza la regla de tres;para calcular la salida analógica proporcional a la;media aritmética de las entradas analógicas

STOFI 1000 ;El resultado (en coma flotante) contenido en la;pila aritmética, debe ser convertido a entero para;poderse almacenar en el registro entero;correspondiente a la salida analógica.

Page 246: Manual Tecnico de Programacion Plc PDF

ENTRADAS Y SALIDAS ANALOGICAS ES-AD 14 99.01

.

Page 247: Manual Tecnico de Programacion Plc PDF

FI

Page 248: Manual Tecnico de Programacion Plc PDF

.

Page 249: Manual Tecnico de Programacion Plc PDF

FUNCIONES INTERNAS FI-FI 1 99.01

Existe en algunos equipos MIDA la disponibilidad de una nuevainstrucción denominada FUNC.Dicha instrucción, dependiendo del operando, nos hará una llamadainterna a una función determinada: función de control PID, función depesaje, ...

La descripción de la instrucción FUNC, varia según para cadafunción. El formato de la instrucción en modo genérico es:

FUNC XXXX YYYY

NEMÓNICO: FUNCOPERANDO XXXX: Constante la cual indica la función a llamar.OPERANDO YYYY: Constante la cual indica un parámetro

opcional para la función llamada.CÓDIGO INSTRUCCIÓN: 90

DESCRIPCIÓN:

Descripción de la función y de sus operandos

En los siguientes capítulos describimos la funciones disponibles.

FUNC

Page 250: Manual Tecnico de Programacion Plc PDF

FUNCIONES INTERNAS FI-FI 2 99.01

.

Page 251: Manual Tecnico de Programacion Plc PDF

FUNCIONES DE PESAJE FI-PS 1 99.01

Dentro del programa interno de algunos equipos MIDA,disponemos de rutinas para pesaje, en la que incluye las siguientesfunciones especificas:

" Set-up usuario / avanzado de las básculas." Calibración de las básculas." Ajuste de autotara.

El sistema nos permite disponer de hasta 18 básculas,dependiendo del modelo de equipo MIDA (consultar Manual deUsuario).

! Funciones para la programación de pesaje

Para utilizar las funciones de pesaje hemos de utilizar lainstrucción FUNC con cuatro operandos diferentes.

FUNC 7 n ;Ajuste de autocero de una bascula.FUNC 8 0 ;Calibración automática de la báscula.FUNC 9 0 ;Set-up Usuario de la bascula.FUNC 9 1 ;Set-up Avanzado de la bascula.

! Parámetros de una báscula

Los parámetros que disponemos para cada una de lasbásculas, según el tipo de función que llamemos son los siguientes:

Opciones FUNC 9 0 FUNC 9 1 FUNC 8 FUNC 7

Estado ON / OFF Accesible Accesible ------ ------

Promedios 1 / 2 / 4 / 8 Accesible Accesible ------ ------

Cadencia 1 / 2 / 5 Accesible Accesible ------ ------

Nº decimales 0 / 1 / 2 / 3 Accesible Accesible ------ ------FactorEscala

ComaFlotante ------ Accesible Automático ------

Cero Entero ------ Accesible Automático ------Tara Entero ------ Accesible Se borra Automático

Page 252: Manual Tecnico de Programacion Plc PDF

FUNCIONES DE PESAJE FI-PS 2 99.01

! Registros utilizados por las básculas.

Los relés / registros utilizados en las funciones de pesaje paracada bascula y accesibles por el usuario son:

" Relé de fin de pesada (relé de fin de conversión A/D)" Registro Entero de puntos de conversión A/D (entrada analógica)." Registro en Coma Flotante (resultado del pesaje)" Registro Entero indicando numero de decimales.

NOTA: El resultado de pesaje es el registro en coma flotanteequivalente al numero de bascula.

! Ecuaciones funcionamiento báscula

El parámetro promedio especifica el número de medidas que hade realizar la entrada analógica A/D para obtener un pesopromediado. Con este parámetro se elimina ruido en el pesaje, perodisminuye la velocidad del mismo.

Primero se calcula la media en puntos de conversor de laentrada. Luego se resta el cero, la tara y se divide por el factor deescala.

Luego se cortan los decimales según indique el parámetro Nºde decimales y se redondea a múltiplos de 1, 2 ó 5 según indique elparámetro cadencia. Y se guarda el peso total en el registro en comaflotante equivalente al número de bascula.

Peso almacenado = redondeo(peso, Nº decimales, cadencia)

∑= conversor puntospromedio

1 media

escalafactor tara- cero - media peso =

Page 253: Manual Tecnico de Programacion Plc PDF

FUNCIONES DE PESAJE FI-PS 3 99.01

FUNC XXXX YYYY

NEMÓNICO: FUNCOPERANDO XXXX: Constante 7OPERANDO YYYY: Registro entero que contiene el número de

báscula a ajustar.CÓDIGO INSTRUCCIÓN: 90

DESCRIPCIÓN:

Realiza ajuste de autocero (autotara).El operando XXXX es la constante 7, llamada a la función deautocero.El operando YYYY es la dirección del registro entero con el númerode bascula.La primera bascula es la 0, que equivale a la primera entradaanalógica detectada.Mensaje por display: NingunoNo opera con las pilas (0)

Nota: La báscula correspondiente debe estar activada mediante laFUNC 9, sino no ejecutara el autocero.

# Ejemplo:

MOVCI 2 ;Carga la constante 2.STOI 600 ;Almacena la constante en el reg. enteroINK tecla ;Detección de una tecla.JZ sub1 ;Si detecta la tecla pulsada, ejecuta FUNC.

;de lo contrario salta a "sub1".FUNC 7 600 ;Realiza el autocero (tara) del número de

bascula contenido en el reg. entero 600, es;decir la bascula número 3 (la primera es;la cero).

sub1 ..........

FUNC

Page 254: Manual Tecnico de Programacion Plc PDF

FUNCIONES DE PESAJE FI-PS 4 99.01

FUNC XXXX YYYY

NEMÓNICO: FUNCOPERANDO XXXX: Constante 8OPERANDO YYYY: Constante 0CÓDIGO INSTRUCCIÓN: 90

DESCRIPCIÓN:

Calibración automática de la báscula.El operando XXXX es la constante 8, llamada a la función de menúde calibración.El operando YYYY es la constante 0.Mensaje por display: SiNo opera con las pilas (0)

Para seleccionar la entrada A/D de la bascula a calibrar, seefectúa mediante las teclas <%> y/o <&> del teclado del equipo MIDA.

Si la báscula seleccionada no esta activada aparecerá el texto -OFF- en el display y no podrá ser calibrada. Si no existe o no funcionala entrada A/D de la bascula seleccionada el mensaje apareceráparpadeando y no se podrá calibrar.

Nota: La báscula correspondiente debe estar activada mediante laFUNC 9

El esquema del menú de calibración de la bascula es:

FUNC

Page 255: Manual Tecnico de Programacion Plc PDF

FUNCIONES DE PESAJE FI-PS 5 99.01

Page 256: Manual Tecnico de Programacion Plc PDF

FUNCIONES DE PESAJE FI-PS 6 99.01

FUNC XXXX YYYY

NEMÓNICO: FUNCOPERANDO XXXX: Constante 9OPERANDO YYYY: Modo de Set-up de la bascula.CÓDIGO INSTRUCCIÓN: 90

DESCRIPCIÓN:

Permite entrar al modo de Set-up indicado en el operando YYYY,para parámetrizar el funcionamiento de la bascula.El operando XXXX es la constante 9, llamada a la función de Set-upde la bascula.El operando YYYY es la constante que nos indica que modo de Set-up deseamos que nos muestre:

0 Set-up Usuario1 Set-up Avanzado

Mensaje por display: SiNo opera con las pilas (0)

Para seleccionar la entrada A/D de la bascula a calibrar, seefectúa mediante las teclas <%> y/o <&> del teclado del equipo MIDA.

Si la báscula seleccionada no esta activada aparecerá el texto -OFF- en el display y no podrá ser calibrada. Si no existe o no funcionala entrada A/D de la bascula seleccionada el mensaje apareceráparpadeando y no se podrá calibrar.

Mediante esta instrucción activaremos las rutinas de pesaje decualquier bascula, además de definir los parámetros defuncionamiento de dicha bascula. Todo ello se almacena en EEPROMno volátil de forma que al apagar y encender el equipo MIDA no sepierdan los parámetros.

Para configurar una bascula se puede ejecutar la siguienteinstrucción:

FUNC 9 1 ;Set-up Avanzado.

FUNC

Page 257: Manual Tecnico de Programacion Plc PDF

FUNCIONES DE PESAJE FI-PS 7 99.01

Para cual se deben conocer los parámetros de Factor de Escalay el Cero. También se puede automatizar la obtención de dichosparámetros mediante la función (. Entonces para configurar un basculapodríamos ejecutar las siguientes instrucciones:

FUNC 9 0 ;Set-up UsuarioFUNC 8 0 ;Calibración Automática de bascula

El esquema del Set-up de la bascula es:

Page 258: Manual Tecnico de Programacion Plc PDF

FUNCIONES DE PESAJE FI-PS 8 99.01

# EJEMPLOS:

Para efectuar estos ejemplos deberemos comprobar las instrucciones y el direccionamiento de losrelés/registros de la memoria, disponibles en el equipo MIDA que estamos programando.

;Programa ejemplo para MIDA 64.;Programa de muestra da la utilización de las funciones de pesaje

; Tecla Acción; -------- ---------; F5 Ejecuta "FUNC 7 basc"; F6 Ejecuta "FUNC 8 0"; F7 Ejecuta "FUNC 9 0"; F8 Ejecuta "FUNC 9 1"; SUBIR Pasa a mostrar la siguiente báscula; BAJAR Pasa a mostrar la báscula anterior;Mientras no se pulse ninguna tecla mostrar en pantalla número de;báscula y el peso medido.

;Definición de teclas a usar

f5 equ 360 ;Relé correspondiente a la tecla <F5>.f6 equ 361 ;Relé correspondiente a la tecla <F6>.f7 equ 362 ;Relé correspondiente a la tecla <F7>.f8 equ 363 ;Relé correspondiente a la tecla <F8>.subir equ 342 ;Relé correspondiente a la tecla <UP>.bajar equ 343 ;Relé correspondiente a la tecla <DOWN>.

;Definición registros enteros

basc equ 400 ;Registro para almacenar el número de báscula.frm equ 401 ;Registro contiene formato display en DISFX.

;Definición literales

txt0 lite "BASCULA :"txt1 lite "PESO :"

Page 259: Manual Tecnico de Programacion Plc PDF

FUNCIONES DE PESAJE FI-PS 9 99.01

SETRI basc 0 ;Almacenamos la constante 0 en el registro;entero "basc" (nº de bascula).

SETRI frm 93 ;Almacenamos la constante 93 en el reg.;entero "frm" (formato de visualización).

inic INK f5 ;Detectamos la tecla <F5>.JZ sal1FUNC 7 basc ;Autocero báscula con nº almacenado en

;en el registro entero "basc".sal1 INK f6 ;Detectamos la tecla <F6>.

JZ sal2FUNC 8 0 ;Calibración báscula

sal2 INK f7 ;Detectamos la tecla <F7>.JZ sal3FUNC 9 0 ;Parámetros báscula usuario

sal3 INK f8 ;Detectamos la tecla <F8>.JZ sal4FUNC 9 1 ;Parámetros báscula avanzados

sal4 INK subir ;Detectamos la tecla <UP>.JZ sal5INC basc 1 ;Incrementamos el contenido del reg.

;entero "basc" en 1.MOVRI basc ;Carga en la pila aritmética el contenido del

;reg. entero "basc".MOVCI 18 ;Carga en la pila aritmética la constante 18CPLI sal5 ;Si el contenido del reg. entero "basc" no

;es 18 salta a la línea "sal5".SETRI basc 0 ;Si "basc" > = 18 poner "basc" = 0;

sal5 INK bajar ;Detectamos la tecla <DOWN>.JZ sal6INC basc -1 ;Decrementamos el contenido del reg.

;entero "basc" en 1.MOVRI basc ;Carga en la pila aritmética el contenido del

;reg. entero "basc".MOVCI 0 ;Carga en la pila aritmética la constante 0CPGEI sal6 ;Si el contenido del reg. entero "basc" es

;igual o mayor de 0 salta a la línea "sal6".SETRI basc 17 ;Si "basc" < 0 poner "basc" =17;

sal6 CLEAR ;Borra el buffer intermedio y sitúa el;puntero en la primera posición.

Page 260: Manual Tecnico de Programacion Plc PDF

FUNCIONES DE PESAJE FI-PS 10 99.01

DISL txt0 ;Carga en el buffer intermedio el mensaje;de la tabla de literales "txt0"

LOC 14 ;Posiciona el puntero de visualización en la;decimocuarta posición (la primera es la;cero).

DISRI basc 2 ;Copia en el buffer intermedio el contenido;del reg. entero "basc" con 2 cifras.

LOC 16 ;Posiciona el puntero de visualización en la;decimosexta posición (la primera es la;cero).

DISL txt1 ;Carga en el buffer intermedio el mensaje;de la tabla de literales "txt1"

LOC 23 ;Posiciona el puntero de visualización en la;vigésima tercera posición (la primera es la;cero).

DISFX basc frm ;Copia en el buffer intermedio el contenido;del reg. en coma flotante, apuntado por el;reg. entero "basc", con el formato;contenido en el reg. entero "frm".

COM 0 ;Copia el contenido del buffer intermedio;en el display LCD.

JMP inic ;Salto incondicional a la línea "inic".

Page 261: Manual Tecnico de Programacion Plc PDF

FUNCION CONTROL PID FI-CP 1 99.01

Algunos equipos MIDA incorporan una función interna para laprogramación de un control PID, una de cuyas utilidades se encuentrareservada al campo de las aplicaciones donde necesitemos utilizarcontroles del tipo proporcional integral derivativo también conocidosmás popularmente como funciones de control PID.

! Control PID

Un control de PID es un sistema que utilizamos en procesos decontrol realimentados en un sistema que llamamos de lazo cerrado. Laidea básica del controlador de PID es hacer de que la salida busque ysiga las variaciones de la señal de entrada, en tiempo real. EL métodopara realizar dichos ajustes viene dado por un sistema basado encontroles de tipo Proporcional, Integral y Derivativo, y que comopodemos comprobar, además, coincide con las siglas del sistemadenominado control de “PID”.

Lo que nos permite la función de PID implementada en nuestrosequipos es evitar al programador el que tenga que realizar todos estoscálculos propios en un proceso de regulación. En el que comosabemos es un proceso en el que una determinada magnitud deentrada, variable en el tiempo (magnitud regulada, valor actual,...) deun sistema y detectada continuamente, es comparada con otramagnitud dada (valor prescrito, fijado...) e influenciada en el sentido deuna igualación. El proceso de actuación obtenido se desarrolla en unsistema como ya comentamos anteriormente de lazo cerrado.

Las ventajas con la función de PID implementadas en nuestrosequipos Mida son claras, todas las operaciones que deberíamos derealizar para tener un sistema de control y regulación de un proceso ygarantizar su estabilidad, nos las evitamos, ahorrándonos unaconsiderable cantidad de tiempo al utilizar dichas funciones de controlde PID y cuyo funcionamiento pasamos a describir a continuación..

! Programación PID

La programación de un control PID se realizará a través de lainstrucción de autómata denominada FUNC y deberemos de seguirunas pautas concretas que relacionamos a continuación:

Page 262: Manual Tecnico de Programacion Plc PDF

FUNCION CONTROL PID FI-CP 2 99.01

" Lo primero que deberemos de hacer es configurar la función dePID para lo que utilizaremos la instrucción FUNC 1 n, donde nserá el número de PID a utilizar (de 0 a 9, máximo 10 controlesPID).

" Una cuestión importante y que no debemos de olvidar es el hechode que antes de realizar la función de control de PID deberemosde resetear las variables internas de la función de PID, para locual deberemos de utilizar la instrucción FUNC 2 n, donde n es elnumero de PID a utilizar.

" El paso siguiente es el de realizar la función de control de PIDpropiamente dicha para lo que utilizaremos la instrucción FUNC 0n, donde n es el numero de PID a utilizar.

Llegados a este punto habremos observado que dentro del apartadodel control PID disponemos de tres instrucciones, FUNC 0, FUNC 1 yFUNC 2 y que seguidamente pasaremos a detallar.

Page 263: Manual Tecnico de Programacion Plc PDF

FUNCION CONTROL PID FI-CP 3 99.01

FUNC XXXX YYYY

NEMONICO: FUNCOPERANDO XXXX: Constante 0OPERANDO YYYY: Número de PID a efectuar el control.CÓDIGO INSTRUCCIÓN: 90

DESCRIPCIÓN:

Realiza el control PID.El operando XXXX es la constante 0, llamada a la función de controlPID.El operando YYYY indica el número de PID a utilizar, de 0 a 9.Descarga de la pila aritmética el contenido de un registro enterocargado previamente (valor de la medida realizada) paraposteriormente efectuar el control PID y dejar el resultado sobre lamisma pila aritmética.No altera la pila aritmética.

Nota: El error (Consigna – Medida) y el valor de control estánnormalizados de -10000 a 10000.

# Ejemplo:

Ver final de este capitulo.

FUNC

Page 264: Manual Tecnico de Programacion Plc PDF

FUNCION CONTROL PID FI-CP 4 99.01

FUNC XXXX YYYY

NEMONICO: FUNCOPERANDO XXXX: Constante 1OPERANDO YYYY: Número de PID a parametrizar.CÓDIGO INSTRUCCIÓN: 90

DESCRIPCIÓN:

Configuración de los parámetros del PID.El operando XXXX es la constante 1, llamada a la función deparametrización del PID.El operando YYYY es el número de PID a parametrizar, de 0 a 9.Descarga de la pila aritmética el valor el cual indica la Dirección deinicio de los parámetros del PID:

Dirección inicio (registro entero x): valor deConsignaDirección x+1 (registro entero x+1): valor K*100Dirección x+2 (registro entero x+2): valor PIDirección x+3 (registro entero x+3): valor PD*10

Las Direcciones (registros enteros) anteriores han de ir consecutivosy en el orden indicado. Los valores del PID, son los contenidos deestos registros enteros.Decrementa un nivel la pila aritmética (-1).

Nota: Todos los valores están normalizados de -10000 a 10000.

Como el valor almacenado en Dirección+1 es K*100 esto nosda que K varia de -100.00 a 100.00, donde el signo negativo sirvepara indicar sistemas de acción inversa (un error negativo da unasalida positiva).

En Dirección+2, PI puede valer de 0 a 10000, donde el ceroindica que no hay acción integral.

En Dirección+3 se almacena PD*10 lo que nos da que PD variade 0 a 1000.0 (PD acostumbra a ser mucho más pequeño que PI). SiPD vale 0 no habrá acción diferencial.

FUNC

Page 265: Manual Tecnico de Programacion Plc PDF

FUNCION CONTROL PID FI-CP 5 99.01

PI = TR /To TR - Tiempo de reajuste integral.TA - Tiempo de avance derivativo.

PD = TA /To To - Tiempo de muestreo.

La dirección solo incluye registros de RAM volátiles e intentar usarregistros no volátiles de EEPROM nos producirá un error.

# Ejemplo:

Ver final de este capitulo.

FUNC XXXX YYYY

NEMONICO: FUNCOPERANDO XXXX: Constante 2OPERANDO YYYY: Número de PID a inicializar.CÓDIGO INSTRUCCIÓN: 90

DESCRIPCIÓN:

Inicialización de las variables internas del control PID:El operando XXXX es la constante 2, llamada a la función deinicialización del control PID.El operando YYYY es el número de PID a inicializar.No opera con las pilas (0).

# Ejemplo:

Ver final de este capitulo.

FUNC

Page 266: Manual Tecnico de Programacion Plc PDF

FUNCION CONTROL PID FI-CP 6 99.01

# EJEMPLOS:

Para efectuar estos ejemplos deberemos comprobar las instrucciones y el direccionamiento de losrelés/registros de la memoria, disponibles en el equipo MIDA que estamos programando.

A. Control PID para un sistema térmico;Por un lado tendremos una sonda con la cual medimos la

temperatura a través de una entrada analógica (tendremos puntos deconversor y no grados centígrados).

Y por el otro lado tendremos una resistencia con la cualpodemos calentar el sistema. Dicha resistencia solo podemosencenderla o apagarla.

El control PID nos retorna un valor de control. La salida lacontrolaremos por ancho de pulso. Es decir que de todo el tiempo Toque ha de transcurrir entre dos medidas tendremos un tiempoencendida la resistencia y el resto apagada.

;Definición de etiquetas

rele equ 500 ;Relé para temporizadoressalida equ 100 ;Salida digital que activa la resistencia;cns,K,Pi,Pd han de ir consecutivos y en este orden.cns equ 300 ;Reg. entero que contiene el valor de

;consignaK equ 301 ;Reg. entero que contiene el valor de KPi equ 302 ;Reg. entero que contiene el valor de PiPd equ 303 ;Reg. entero que contiene el valor de Pdoffs equ 19843 ;Offset restado a la medidatmm equ 400 ;Dirección temporal para almacenar la

;medidacontrol equ 401 ;Dirección almacenar variable de controltmp equ 402 ;Dirección temporal para cálculostimer equ 250 ;Temporizadormedida equ 60 ;Entrada analógica

;En este ejemplo, tras iniciar el control PID se queda encerrado en;un bucle leyendo la entrada, ejecutando la función de control PID y;en función de la respuesta activando la salida.

Page 267: Manual Tecnico de Programacion Plc PDF

FUNCION CONTROL PID FI-CP 7 99.01

MOVCI cns ;Carga en la pila aritmética la constante;"cns" (dirección del reg. entero que;contiene el valor de consigna.

FUNC 1 0 ;Descarga de la pila aritmética el valor que;indica la dirección inicial de los;parámetros para el PID 0 (Importante no;olvidárselo)

FUNC 2 0 ;Inicializa las variables internas del PID 0

bucle MOVRI medida ;Carga en pila aritmética el registro entero,;con el valor de la entrada analógica

SUBC offs ;Restar la constante indicada (equivalente;al offset calculado en una rutina de;calibración).

STOI tmm ;Almacena el resultado en el reg. entero "tmm"MOVRI tmm ;Carga en pila aritmética el contenido del

;registro entero "tmm".FUNC 0 0 ;Descarga el contenido de la pila aritmética

;para efectuar el control del PID 0, y deja el;resultado en la misma pila aritmética.

STOI control ;Almacena el contenido de la pila;aritmética en el registro entero "control".

CALL displ ;Llama a la rutina "displ" (visualización)CALL rut_ct ;Llama a la rutina rut_ctJMP bucle ;Salto incondicional a "bucle".

;Muestra por el display la variable de entrada y la variable de control.

displ CLEAR ;Borra el buffer intermedio y sitúa el;puntero en la primera posición.

DISRI tmm 4 ;Carga en el buffer intermedio el contenido;del reg. entero "tmm" con el formato;especificado por el segundo operando.

LOC 5 ;Posiciona el puntero de visualizaciónMOVRI control ;Carga en pila aritmética el contenido del

;reg. entero "control".DIVC 100 ;Divide por la constante indicada (pasa a

;tanto por ciento).STOI tmp ;Almacena el contenido de la pila

;aritmética en el reg. entero "tmp".

Page 268: Manual Tecnico de Programacion Plc PDF

FUNCION CONTROL PID FI-CP 8 99.01

DISRI tmp 2 ;Carga en el buffer intermedio el contenido;del reg. entero "tmp" con el formato;especificado por el segundo operando.

COM 0 ;Visualiza el contenido del buffer;intermedio en el display LCD.

RET ;Retorno de rutina

;Control de la salida por ancho de pulso;Los temporizadores del MIDA utilizan una base de tiempos de;100ms. Dividiendo la variable de control (0..10000) por 100;obtendremos un control de tiempo de 0 a 10 segundos.

rut_ct MOVRI control ;Carga en pila aritmética el contenido del;reg. entero "control".

MOVCI 0 ;Carga en pila aritmética la constante 0CPLI c_neg ;Compara la constante 0 con el registro

;control y en caso de que control sea;negativo salta a c-neg.

MOVRI control ;Carga en pila aritmética el contenido del;reg. entero "control" (obtención de un;tiempo de 0 a 10 segundos).

DIVC 100 ;Divide por la constante 100STOI tmp ;Carga en pila aritmética el contenido del

;reg. entero "tmp".JMP ctr ;Salto incondicional a "ctr"

c_negMOVCI 0 ;Carga en pila aritmética la constante 0.STOI tmp ;Almacena el contenido de la pila

;aritmética en el reg. entero "tmp".ctr SET salida ;Activa el relé "salida" (activo la salida)

SET rele ;Activa el relé "rele"tim1 LDNT rele ;Carga en pila lógica el estado negado

;del relé "rele".TIMR timer tmp ;Temporiza tmp/10 segundosOUT rele ;Descarga el resultado del temporizador

;sobre el relé "rele".LD rele ;Carga en pila lógica el estado del relé

;"rele"JZ tim1 ;Salta si el temporizador "timer" no ha

;finalizado

Page 269: Manual Tecnico de Programacion Plc PDF

FUNCION CONTROL PID FI-CP 9 99.01

MOVCI 100 ;Carga en pila aritmética la constante 100MOVRI tmp ;Carga en pila aritmética el contenido del

;reg. entero "tmp"SUBI ;Resta los datos contenidos en la pila

;aritméticaSTOI tmp ;Almacena el resultado de la resta en el

;registro entero "tmp" (100 - tmp)RESET salida ;Desactiva el relé "salida" (desactiva la

;salida.SET rele ;Activa el relé "rele".

tim2 LDNT rele ;Carga en pila lógica el estado negado;de relé "rele".

TIMR timer tmp ;Temporiza el resto hasta 10 segundosOUT rele ;Descarga el resultado del temporizador

;sobre el relé "rele".LD rele ;Carga en pila lógica el estado del relé

;"rele".JZ tim2 ;Salta si el temporizador "timer" no ha

;finalizadoRET ;Retorno de rutina.

Page 270: Manual Tecnico de Programacion Plc PDF

FUNCION CONTROL PID FI-CP 10 99.01

.

Page 271: Manual Tecnico de Programacion Plc PDF

DF

Page 272: Manual Tecnico de Programacion Plc PDF

.

Page 273: Manual Tecnico de Programacion Plc PDF

DIRECCIONAMIENTO INDIRECTO DF-DI 1 99.01

! PUNTEROS Y TABLAS DE REGISTROS (ARRAYS).

Los equipos MIDA disponen de un juego de instruccionesdenominadas de direccionamiento indirecto.Mediante este juego de instrucciones es posible realizar o utilizarpunteros para indexar tablas de registros (arrays) ó de mensajes.

! INSTRUCCIONES DE DIRECCIONAMIENTO INDIRECTO

El juego de instrucciones de direccionamiento indirecto es elque adjuntamos en la tabla siguiente:

LDX MOVIX DISIX INPIX

OUTX STOIX DISFX INFPX

MOVFX DISLX INPCX

STOFX LOCX

La descripción de cada una de estas instrucciones ya ha sido tratadaen el capitulo "IN" de este manual, no obstante, en este capituloampliaremos algunas cuestiones sobre el uso de las instruccionesindexadas.

! ACCIONES QUE SE PUEDEN REALIZAR POR PROGRAMA

Las acciones que pueden realizarse con las instruccionesanteriormente descritas son las siguientes:

" Manipulación de una tabla de relés (carga y descarga)." Manipulación de una tabla de registros enteros ó en coma

flotante (carga y descarga)." Visualización de mensajes y registros enteros ó en coma

flotante mediante el direccionamiento indirecto." Posicionamiento del cursor de visualización mediante el

direccionamiento indirecto.

Page 274: Manual Tecnico de Programacion Plc PDF

DIRECCIONAMIENTO INDIRECTO DF-DI 2 99.01

" Introducción de datos numéricos enteros ó en coma flotantemediante el direccionamiento indirecto

! Modo de programación

La forma de utilizar este grupo de instrucciones ya ha sidodescrito con anterioridad su apartado correspondiente de este ManualTécnico.

Los elementos software que se utilizan son punteros y tablas deregistros y de mensajes.

! Manipulación de una tabla de relés (LDX, OUTX).

Las instrucciones LDX y OUTX cargan y descargan de la pilalógica estados de relés.

La dirección del relé que cargan ó descargan es la contenida enun registro de formato entero que hace las veces de puntero.Así para descargar el estado de la entrada 0 sobre la salida 101puede realizarse del siguiente modo:

SETRI puntero1 0 ;Almacena el dato 0 en el registro;entero "puntero1"

SETRI puntero2 101 ;Almacena el dato 101 en el registro;entero "puntero2"

LDX puntero1 ;Carga en la pila lógica el estado;del relé indicado en el registro;entero "puntero1", en este caso la;entrada digital 0.

OUTX puntero2 ;Descarga de la pila lógica el;estado de la entrada 0 sobre el relé;apuntado por el registro entero;"puntero2", en este caso la salida;digital 101.

Las dos primeras líneas de este programa sirven para que losregistros enteros tomen el valor de las direcciones de los relés a losque “apuntan”.

Page 275: Manual Tecnico de Programacion Plc PDF

DIRECCIONAMIENTO INDIRECTO DF-DI 3 99.01

! Manipulación de tablas de registros (MOVIX, STOIX, MOVFX,STOFX).

Las instrucciones que se citan cargan y descargan datosenteros ó en coma flotante de la pila aritmética.

La dirección del registro que cargan ó descargan es lacontenida en un registro de formato entero que hace las veces depuntero.Así para transferir datos de un registro a otro puede realizarse:

SETRI puntero1 500 ;Almacena el dato 500 en el registro;entero "puntero1"

SETRI puntero2 600 ;Almacena el dato 600 en el registro;entero "puntero2"

SETRI puntero3 0 ;Almacena el dato 0 en el registro;entero "puntero3"

SETRI puntero4 100 ;Almacena el dato 100 en el registro;entero "puntero4"

;Trasvase entre registros enteros

MOVIX puntero1 ;Carga en pila aritmética el contenido del;registro entero apuntado por el registro;"puntero1", es decir el contenido del;registro entero 500

STOIX puntero2 ;Almacena el contenido de la pila;aritmética en el registro entero apuntado;por el registro "puntero2", es decir en el;registro entero 600

;Trasvase entre registros en coma flotante

MOVFX puntero3 ;Carga en pila aritmética el contenido del;registro en coma flotante apuntado por el;registro entero "puntero3", es decir el;contenido del registro en coma flotante 0

STOFX puntero4 ;Almacena el contenido de la pila;aritmética en el registro en coma flotante;apuntado por el registro entero "puntero4",;es decir en el reg. en coma flotante 100

Page 276: Manual Tecnico de Programacion Plc PDF

DIRECCIONAMIENTO INDIRECTO DF-DI 4 99.01

Las cuatro primeras líneas de este programa sirven para que losregistros enteros tomen el valor de las direcciones de los registros alos que “apuntan”.

! Posicionamiento del cursor y visualización de registros ymensajes (LOCX, DISLX, DISIX, DISFX).

Todas las visualizaciones (y transmisiones) se pueden realizarutilizando el direccionamiento indirecto:

" El cursor de visualización puede situarse sobre una posición delbuffer intermedio indicada por el contenido de un registro.

" Pueden visualizarse contenidos de registros cuya dirección estécontenida en otro registro puntero.

" Pueden, también, visualizarse textos cuya dirección estécontenida en un registro.

A continuación describimos un código de programa con estas tresoperaciones:

;Inicialización de punteros

SETRI puntero1 10 ;Almacena el dato 10 en el registro;entero "puntero1"

SETRI puntero2 400 ;Almacena el dato 400 en el registro;entero "puntero2"

SETRI puntero3 20 ;Almacena el dato 20 en el registro;entero "puntero3"

;Visualización y transmisión por un puerto de comunicaciones.

CLEAR ;Borra el buffer intermedio y sitúa el;puntero en la primera posición

LOCX puntero1 ;Posiciona el puntero de;visualización en la posición 10,;puesto que es el contenido del;registro entero "puntero1".

Page 277: Manual Tecnico de Programacion Plc PDF

DIRECCIONAMIENTO INDIRECTO DF-DI 5 99.01

DISIX puntero2 form ;Copia en el buffer intermedio el;contenido del reg. entero apuntado;por el reg. entero "puntero2", con;un formato indicado por el;contenido del reg. entero "form".

DISLX puntero3 ;Copia en el buffer intermedio el;texto indicado por el contenido del;reg. entero "puntero3".

DISFX puntero2 form ;Copia en el buffer intermedio el;contenido del reg. en coma flotante;apuntado por el reg. entero;"puntero2", con un formato;indicado por el contenido del reg.;entero "form".

COM 0 ;Copia el contenido del buffer;intermedio al el display LCD

COM 1 ;Transmite el contenido del buffer;intermedio por el puerto COM1.

! Introducción de datos numéricos enteros ó en coma flotante(INPX, INPFX, INPCX).

La dirección del registro que se introduce el dato es la contenidaen un registro de formato entero que hace las veces de puntero.

Se puede utilizar el mismo registro puntero para lasinstrucciones descritas anteriormente.

El formato de introducción de datos contenido en un registroentero guarda la compatibilidad con el formato de las instruccionesDISIX y DISFX.

Page 278: Manual Tecnico de Programacion Plc PDF

DIRECCIONAMIENTO INDIRECTO DF-DI 6 99.01

EJEMPLOS:

Para efectuar estos ejemplos deberemos comprobar las instrucciones y el direccionamiento de losrelés/registros de la memoria, disponibles en el equipo MIDA que estamos programando.

A.- Cargar una tabla de registros en formato entero (desde el 400 al490) con el dato 3.

;Definición de textostext0 lite “EJEMPLO-A DF-DI”text1 lite “EJEMPLO RUN”

LD 340 ;Detecta si la tecla correspondiente esta;pulsada.

JZ fin ;De lo contrario salta a "fin"SETRI 300 490 ;Almacena el dato 490 en el reg.entero 300SETRI 301 400 ;Almacena el dato 400 en el reg.entero 301SETRI 302 3 ;Almacena el dato 3 en el registro entero 3

eti1 MOVRI 302 ;Carga en pila aritmética contenido del;registro entero 302

STOIX 301 ;Almacena el contenido de la pila;aritmética en el registro entero apuntado;por el registro entero 301, es decir en el;registro entero 400

INC 301 1 ;Incrementa contenido del reg. entero 301;en una unidad (incrementa el puntero en;la tabla de registros)

MOVRI 301 ;Carga en pila aritmética el contenido del;registro entero 301.

MOVRI 300 ;Carga en pila aritmética el contenido del;registro entero 300.

CPLEI eti1 ;Si el contenido del reg. entero 301 es;menor o igual al contenido del reg. entero;300, la ejecución del programa salta a;"eti1", de lo contrario continua (detecta el;fin de carga de la tabla)

CLEAR ;Borra el buffer intermedio y sitúa el;puntero en la primera posición.

DISL text1 ;Copia en el buffer intermedio el mensaje;de la tabla de textos "text1".

Page 279: Manual Tecnico de Programacion Plc PDF

DIRECCIONAMIENTO INDIRECTO DF-DI 7 99.01

COM 0 ;Copia el contenido del buffer intermedio;en el display LCD.

JMP fin1 ;Salto incondicional a "fin1"fin CLEAR ;Borra el buffer intermedio y sitúa el

;puntero en la primera posición.DISL text0 ;Copia en el buffer intermedio el mensaje

;de la tabla de textos "text0".COM 0 ;Copia el contenido del buffer intermedio

;el display LCD.fin1 END ;Fin de programa

B.- Visualizar en el display LCD del equipo el mes en curso.

;Definición de textostext0 lite “ ”text1 lite “ENERO”text2 lite “FEBRERO”text3 lite “MARZO”text4 lite “ABRIL”text5 lite “MAYO”text6 lite “JUNIO”text7 lite “JULIO”text8 lite “AGOSTO”text9 lite “SETIEMBRE”text10 lite “OCTUBRE”text11 lite “NOVIEMBRE”text12 lite “DICIEMBRE”;

CLEAR ;Borra el buffer intermedio y sitúa el puntero en la;primera posición.

DISLX 46 ;Copia en el buffer intermedio el texto cuyo;número de orden está contenido en el registro;entero 46 (dirección del registro. entero;correspondiente al "Mes del Año").

COM 0 ;Copia el contenido del buffer intermedio en;el display LCD.

END ;Fin de programa

Page 280: Manual Tecnico de Programacion Plc PDF

DIRECCIONAMIENTO INDIRECTO DF-DI 8 99.01

Los mensajes tienen asociada una dirección que coincide con el ordenen que se han declarado. En el ejemplo se ha nombrado a cada textocon una etiqueta que indica el número de orden de cada texto. Sinembargo un texto puede ser nombrado con cualquier etiqueta válida.

C.- Detectar cuál de entre los relés del 400 al 500 está activado (sesupone que hay uno sólo). Visualizar la dirección del relé detectado. Sino se detecta ninguno, indicarlo por el display

;Declaración de etiquetaspunt1 equ 600 ;Registro entero para el puntero 1

;Declaración de textosdetect lite “RELE ACTIVADO”nodet1 lite “RELE”nodet2 lite “NO ENCONTRADO”

MOVCI 400 ;Carga en pila aritmética la constante 400.STOI punt1 ;Almacena el contenido de la pila

;aritmética en el registro entero "punt1";(con la dirección del primer relé interno de;la tabla de relés).

SET 600 ;Activa el relé interno 600 (indica que se ha;encontrado un relé activado).

eti1 LDX punt1 ;Carga el estado del relé indicado en el;reg. entero "punt1" en la pila lógica

JNZ eti2 ;Detecta si el relé apuntado por "punt1";esta activado.

INC punt1 1 ;Incrementa el contenido del reg. entero;"punt1" en una unidad (incrementa el;puntero de la tabla de relés)

MOVRI punt1 ;Carga en pila aritmética el contenido del;registro entero "punt1".

MOVCI 500 ;Carga en pila aritmética la constante 500.CPLEI eti1 ;Detecta si ya ha terminado la transferencia

;de datos, compara si la constante 500 es;menor o igual que el registro entero "punt1";si es así salta a "eti1".

Page 281: Manual Tecnico de Programacion Plc PDF

DIRECCIONAMIENTO INDIRECTO DF-DI 9 99.01

RESET 600 ;Desactiva el relé 600 si no se ha detectado;ningún relé activado en la tabla.

;Visualización del resultado de la exploración de la tabla de relés.

eti2 CLEAR ;Borra buffer intermedio y sitúa el;puntero en la primera posición.

LD 600 ;Carga el estado del relé 600 en pila lógicaJZ eti3 ;Detecta si se ha encontrado algún relé

;activado. De lo contrario salta a "eti3"

;Visualización de relé encontrado con su dirección.

CLEAR ;Borra el buffer intermedio y sitúa el;puntero en la primera posición.

DISL detect ;Copia en el buffer intermedio el mensaje;de la tabla de textos "detect".

LOC 21 ;Sitúa el puntero en la posición indicadaDISRI punt1 3 ;Copia en el buffer intermedio el contenido

;del registro entero "punt1" con el formato;indicado por el segundo operando

JMP eti4 ;Salto incondicional a "et4"

;Visualización del relé no encontrado

eti3 LOC 5 ;Sitúa el puntero en la posición indicadaDISL nodet1 ;Copia en el buffer intermedio el mensaje

;de la tabla de textos "nodet1".LOC 17 ;Sitúa el puntero en la posición indicadaDISL nodet2 ;Copia en el buffer intermedio el mensaje

;de la tabla de textos "nodet2".eti4 COM 0 ;Copia el contenido del buffer intermedio

;en el display LCD.END ;Fin de programa

Page 282: Manual Tecnico de Programacion Plc PDF

DIRECCIONAMIENTO INDIRECTO DF-DI 10 99.01

D.- Realizar una transferencia de datos entre dos tablas de registrosen formato entero.La tabla A es del registro 400 al 450 y la tabla B del registro 500 al550.

;Definición de etiquetaspunt1 equ 600 ;Registro entero para el puntero 1punt2 equ 602 ;Registro entero para el puntero 2

;Definición de textostext0 lite “EJEMPLO-D DF-DI”text1 lite “EJEMPLO RUN”

LD 340 ;Detecta si la tecla correspondiente esta;pulsada.

JZ fin ;De lo contrario salta a "fin"MOVCI 400 ;Carga en pila aritmética la constante 400.STOI punt1 ;Almacena el contenido de la pila

;aritmética en el registro entero "punt1";(dirección del primer registro de la tabla A)

MOVCI 500 ;Carga en pila aritmética la constante 500.STOI punt2 ;Almacena el contenido de la pila

;aritmética en el registro entero "punt2";(dirección del primer registro de la tabla B)

eti1 MOVIX punt1 ;Carga en la pila aritmética el contenido del;registro entero apuntado por el reg. entero;"punt1".

STOIX punt2 ; ;Almacena el contenido de la pila;aritmética en el registro entero apuntado;por el registro "punt2".

INC punt1 1 ;Incrementa el contenido del reg. entero;"punt1" en una unidad (incrementa el;puntero de la tabla A).

INC punt2 1 ;Incrementa el contenido del reg. entero;"punt2" en una unidad (incrementa el;puntero de la tabla B).

MOVRI punt1 ;Carga en pila aritmética el contenido del;registro entero "punt1".

MOVCI 450 ;Carga en pila aritmética la constante 450.

Page 283: Manual Tecnico de Programacion Plc PDF

DIRECCIONAMIENTO INDIRECTO DF-DI 11 99.01

CPLEI eti1 ;Detecta si ya ha terminado la transferencia;de datos, compara si la constante 450 es;menor o igual que el registro entero "punt1";si es así salta a "eti1".

CLEAR ;Borra el buffer intermedio y sitúa el;puntero en la primera posición.

DISL text1 ;Copia en el buffer intermedio el mensaje;de la tabla de textos "text1".

COM 0 ;Copia el contenido del buffer intermedio;en el display LCD.

JMP fin1 ;Salto incondicional a "fin1"fin CLEAR ;Borra el buffer intermedio y sitúa el

;puntero en la primera posición.DISL text0 ;Copia en el buffer intermedio el mensaje

;de la tabla de textos "text0".COM 0 ;Copia el contenido del buffer intermedio

;el display LCD.fin1 END ;Fin de programa

Page 284: Manual Tecnico de Programacion Plc PDF

DIRECCIONAMIENTO INDIRECTO DF-DI 12 99.01

E.- Realizar una transferencia de datos desde una tabla de registrosen formato en coma flotante hasta otra de formato entero.La tabla A (en coma flotante) es del registro 100 al 110 y la tabla B (enformato entero) de los registros 400 al 410.La transferencia se debe realizar registro a registro mediantepulsación de una tecla visualizando los contenidos de registros origeny final.

;Definición de etiquetaspunt1 equ 600 ;Registro entero para puntero 1punt2 equ 602 ;Registro entero para puntero 2inter equ 603 ;Registro entero para datos intermediosform equ 605 ;Registro entero para el formato

;Inicialización de los registros puntero

SETRI form 51 ;Almacena el dato 51 en el reg. entero "form"MOVCI 100 ;Carga en pila aritmética la constante 100.STOI punt1 ;Almacena el contenido de la pila

;aritmética en el registro entero "punt1";(dirección del primer registro de la tabla A)

MOVCI 400 ;Carga en pila aritmética la constante 400.STOI punt2 ;Almacena el contenido de la pila

;aritmética en el registro entero "punt2";(dirección del primer registro de la tabla B)

;Bucle de transferencia de datos

eti1 INK 340 ;Detección de una teclaJZ eti1 ;Espera la pulsación de la tecla para

;realizar la transferencia de cada dato. De;lo contrario salta a "eti1"

MOVFX punt1 ;Carga en la pila aritmética el contenido del;reg. en coma flotante apuntado por el reg.;entero "punt1".

STOFI inter ;Almacena el contenido de la pila;aritmética en el registro entero "inter",;redondeándolo en formato entero.;convertido en entero.

Page 285: Manual Tecnico de Programacion Plc PDF

DIRECCIONAMIENTO INDIRECTO DF-DI 13 99.01

MOVRI inter ;Carga en pila aritmética el contenido;del registro entero "inter".

STOIX punt2 ;Almacena el contenido de la pila;aritmética en el registro entero apuntado;por el registro "punt2".

;Visualización del programa

CLEAR ;Borra el buffer intermedio y sitúa el;puntero en la primera posición.

DISFX punt1 form ;Copia en el buffer intermedio el contenido;del reg. en coma flotante apuntado por el;registro entero "punt1", con un formato;indicado por el contenido del reg. entero;"form".

LOC 16 ;Sitúa el puntero en la posición indicadaDISIX punt2 form ;Copia en el buffer intermedio el contenido

;del reg. entero apuntado por el reg. entero;"punt2", con un formato indicado por el;contenido del reg. entero "form".

COM 0 ;Copia el contenido del buffer intermedio;en el display LCD.

;Control de los punteros a las dos tablas

INC punt1 1 ;Incrementa el contenido del reg. entero;"punt1" en una unidad (incrementa el;puntero de la tabla A).

INC punt2 1 ;Incrementa el contenido del reg. entero;"punt2" en una unidad (incrementa el;puntero de la tabla B).

MOVRI punt1 ;Carga en pila aritmética el contenido del;registro entero "punt1".

MOVCI 110 ;Carga en pila aritmética la constante 110.CPLEI eti1 ;Detecta si ya ha terminado la transferencia

;de datos, compara si la constante 110 es;menor o igual que el registro entero "punt1";si es así salta a "eti1".

Page 286: Manual Tecnico de Programacion Plc PDF

DIRECCIONAMIENTO INDIRECTO DF-DI 14 99.01

F.- Introducción de cinco datos enteros, en los registros enteros 400 al404 diferentes, sin para la ejecución del programa con su texto paracada uno.

;Definición de etiquetasscan equ 399 ;Relé interno "Relé de 1º scan"r_in equ 391 ;Relé interno "Relé Input"punt1 equ 600 ;Registro entero para puntero 1punt2 equ 602 ;Registro entero para puntero 2form equ 605 ;Registro entero para el formato;Definición de textostext0 lite "Consigna 1"text1 lite "Consigna 2"text2 lite "Consigna 3"text3 lite "Consigna 4"text4 lite "Consigna 5"text5 lite "Trabajando"

LD scan ;Carga el estado del relé "scan " en la pila;lógica

JNZ ini ;En el primer scan de programa inicializa;los punteros. Al siguiente scan salta a"ini"

SETRI punt1 400 ;Almacena el dato 400 en el reg entero;"punt1"

SETRI punt2 0 ;Almacena el dato 0 en el reg. entero;"punt2"

SETRI form 4 ;Almacena el dato 4 en el reg. entero;"form"

ini INK 356 ;Detección de una teclaJZ fin ;Espera la pulsación de la tecla para

;realizar la introducción de cada dato. De;lo contrario salta a "fin"

LD r_in ;Carga el estado del relé "r_in" en la pila;lógica.

JNZ fin ;Si el relé "r_in" esta activado (relé input);salta a "fin". De lo contrario continua con;la siguiente introducción de datos.

CLEAR ;Borra el buffer intermedio y sitúa el;puntero en la primera posición.

Page 287: Manual Tecnico de Programacion Plc PDF

DIRECCIONAMIENTO INDIRECTO DF-DI 15 99.01

DISLX punt2 ;Copia en el buffer intermedio el texto cuyo;número de orden está contenido en el;registro entero "punt2" entero 46 (puntero;(tabla de textos).

COM 0 ;Copia el contenido del buffer intermedio;en el display LCD.

INPIX punt1 form ;Introducción de un dato en el reg. entero;apuntado por el reg "punt1" (puntero de;registros), con un formato indicado en el;registro entero "form"

INC punt1 1 ;Incrementa el contenido del reg. entero;"punt1" en una unidad (incrementa el;puntero de la tabla de registros).

INC punt2 1 ;Incrementa el contenido del reg. entero;"punt2" en una unidad (incrementa el;puntero de la tabla de textos).

MOVRI punt2 ;Carga en pila aritmética el contenido del;registro entero "punt2".

MOVCI 4 ;Carga en pila aritmética la constante 4.CPLEI fin ;Detecta si ya ha terminado la introducción

;de datos, compara si la constante 4 es;menor o igual que el registro entero "punt2";si es así salta a "fin".

SETRI punt1 400 ;Almacena el dato 400 en el reg entero;"punt1"

SETRI punt2 0 ;Almacena el dato 0 en el reg entero;"punt2"

JMP fin ;Salto incondicional a "fin"fin LD r_in ;Carga el estado del relé "r_in" en la pila

;lógica.JNZ fin1 ;Si el relé "r_in" esta activado (relé input)

;salta a "fin1". De lo contrario nos continua;el programa.

CLEAR ;Borra el buffer intermedio y sitúa el;puntero en la primera posición.

DISL text5 ;Copia en el buffer intermedio el mensaje;de la tabla de textos "text5".

COM 0 ;Copia el contenido del buffer intermedio;en el display LCD.

fin1 END ;Fin de programa

Page 288: Manual Tecnico de Programacion Plc PDF

DIRECCIONAMIENTO INDIRECTO DF-DI 16 99.01

.

Page 289: Manual Tecnico de Programacion Plc PDF

BASE DE DATOS DF-BD 1 99.01

Dentro de la familia MIDA, existe equipos que disponen de unamemoria para base de datos de 64K, en la cual se puede almacenarhasta 10 bases de datos diferentes.

Cada una de ellas (que llamaremos fichero) está numerado del0 al 9 y cualquier acción referida a un fichero llevara el número delmismo.

Los ficheros disponen de registros (fichas) en número limitadoúnicamente por la memoria disponible. Cada registro (ficha) secompone de campos con un número máximo total de 200, de estaforma si utilizamos los 10 ficheros podremos tener 20 campos porfichero o si utilizamos solo 1 fichero podrá llegar a tener 200 campos.

Se describe a continuación una posible organización de la basede datos del equipo.

En ella se puede ver dos ficheros (1 y 2) con 10 y 6 camposrespectivamente y n registros:

BASE DE DATOS(máximo 10 ficheros, 200 campos en total entre todos los ficheros y

64K de memoria total utilizable)

Registro(ficha)

Fichero 1(10 campos)

Fichero 2(6 campos) (10 ficheros máximo)

1 (200 campos máximoen total)

2

3

N

64Kb máximo

Page 290: Manual Tecnico de Programacion Plc PDF

BASE DE DATOS DF-BD 2 99.01

Cada campo puede ser de uno de los siguientes tipos:

TIPOS DE CAMPOS

LETRA NOMBRE TIPO TAMAÑO

R RELÉ Relé 1 byte

I INT Entero 2 bytes

F FLOAT Coma flotante 4 bytes

S STRING Cadena de caracteres Variable

D DATE Fecha 3 bytes

T TIME Hora 3 bytes

Para un campo tipo ‘STRING’ el tamaño es el número decaracteres que se indican en la definición del fichero.

El tamaño de un registro (ficha) se calcula sumando lostamaños de cada uno de sus campos el cual está indicado en la tablaanterior.

El tamaño que ocupa un fichero es el tamaño de un registromultiplicado por el número de registros (fichas) que se han definidomediante la Directiva de Compilación FILE.

La lectura y escritura de los ficheros se hace por registroscompletos mediante las instrucciones READ y WRITE.

El número de registro (ficha) sobre el que se va a leer ó escribiren cada momento (puntero) está almacenado en registros enteros (verDireccionamiento de la Memoria del Manual de Usuario del equipocorrespondiente). El valor del puntero se puede modificar a voluntadpermitiendo la lectura y escritura de cualquier registro del fichero de labase de datos.

En caso de se pida una operación con un fichero no definido o aun número de registro inexistente, estos comandos no harán nada eindicaran error.

Page 291: Manual Tecnico de Programacion Plc PDF

BASE DE DATOS DF-BD 3 99.01

! DEFINICION DE LA ESTRUCTURA DE LOS FICHEROS.DIRECTIVA FILE

Con la Directiva de Compilación FILE, se define la estructura deun fichero determinado. Para utilizar esta Directiva se debe tenerpresente de dejar un espacio entre el margen izquierdo y el primercarácter de la directiva en la edición del programa:

FILE N,C1,..,Cn,len=XXX,type=?donde:

N Número del fichero (0 - 9)C1,...Cn Definición de los camposLen = XXX Longitud (XXX = número de registros)Type Tipo de fichero C/L (C = cíclico, L = lineal).

N es el número de fichero que va del 0 al 9 e indica el fichero delos diez disponibles que queremos utilizar. Cualquier operación coneste fichero llevara dicho número para referenciarlo.

Cn es la definición de los campos del fichero. Se compone deun número y una letra, y en un mismo fichero se pueden definir tantoscampos como se deseen (máx 200). La letra define el tipo de campo(ver tabla anterior) y el número el lugar de destino (numero de relé oregistro). Los tipos de campos se describen en la siguiente pagina.

Len = XXX es la longitud del fichero. Indica el número deregistros de que se compone el fichero. El número puede ir de 1 hasta65535, aunque este último depende de la memoria libre dejada porotros ficheros y del tamaño de un registro. Por ejemplo ‘len=1000'definirá un fichero con 1000 registros (fichas).

Type es el tipo de fichero determinado como lineal o cíclico. Sise indica cíclico ‘type=c’, el fichero tras llenar el ultimo registro (ficha)retornara directamente al primero. Si se indica lineal ‘type=l’, el ficherotras llenar el ultimo registro (ficha) no permite llenar mas registros(fichas) indicando error, evitando así una posible sobre escritura. Si seomite este termino se tomara por defecto un fichero de tipo lineal(type=l).

Page 292: Manual Tecnico de Programacion Plc PDF

BASE DE DATOS DF-BD 4 99.01

! TIPOS DE CAMPOS DE LOS REGISTROS

• RELÉS (1 bit)Se definen con xxxR donde xxx es el número del relé sobre el

cual se escribirá ó leerá el valor del campo RELE almacenado. Elnúmero de relé es la dirección de cualquier relé que se encuentre enRAM y RAM batería.

• INT (16 bits)Se definen con xxxI donde xxx es la dirección del registro entero

sobre el cual se escribirá ó leerá el valor del campo INT almacenado.El número del entero es la dirección de cualquier registro entero quese encuentre en RAM batería.

• FLOAT (32 bits)Se definen con xxxF donde xxx es el número del número en

coma flotante sobre el cual se escribirá ó leerá el valor del campoFLOAT almacenado. El número del float es la dirección de cualquierregistro en coma flotante que se encuentre en RAM batería.

• STRING (variable)Se define con xxxS donde xxx es el número de caracteres que

componen el texto.Dicho texto se escribirá ó leerá sobre el buffer intermedio del

equipo MIDA.

• DATE (3 bytes)Se define con xxxD donde xxx es la dirección de cualquier

registro entero que se encuentre en RAM batería.Para leer la fecha del reloj interno se utilizan los registros

enteros correspondientes, indicados en el Direccionamiento de laMemoria (ver Manual Usuario del equipo).

Para escribir la fecha del reloj interno sobre el fichero pertinentese considera los datos almacenados en el orden que se indica acontinuación:XXX (día), XXX+1 (día de la semana), XXX+2 (mes), XXX+3 (año).

Page 293: Manual Tecnico de Programacion Plc PDF

BASE DE DATOS DF-BD 5 99.01

Así, por ejemplo, si en la definición del fichero se elige comoXXXD la dirección del registro entero 500, se tendrán los datosorganizados de la siguiente manera:

REGISTRO RAM DATO500 Día501 Día de la semana502 Mes503 Año

• TIME (3 bytes)Se define con xxxT donde xxx es la dirección de cualquier

registro entero que se encuentre en RAM batería.Para leer la hora del reloj interno se utilizan los registros enteros

correspondientes, indicados en el Direccionamiento de la Memoria(ver Manual Usuario del equipo).

Para escribir la hora del reloj interno sobre el fichero pertinentese considera los datos almacenados en el orden que se indica acontinuación:XXX (segundos), XXX+1 (minutos) y XXX+2 (horas).

Así, por ejemplo, si en la definición del fichero se elige comoXXXT la dirección del registro entero 600, se tendrán los datosorganizados de la siguiente manera:

REGISTRO RAM DATO600 Segundos601 Minutos602 Horas

Page 294: Manual Tecnico de Programacion Plc PDF

BASE DE DATOS DF-BD 6 99.01

! TAMAÑO DE LOS FICHEROS

La capacidad máxima total que se puede almacenar en el/losficheros es de 64Kb, es decir, 65536 bytes. El tamaño de un fichero esel producto del tamaño de un registro por el número de registros(fichas).

El tamaño de un registro (ficha) se calcula sumando lostamaños de cada uno de sus campos (dicho tamaño esta indicado enla tabla Tipos de Campos, vista anteriormente). Para un registro tipo‘STRING’ el tamaño es el número de caracteres que se indican en ladefinición del fichero. Ejemplo, supongamos un fichero con cuatrocampos, un relé, un entero, un string de 10 caracteres y un time, conla siguiente definición:

FILE 1,400R,300I,10S,310T,len=1000,type=C

Tipo de Campo Tamaño

RELÉ 1

INT 2

STRING de 10 10

TIME 3

Total 16

Por lo tanto como el fichero tiene 1000 registros (fichas).Tendremos un tamaño total para el fichero de 16000 bytes,quedándonos hasta 65536 (64Kb) un total de 49536 bytes libres paraotros ficheros.

Page 295: Manual Tecnico de Programacion Plc PDF

BASE DE DATOS DF-BD 7 99.01

# Ejemplos de definición de ficheros:

A.- Para definir el fichero 7 con los 4 campos siguientes:

- 2 Relés (relés 600 y 601)- 1 Registro Entero (registro entero 400)- 1 String (texto de 9 caracteres)- La hora (en el registro entero 700)

y con un total de 500 registros y de tipo cíclico, la definición será:

FILE 7,600R,601R,400I,9S,700T,len=500,type=C

B.- Para definir el fichero 3 con los 4 campos siguientes:

- 2 Registros en coma flotante (registros en coma flotante 20 y 55)- La fecha (en el registro entero 400)- La hora (en el registro entero 410)

y con un total de 1000 registros y de tipo lineal, la definición será:

FILE 3,20F,55F,400D,410T,len=1000,type=L

Page 296: Manual Tecnico de Programacion Plc PDF

BASE DE DATOS DF-BD 8 99.01

READ XXXX YYYY

NEMÓNICO: READOPERANDO XXXX: Número del fichero de la base de datos.OPERANDO YYYY: Constante para el puntero.CÓDIGO INSTRUCCIÓN: 38

DESCRIPCIÓN:

LEE los datos de un fichero de la base de datos y los graba en losregistros (relés, registros enteros, registros en coma flotante)especificados en la definición (FILE) del fichero del indicado en eloperando XXXX.El operando XXXX es el número del fichero de la base de datos aleer. El valor permitido es de 0 a 9.El operando YYYY es la constante que indica donde colocar elpuntero de lectura. El valor de la constante debe ser +1, 0 o -1:

+1 El puntero al registro (ficha) debe incrementarse tras el acceso para pasar a la ficha siguiente.

0 El puntero al registro (ficha) debe dejarse inalterado tras el acceso.

-1 El puntero al registro (ficha) debe decrementarse tras elacceso, para pasar a la ficha anterior.

No opera con las pilas (0).

# Ejemplo:

ETI1 INK 340 ;Detecta la tecla.JZ ETI1 ;Espera se pulse la tecla. Si no se ha

;pulsado, el programa regresa a ETI1.READ 0 1 ;Cada vez que se pulsa la tecla lee del

;fichero 0 de la base de datos la ficha;en donde esta señalando el puntero del;fichero y se incrementa una unidad;para la próxima lectura.

END

READ

Page 297: Manual Tecnico de Programacion Plc PDF

BASE DE DATOS DF-BD 9 99.01

WRITE XXXX YYYY

NEMÓNICO: WRITEOPERANDO XXXX: Número del fichero de la base de datos.OPERANDO YYYY: Constante para el puntero.CÓDIGO INSTRUCCIÓN: 37

DESCRIPCIÓN:

ESCRIBE sobre el fichero de la base de datos el contenido de losregistros (relés, registros enteros, registros en coma flotante)especificados en la definición (FILE) del fichero del indicado en eloperando XXXX.El operando XXXX es el número del fichero de la base de datos aescribir. El valor permitido es de 0 a 9.El operando YYYY es la constante que indica donde colocar elpuntero de escritura. El valor de la constante debe ser +1, 0 o -1:

+1 El puntero al registro (ficha) debe incrementarse tras el acceso para pasar a la ficha siguiente.

0 El puntero al registro (ficha) debe dejarse inalterado tras el acceso.

-1 El puntero al registro (ficha) debe decrementarse tras elacceso, para pasar a la ficha anterior.

No opera con las pilas (0).

# Ejemplo:

ETI1 INK 60 ;Detecta la tecla.JZ ETI1 ;Espera se pulse la tecla. Si no se ha

;pulsado, el programa regresa a ETI1.WRITE 2 0 ;Cada vez que se pulsa la tecla, escribe

;en el fichero 2 de la base de datos la ficha;en donde esta señalando el puntero del;fichero y no se altera el puntero, para la;próxima escritura.

END

WRITE

Page 298: Manual Tecnico de Programacion Plc PDF

BASE DE DATOS DF-BD 10 99.01

# EJEMPLOS:

Para efectuar estos ejemplos deberemos comprobar las instrucciones y el direccionamiento de losrelés/registros de la memoria, disponibles en el equipo MIDA que estamos programando.

A.- Se trata de imprimir los datos de un fichero en un MIDA64:

" Fichero nº0 de Tipo lineal." 1000 registros (fichas) de capacidad." Cinco campos: Fecha, hora, Código de alarma (entero),

Temperatura (coma flotante) y Presión (coma flotante)." Los datos deben estar impresos de más a menos reciente." Los datos deben estar identificados mediante textos al respecto

Definición del fichero:

File 0, 400D, 450T, 500I, 600F, 601F, Len=1000, Type=L

El tamaño del fichero así definido resulta ser de:(3 + 3 + 2 + 4 + 4)bytes * 1000 registros = 16000bytes

El código de programa es el que sigue:;

File 0,400D,450T,500I,600F,601F,Len=1000,Type=L;;Definición de etiquetasscan equ 399 ;relé de 1º scanrelcon equ 500 ;relé de control de escriturat_f1 equ 356 ;tecla <F1>t_f4 equ 359 ;tecla <F4>ancho equ 20 ;registro entero de ancho de paginapunt_0 equ 50 ;puntero entero del fichero 0

;Definición de literalescodal lite "CODIGO DE ALARMA"tempe lite "TEMPERATURA = "pres lite "PRESION ="si lite "Hay avisos"no lite "No hay avisos"

Page 299: Manual Tecnico de Programacion Plc PDF

BASE DE DATOS DF-BD 11 99.01

LD scan ;Carga en pila lógica el estado del relé de;"scan" (solo estará a 0 en el primer scan;de programa).

JNZ inic ;Si el estado de la relé "scan" es ‘1', la;ejecución del programa salta a la línea;"inic", si es 0 pasa a la siguiente línea.

MOVCI 80 ;Carga en pila aritmética la constante 80STOI ancho ;Almacena el contenido de la pila

;aritmética en el registro "ancho." Para;asignar un ancho de línea de 80;caracteres en el COM1.

inic MOVRI punt_0 ;Carga en pila aritmética el contenido del;registro "punt_0".

MOVCI -1 ;Carga en pila aritmética la constante -1CPEI no_dt ;Si el contenido del registro "punt_0" es

;igual a -1 (indica que no existe ningún;registro en la base de datos), el programa;salta a la línea "no_dt", de lo contrario;continua en la siguiente línea

CLEAR ;Borra el buffer intermedio.DISL si ;Copia en el buffer intermedio el texto

;"si" de la tabla de literales.COM 0 ;Copia el contenido del buffer intermedio

;al display LCD.JMP writs ;Salta a la línea "writs"

no_dt CLEAR ;Borra el buffer intermedio.DISL no ;Copia en el buffer intermedio el texto

;"no" de la tabla de literales,COM 0 ;Copia el contenido del buffer intermedio

;al display LCD.writs INK t_f4 ;Detección de la tecla <F4>.

JZ reads ;Si la tecla <F4> no es pulsada salta a la;línea "reads", de lo contrario continua en;la siguiente linea.

MOVRI punt_0 ;Carga en pila aritmética el contenido del;registro "punt_0".

MOVCI -1 ;Carga en pila aritmética la constante -1CPGI writ1 ;Si el contenido del registro "punt_0" es

;mayor que -1, la ejecución del programa;salta a la línea "writ1", de lo contrario

Page 300: Manual Tecnico de Programacion Plc PDF

BASE DE DATOS DF-BD 12 99.01

;continua en la siguiente línea.INC punt_0 1 ;Incrementa el contenido del registro

;"punt_0" en uno (coloca en el puntero en;el primer registro).

writ1 WRITE 0 1 ;Cada vez que se pulsa la tecla <F4>,;escribe en el fichero 0 de la base de datos;e incrementa en uno el puntero (registro;"punt_0")

SET relcon ;Activa el relé "relcon" (indicando que ha;habido escritura).

reads INK t_f1 ;Detección de la tecla <F1>.JZ fin ;Si la tecla <F1> no es pulsada salta a la

;línea "fin", de lo contrario continua en;la siguiente linea.

MOVRI punt_0 ;Carga en pila aritmética el contenido del;registro "punt_0".

MOVCI -1 ;Carga en pila aritmética la constante -1CPLEI fin ;Si el contenido del registro "punt_0" es

;menor ó igual que -1, la ejecución del;programa salta a la línea "fin" (no hay;registros en la base de datos), de lo;contrario continua en la siguiente.

LD relcon ;Carga el estado del relé "relcon".JZ read1 ;Si el relé "relcon" es 0 la ejecución pasa a

;la línea "read1".INC punt_0 -1 ;Decrementa el contenido del registro

;"punt_0" en uno (coloca el puntero en el;último registro escrito en la base de datos)

read1 MOVRI punt_0 ;Carga en pila aritmética el contenido del;registro "punt_0".

MOVCI -1 ;Carga en pila aritmética la constante -1CPGI read2 ;Si el contenido del registro "punt_0" es

;mayor que -1, la ejecución del programa;salta a la línea "read2" (hay registros en;la base de datos), de lo contrario continua;en la siguiente línea.

JMP fin ;Salta a la línea "fin".read2 READ 0 -1 ;Escribe en el fichero 0 de la base de datos

;y decrementa en uno el puntero (registro;"punt_0").

Page 301: Manual Tecnico de Programacion Plc PDF

BASE DE DATOS DF-BD 13 99.01

CLEAR ;Borra el buffer intermedio.DISRI 400 2 ;Copia al buffer el contenido del reg. 400

;(día)DISCH 47 ;Copia al buffer el carácter ASCII 47 (/).DISRI 402 2 ;Copia al buffer el contenido del reg. 402

;(mes)DISCH 47 ;Copia al buffer el carácter ASCII 47 (/).DISRI 403 2 ;Copia al buffer el contenido del reg. 403

;(año).DISCH 32 ;Copia al buffer el carácter ASCII 32

;(espacio en blanco).DISRI 452 2 ;Copia al buffer el contenido del reg. 452

;(hora).DISCH 58 ;Copia al buffer el carácter ASCII 58 (:)DISRI 451 2 ;Copia al buffer el contenido del reg. 451

;(minutos)DISCH 32 ;Copia al buffer el carácter ASCII 32

;(espacio en blanco).DISL codal ;Copia en el buffer intermedio el texto

;"codal" de la tabla de literales.DISRI 500 3 ;Copia al buffer el contenido del reg. entero

;500DISCH 13 ;Copia al buffer el carácter ASCII 13

;(salto de línea).DISL tempe ;Copia en el buffer intermedio el texto

;"tempe" de la tabla de literales.DISRF 600 51 ;Copia al buffer el contenido del reg. en

;coma flotante 600DISCH 32 ;Copia al buffer el carácter ASCII 32

;(espacio en blanco).DISL pres ;Copia en el buffer intermedio el texto

;"pres" de la tabla de literales.DISRF 601 40 ;Copia al buffer el contenido del reg. en

;coma flotante 601COM 1 ;Transmite por COM1 (RS232) el

;contenido del buffer intermedio, que;resulta ser una línea de detección de;alarma con las lecturas de temperatura y;presión de un sistema.

RESET relcon ;Desactiva el relé "relcon".

Page 302: Manual Tecnico de Programacion Plc PDF

BASE DE DATOS DF-BD 14 99.01

fin END ;Fin de programa.

El resultado de la impresión del anterior ejemplo es el que sigue:

DD/MM/AA HH:MM CODIGO DE ALARMA XXXTEMPERATURA = XXX.X PRESION = XXXX

donde las posiciones con X son datos extraídos del fichero de la basede datos.

Page 303: Manual Tecnico de Programacion Plc PDF

FM

Page 304: Manual Tecnico de Programacion Plc PDF
Page 305: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO MÓDEM FM-TM 1 04.01

INTRODUCCIÓN

En las ultimas versiones de firmware de los equipos MIDA, sehan implementado nuevos parámetros en el setup, nuevosrelés/registros y una nueva instrucción para el tratamiento de módemfijo (RTB) y módem GSM. Además de la posibilidad de utilizar elservicio de mensajería corta (SMS) en el caso de utilizar un módemGSM.

Un módem es un periférico que nos permite conectar ycomunicar con otros equipos a través de las redes telefónicasestándares. Por lo tanto combina la potencia de un equipo y laapertura al exterior mediante la red telefónica. Para mas informacióndel funcionamiento de un módem, existe en el mercado libros einformación mas especifica, aquí solo vamos a explicar la integraciónde estos periféricos a nuestra gama de equipos MIDA.

Funcionamiento básico

Tanto un módem fijo (RTB) como un módem GSM, dispone dedos modos de funcionamiento:

- Modo comandos: Interpreta y responde a los comandos de tipoAT y a los registros S.

- Modo transparente: Tras establecer una conexión, el módempasa a ser transparente (conexión “directa”entre equipos).

Al arrancar el módem siempre se encuentra en modocomandos. Esto permite configurarlo y enviarle ordenes mediante loscomandos AT (ej. establecer una conexión telefónica).

Los comandos que se envían al módem empiezan por AT yacaban con el carácter <CR> (carácter ASCII 13).

Las respuestas pueden tener más de una línea y cada una deellas, según el módem puede empezar con <CR><LF>, pero siempreacabará con <CR><LF> (carácter ASCII 13 seguido del carácter 10).

Page 306: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO MÓDEM FM-TM 2 04.01

Conexión Remota: Si un módem remoto intenta conectarse aotro, a cada llamada enviara un código de resultado “RING” (si dichaopción esta activada en el módem) al equipo, a lo que se puede enviarun comando para responder la llamada o si se ha configurado, permitirque el módem conteste automáticamente.

Conexión Local: Se puede hacer que el módem se conectecon otro módem enviando el comando para que el módem marque unnúmero telefónico y establezca la conexión.

Ya sea remota o local, al establecer la conexión el módemenvía un código de resultado “CONNECT...” al equipo, tras lo cual elmódem pasará a modo transparente. A partir de este momento, losequipos conectados en los respectivos módems podrán recibir ytransmitir datos, como si estuviera conectados por un cable directo.

Desconexión Remota: Si el módem remoto cuelga la línea o siesta se corta, el módem local empezará a recibir ruido (por ello esimportante que los mensajes entre módem tengan algún tipo deverificación). Al cabo de un rato el módem enviará un código deresultado “NO CARRIER” (señal portadora perdida o no detectada) alequipo, colgará y pasará a modo comandos. En líneas telefónicas conmucho ruido la sentencia “NO CARRIER” puede demorarse mucho oincluso no llegar nunca.

Desconexión Local: Para salir del modo transparente se debeenviar la cadena “+++” (tras haber estado 1 segundo sin enviar ningúncarácter antes y después de la cadena). Tras esto el módemresponderá “OK” y pasará a modo comandos, lo que permite enviar elcomando para colgar la línea.

NOTA: El módem y el MIDA al arrancar siempre se encuentran enmodo comandos (ver apartado Inicio Arranque MIDA y Módem). Alrecibir la cadena “CONNECT” pasará a modo transparente y al colgarla línea volverá a modo comandos.

Page 307: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO MÓDEM FM-TM 3 04.01

Configuración Módem

Para que el módem (RTB ó GSM) pueda ser controlado por elequipo MIDA, debemos de tener una configuración predeterminada enalgunos de sus comandos AT y registros-S:

• Ajustar a la velocidad (baudios, paridad, longitud, bit stop) delpuerto serie con la que se utilizara en el equipo MIDA.En algunos módems, la velocidad del puerto serie esautodetectable.En el caso de ajustar la velocidad, se recomienda utilizar lalongitud de byte a 8, ya que ha 7 suele dar problemas en algunosmódems.

• Activar códigos de resultado.• Formato de códigos de resultado como palabras.• El módem debe de ignorar la señal de DTR.• Activar control de flujo de hardware CTS/RTS.• Sin eco en la entrada de caracteres en modo comandos.• El registro-S de establecer el número de llamadas (RINGS) hasta

que el módem contesta, debe de estar al menos a uno sideseamos que el módem descuelgue automáticamente.Si el valor de este registro lo dejamos a 0, desactiva la respuestaautomática, y será el programa usuario del MIDA que decida quehacer con dicha llamada entrante, mediante la función de lainstrucción AT correspondiente.

• El registro-S de establecer el código ASCII para el carácter deescape, debe ser 43 (+).

Además de los puntos anteriores, en el caso de utilizar lamensajería SMS en un módem GSM, se debe de activar el acceso alCentro de Mensajes (número facilitado por el proveedor de telefoniamóvil).

Para más información, consultar el manual de comandos AT delmódem que sé este utilizando.

Page 308: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO MÓDEM FM-TM 4 04.01

CONFIGURACIÓN DEL SET-UP

A los diferentes equipos de la gama MIDA se les ha añadidonuevos parámetros dentro del Setup.

Los nuevos parámetros son:• CONEXIÓN COM-1• DETECTAR NO CARRIER• AUTODESCONEXIÓN (SEG.)• CADENA DE MARCADO• CODIGO PIN

A continuación se describe cada uno de estos nuevosparámetros:

• CONEXIÓN COM-1Define el tipo de comunicación que debe establecer en el puertode comunicaciones COM-1 (RS232). Existe tres opciones:1. DIRECTA:

Conexión directa entre equipo y PC u otro equipo con RS232(comunicación standard).

2. MÓDEM:Conexión a módem fijo RTB.En modo MÓDEM el equipo establece comunicación con elmódem nada más arrancar, por lo que el módem seautoconfigura correctamente.En este modo tras arrancar cuelga la línea de teléfono yestablece la comunicación con el módem en modo comandosAT en espera de enviar nuevas ordenes.

3. MODEM GSM ó MODEM GSM-SMS:Conexión a módem GSM, con opción a SMS (según modeloMIDA).Igual que la descripción de la opción MÓDEM, pero paraconectar un módem GSM.

Page 309: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO MÓDEM FM-TM 5 04.01

• DETECTAR NO CARRIERDefine como tratar la respuesta del módem “NO CARRIER”.Mientras el equipo este en modo transparente, al producirse unadesconexión remota recibiremos un código de resultado “NOCARRIER”.Existe dos opciones:1. SI:

Al recibir la respuesta “NO CARRIER” el equipo pasaráautomáticamente a modo comandos, dispuesto a enviar nuevoscomandos al módem, y avisará al programa de autómata.

2. NO:La cadena no se distinguirá del resto de los mensajes en modotransparente. Será trabajo del programa de autómata decidir sise ha cortado la línea (por los mensajes recibidos, cosa quesolo se puede hacer en el protocolo libre, o por temporización).

• AUTODESCONEXIÓN (SEG.)Como ya hemos indicado anteriormente si se produce unadesconexión remota puede no recibirse la cadena “NO CARRIER”o haberse seleccionado “NO” en la opción “DETECTAR NOCARRIER”. En estos casos la línea quedaría permanentementeabierta. Para evitar esto se puede definir el tiempo, en segundos,de autodesconexión tras el cual si no se ha recibido ningúnmensaje valido o no se ha transmitido nada, el equipo colgará lalínea, de forma automática y pasará a modo comandos, listo paraestablecer una nueva conexión.El valor de este parámetro debe estar comprendido entre 0 y32767 seg.. Si se selecciona 0 esta opción queda invalidada.

• CADENA DE MARCADOEl comando de marcado empieza según el tipo de módem autilizar y su conexión a la red telefónica:- ATDT: módem RTB (red telefónica básica) para marcación por

tonos).- ATDP: módem RTB (red telefónica básica) para marcación por

pulsos).- ATD: módem GSM.

Page 310: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO MÓDEM FM-TM 6 04.01

y a continuación del comando de marcación se pone el teléfono dedestino.La mayoría de veces entre el comando de marcación y el númerotelefónico hay comandos o prefijos, toda esta parte se puedeañadir a la cadena de marcado de forma que el programa deautómata solo deba indicar el teléfono de destino (o parte de él).Por ejemplo si la marcación telefónica es por tonos (comando“ATDT”) y la hacemos a través de una centralita (pulsar “3” paraobtener línea) y siempre llamamos a Barcelona (prefijo “93”)podemos indicar como cadena de marcado “ATDT3,93” (la comaindica una pausa entre el “3” y el “9”), de esta forma el programade autómata solo deberá indicar las últimas 7 cifras del númerotelefónico (ver instrucción AT 0).El valor de la cadena de marcado debe de tener un máximo de 20caracteres.

• CODIGO PINSirve para indicar al equipo el código PIN del módem GSM.Al arrancar el equipo MIDA, pregunta al módem si necesitacódigo PIN y en caso afirmativo lo envía.Al leer el setup del equipo este campo aparece relleno con ‘*’para proteger la seguridad del módem. Al escribir un nuevocódigo este será visible siempre que se lea hasta que no quedeactivado al reinicializar el equipo.El valor del código PIN es una cadena numérica de 8 dígitoscomo máximo.

Page 311: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO MÓDEM FM-TM 7 04.01

RELÉS Y REGISTROS

En los equipos MIDA se ha incluido nuevos relés y registrosenteros en el mapa de memoria, para el uso con las nuevas funcionesde tratamiento de módem:

• Relé Tratamiento Módem.Define si se debe tratar la respuesta del módem (código deresultado) por parte del programa de usuario. Depende de suestado:- Manual (estado del relé a “0”):

Tratamiento manual respuesta módem.Tras recibir una respuesta del módem (código de resultado) elpuerto queda bloqueado hasta que el programa de autómata notrate la respuesta.

- Automático (estado del relé a “1”), estado por defecto:Ignorar respuestas módem.Si el programa de autómata no tiene tratamiento de lasrespuestas del módem se debe activar el modo automático paraque tras cada recepción el puerto quede liberadoautomáticamente y no se indique nada al programa deautómata.

• Relé Modo Comandos.Se activa si el módem esta en modo comandos.Este relé es solo de lectura, modificar su valor no modificará elestado del módem.

• Relé Módem Ocupado.Al establecer una conexión o cortarla, al aceptar un código PIN yconectarse al proveedor GSM (caso de ser módem GSM), elmódem puede tardar varios segundos. Dichos procesos serealizan de forma paralela, por interrupciones, para no dejar elequipo MIDA inactivo. Mientras el módem este ocupado seactivará este relé. Si se ejecuta un comando de autómata conacceso al módem el programa de autómata esperará de forma

Page 312: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO MÓDEM FM-TM 8 04.01

automática a que el módem haya acabado para ejecutar dichocomando.

• Relé Nuevo SMS.Se activa al recibir la notificación de que el módem GSM harecibido un mensaje SMS.

• Relé Colisión SMS.Se activa si se recibe una segunda notificación de nuevo mensajeSMS sin haber tratado el primero.

• Relé Error Módem.Se activa si el módem ha devuelto un mensaje de error.

• Registro Entero Respuesta Módem.Indica el número de respuesta recibida por el módem (código deresultado) entre las posibles respuestas validas según la tablaindicada en el apartado “Respuestas Validas” de este capitulo.

• Registro Entero Num. SMS Recibido.Tras activarse el relé “Nuevo SMS”, en este registro guarda unnumero que corresponde al índice del mensaje SMS recibido.Tenemos que utilizar este número para poder leer el mensajerecibido, si lo perdemos (para ello disponemos el relé “ColisiónSMS”) no sabremos que mensaje hemos recibido.

• Registro Entero Verificación PIN GSM.Indica cada cuanto tiempo el MIDA debe preguntar al módemGSM, si tiene el módem el PIN activado. (ver apartado“Reposición Automática Código PIN” en este capitulo).El valor de este registro debe estar comprendido entre 0 y 1440minutos (24 horas). Cualquier otro valor provocará que sedesactive la verificación del PIN.

Page 313: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO MÓDEM FM-TM 9 04.01

También los siguientes relés y registros enteros, son necesariospara las funciones de tratamiento del módem:

• Relé Mensaje Completo.Se activa cuando el buffer de recepción hay una respuesta validadel módem (el parámetro del setup “Tratamiento Módem” debeestar en modo manual) o cuando trabajemos con el protocolo libre(depende del modo seleccionado).

• Registro Entero Ancho Tx COM1 (RS232).Indica el número de caracteres que tiene el texto a enviar por elpuerto serie.

• Registro Entero Longitud Mensaje Rx.Indica el número de caracteres almacenados en el buffer derecepción.

• Registro Entero Errores General.Registro general de detección de errores, donde se marcan loserrores ocurridos en el equipo MIDA. Cada bit indica un errordistinto (ver capitulo “Tratamiento de errores” de este manual).

Page 314: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO MÓDEM FM-TM 10 04.01

RESPUESTAS VALIDAS

Se ha añadido una nueva instrucción de autómata “AT” con 7funciones distintas para trabajar con el módem. Todas ellas al enviarun comando al módem terminan, con lo que el programa de autómatacontinua, y la respuesta es tratada por interrupciones. Tras recibir unarespuesta valida (código de resultado) el equipo activa el relé“Mensaje Completo”. En el registro “Respuesta Módem” indicará elmensaje recibido. La lista de mensajes validos es:

Mensaje recibidodel módem

(código resultado)

RegistroRespuesta

MódemDescripción

-1 Error PIN incorrecto (1)

OK 0 OKCONNECT 1 Conexión establecida (2)

RING 2 Detección llamada entranteNO CARRIER 3 Conexión cortadaERROR 4 Error (3)

+CME ERROR 5 Error (4)

NO DIALTONE 6 No hay tono en la líneaBUSY 7 La línea comunicaNO ANSWER 8 No contestan+CMTI: 9 Nuevo mensaje SMS (5,6)

+CPIN: READY 10 Ya tiene PIN (6)

+CPIN: SIM PIN 11 Falta código PIN (6)

+CPIN: SIM PUK 12 Falta código PUK (6)

(1) Es una respuesta ERROR igual que la 4 y 5 pero indica el casoespecial de PIN incorrecto.(2) Tras recibir esta respuesta el equipo pasará de forma automática almodo transparente.(3) Se activa también el relé “Error Módem”(4) Igual que el mensaje 4 el algunos MÓDEMS GSM(5) En módem GSM recepción de mensaje corto. No se activa el relé“Mensaje Completo” sino que se activa el relé “Nuevo SMS” y se

Page 315: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO MÓDEM FM-TM 11 04.01

guarda el número de mensaje en el registro “Num. SMS Recibido”.(Ver apartado “Tratamiento de mensajes cortos SMS”).(6) Solo en MÓDEMS GSM.

Al recibir una respuesta del módem (código de resultado), elrelé “Mensaje Completo” se activará. Mientras no se trate el mensajela interrupción de recepción quedará bloqueada para evitar la colisiónde mensajes. Existen 3 formas de liberar la interrupción de recepción:

" Borrar directamente el relé “Mensaje Completo”." Enviar un mensaje por el puerto de comunicaciones

(ejecutando la instrucción “COM” o una instrucción “AT”)." Ejecutando el comando “COM 9” (para tratar el mensaje)

Se ha de procurar liberar la rutina de recepción lo antes posiblepara evitar la perdida de posibles respuestas del módem.

! Respuestas Extensas

Las respuestas del módem (código de resultado) puedencontener más de una línea. Por ejemplo si se envía el comando “ATI0”(pedir código de producto del fabricante) responde dos líneas, laprimera con el código y la segunda con un OK (comando correcto),según el fabricante (dependiendo de si pone un <CR><LF> delante decada línea o no) las respuestas pueden ser del tipo:

Tipo 1 Tipo 2<CR><LF>28800<CR><LF><CR><LF>OK<CR><LF>

28800<CR><LF>OK<CR><LF>

El equipo siempre esperará una respuesta valida de la tablaanterior y mientras esto no suceda seguirá acumulando líneas (buffermáximo de recepción es de 256 bytes). Cuando recibe una respuestavalida por ejemplo OK activará el relé “Mensaje Completo” y pondrá un0 (respuesta OK) en el registro “Respuesta Módem”. En el registro“Longitud Mensaje Rx” tendrá la longitud del mensaje a tratar. Si se

Page 316: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO MÓDEM FM-TM 12 04.01

ejecuta la instrucción “COM 9” pasará al buffer general todas laslíneas recibidas separadas por un <CR> y eliminando los <CR><LF>de las líneas vacías. En el ejemplo:

28800<CR>OK

En el registro “Longitud Mensaje Rx” en este caso indicaría 8, y trasejecutar la instrucción COM 9 valdrá 0 ya que el buffer de recepciónha sido vaciado.

Page 317: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO MÓDEM FM-TM 13 04.01

CODIGO PIN MÓDEM GSM

El módem GSM disponen de un código PIN para activar la señaltelefónica y comunicación de estos. Este es un código de 4 a 8 dígitosque se pide al arrancar el módem GSM. Sin dicho código no se puedeactivar ninguna función del módem. Y si se enviase por 3 veces uncódigo PIN incorrecto, se bloquearía el módem hasta que no se leenviase el código de 8 dígitos denominado PUK.

Hay módems que permiten desactivar el uso del código PIN,para ello ver el manual del módem GSM que se este utilizando.

Si tenemos conectado un módem GSM en el MIDA, y este tieneconfigurado en el setup “Módem GSM” en el parámetro “ConexiónCOM-1”, al arrancar envía el código PIN al módem GSM paraactivarlo. Dicho código se debe grabar en el equipo, antes de utilizarun módem GSM. Por el contrario no se debe poder leer del equipo yaque con dicho código se podría extraer el módulo SIM del módem yutilizarlo en cualquier otro teléfono ó módem GSM.

Por ello en los equipos MIDA se ha añadido un nuevoparámetro en el setup del equipo para poder indicarle cual es elcódigo PIN. Dicha entrada se rellena con “*” ya que no es posible leerel código PIN, por seguridad. Al escribir el código PIN se hace deforma visible para evitar errores y continuará visible hasta que no seaactivado (inicializando el equipo).

Si el campo “CODIGO PIN” se borra o se deja vacío, sedesactivará la transmisión del código PIN al arrancar (el equipo nointentará enviar ningún código PIN al módem).

! Reposición Automática Código PIN

El MIDA dispone de una función para poder verificar y actualizarel código PIN en los módem GSM de forma periódica.

Page 318: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO MÓDEM FM-TM 14 04.01

Si el módem GSM se resetea deberemos reenviarle el códigoPIN para volver a tenerlo activo (si no el módem no contesta llamadas,ni acepta mensajes SMS). Como el MIDA no tiene constancia de queel módem se haya reseteado el método para asegurarnos que elmódem este siempre activo será pedirle de forma periódica si necesitavolver a enviarle el código PIN.

El MIDA siempre al arrancar enviará el código PIN al módem. Elproblema surge cuando el módem y el equipo están alimentados porlíneas diferentes de forma que se pueda resetear el módem y elequipo no.

Se introduce un nuevo registro entero “Verificación PIN GSM”con el número de minutos cada cuanto se quiere que se pregunte porel código PIN.

El valor a poner dependerá del ruido de la instalación donde seponga el módem y el tiempo que nos podamos permitir estar sinconexión. Por otro lado contra más a menudo se pregunte por elcódigo PIN más lento funcionará el equipo y más comunicacionestendrá por el puerto serie.

El valor a poner en dicho registro solo puede ir de 0 a 1440minutos (24 horas), cualquier otro valor provocará que se desactiveesta función. Desactivar la reposición del código PIN automático nospuede servir para asegurarnos que durante un proceso decomunicación con el módem no nos interfiera la petición del códigoPIN.

Poner el registro a 0 provoca una petición del código PINinmediata (al siguiente segundo de reloj) y se carga en el registroentero un –1 (desactivando la función). Esto sirve para pedir de formainmediata el código PIN una única vez.

La petición del PIN esta sincronizada con el reloj del sistema deforma que siempre se realizará cuando el registro de los segundosmarque 0.

Page 319: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO MÓDEM FM-TM 15 04.01

! Tratamiento de errores PIN

El código PIN se actualiza solo si el equipo se encuentra enmodo comandos. En el caso de que este en modo directo, o no tieneun módem conectado, o tiene la línea abierta y se esta comunicandoremotamente con otro módem, la petición del PIN no responderíaprovocando un error.

Normalmente el MIDA al ejecutar una instrucción AT (comandoAT al módem) si no hay respuesta marca el error de no hay módem(registro entero de error) y pasa a modo directo (en suposición de queno hay módem). El modo comando siempre se puede recuperarejecutando la función “AT 2” (comando ATH) o enviando un mensajepor el puerto de comunicaciones donde esta conectado el módem(ejecutando la instrucción “COM”) se activará el temporizador deAUTODESCONEXIÓN que enviará un comando ATH.

La reposición automática puede realizarse desde una vez al díahasta una vez por minuto (1440 veces en un día) esto nos implica deque pueden haber fallos de comunicación y si funcionará como loexpuesto arriba siempre acabaría pasando por error a modo directo.Para evitar esto el mensaje de petición del PIN no tiene tratamiento deerror y si falla ya funcionará en la siguiente llamada.

Page 320: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO MÓDEM FM-TM 16 04.01

INICIO ARRANQUE MIDA Y MODEM

Al tener conectado un MODEM debemos tener cuidado alarrancar el MIDA. Si se arranca el equipo y el módem a la vez, amboslo harán en modo comandos y pasaran de modo comandos a modotransparente y viceversa a la vez. El problema viene si falla algunacomunicación o alguno de los dos equipos se resetea pasando amodo comandos mientras el otro permanece en modo transparente.Para asegurar que el MODEM y el equipo siempre estén en el mismomodo, se han añadido las siguientes protecciones:

" Si se resetea el MÓDEM, el MIDA dejará de recibir mensajes orespuesta a los mensajes que envíe. El programa de autómatapodrá detectar que no recibe respuestas y en tal caso ejecutar lainstrucción “AT 2” (Colgar la línea). Si el programa de autómata nodetecta el fallo, al cumplirse el tiempo establecido por el parámetrodel SETUP “AUTODESCONEXIÓN” se ejecutará de formaautomática dicho comando. Con lo que siempre podemosrecuperar el funcionamiento del equipo.

" Si se resetea el MIDA, al arrancar se ejecuta de forma automáticael comando “AT 2” (Colgar línea) para recuperar el control delMODEM si se encontraba en modo transparente.

A parte de estas protecciones en los MÓDEMS GSM al arrancarse envía el código PIN, si lo tenemos activo (Ver apartado anterior“Código PIN MODEM GSM”). Para ello se pregunta de formaautomática al MODEM si necesita dicho código, a lo que el módempuede responder tres códigos:

Mensaje Número Descripción+CPIN: READY 10 Ya tiene PIN o esta desactivado+CPIN: SIM PIN 11 Falta código PIN+CPIN: SIM PUK 12 Falta código PUK

Page 321: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO MÓDEM FM-TM 17 04.01

- Ya tiene PIN o esta desactivado:Finaliza la inicialización automática. Habrá quedado el relé“Mensaje Completo” activado y en el registro “RespuestaMODEM” un 10.

- Falta código PIN:En este caso envía el código PIN almacenado en el setup delMIDA. Si el código PIN es incorrecto se activará el relé “ErrorMódem” y en “Respuesta MODEM” tendremos un –1. Si el códigoPIN es correcto al cabo de unos segundos (entre 10 y 15 paraestablecer la conexión con el proveedor GSM) contestara “OK”(relé “Mensaje Completo” activado y en “Respuesta MODEM” un0).

- Falta código PUK:Se activará el relé “Error Módem” y en “Respuesta MODEM”tendremos un 12.

Todas estas funciones de comunicación con el MODEM serealizan por interrupciones. De esta forma aunque tarde variossegundos en inicializar la comunicación con el MODEM el programade autómata iniciará su scan. Si se realiza una instrucción AT o COM1 antes de que la inicialización haya acabado, el programa deautómata se esperará.

Page 322: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO MÓDEM FM-TM 18 04.01

INSTRUCCIONES AT

En los equipos MIDA se ha implementado una nuevainstrucción denominada AT.

Dicha instrucción, dependiendo del valor del primer operando,nos hará una función especifica. La descripción y funcionamiento deestas la vamos a describir en las siguientes paginas.

Dependiendo del modelo de MIDA que estemos programando,no dispondremos de las funciones AT referentes al tratamiento demensajes cortos SMS. Para ver que funciones disponemos, ver elManual Usuario que acompaña con cada equipo.

Recordar que en los módems GSM para poder recibir y enviarmensajes cortos SMS, debemos de tener activado el acceso al Centrode Mensajes (contactar con el proveedor de telefonía móvil).

Las funciones de la instrucción AT, que disponemos en todoslos equipos MIDA, son:

AT 0 MARCA un número telefónico y establece conexión.AT 1 DESCUELGA el módem automáticamente.AT 2 CUELGA la llamada en línea y pasa a modo comandos el

módem.

En los equipos con tratamiento para mensajería corta SMS,además de las anteriores, disponen de las siguientes funciones:

AT 6 ALMACENA numero de teléfono destino para mensajescortos SMS.

AT 3 ENVIA mensaje corto SMS.AT 4 LEE mensaje corto SMS del módem GSM.AT 5 BORRA mensaje corto SMS del módem GSM.

Page 323: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO MÓDEM FM-TM 19 04.01

AT XXXX

NEMÓNICO: ATOPERANDO XXXX: Constante 0CÓDIGO INSTRUCCIÓN: 39

DESCRIPCIÓN:

MARCA un número telefónico y establece conexión.El operando XXXX es la constante 0, llamada a dicha función.Añade al contenido del parámetro del setup “CADENA DEMARCADO” el contenido del buffer intermedio para componer elcomando de marcación que luego se envía al módem.El programa de usuario del MIDA no se detiene mientras se envíadicho comando y se establece la comunicación, ya que todo elproceso se realiza por interrupciones.No opera con las pilas (0)

Nota: Esta función solo funciona con el módem en modo comandos.

# Ejemplo:

num_tel lite “0,93211211”

...CLEAR ;Borra buffer intermedio.DISL num_tel ;Copia en el buffer intermedio el texto

;“num_tel” de la tabla de literales.AT 0 ;Envía al módem el contenido de la

;“CADENA DE MARCADO” más el;contenido del buffer intermedio.

... ;Continua el programa.

AT

Page 324: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO MÓDEM FM-TM 20 04.01

AT XXXX

NEMÓNICO: ATOPERANDO XXXX: Constante 1CÓDIGO INSTRUCCIÓN: 39

DESCRIPCIÓN:

DESCUELGA el módem automáticamente.El operando XXXX es la constante 1, llamada a dicha función.Al ejecutar esta instrucción el módem responde automáticamenteante una llamada entrante (al recibir el MIDA el código de resultadodel módem “RING”, numero 2 de la tabla de Respuestas Válidas).Esta instrucción es útil para cuando tenemos programado en elregistro S0 del módem el valor 0 (respuesta automática inhabilitada),de este modo el MIDA toma el control de responder ante unallamada.No opera con las pilas (0)

Nota: Esta función solo funciona con el módem en modo comandos.

# Ejemplo:

...MOVRI resp_mod ;Carga el contenido del registro entero

;“Respuesta Módem”.MOVCI 2 ;Carga la constante 2.CPEI desc ;Si el contenido del registro “resp_mod” es

;igual a 2 (equivale al mensaje “RING” de;la tabla de respuestas validas) salta a;línea con etiqueta “desc”. De lo contrario;continua el programa.

JMP contin ;Salto incondicional a “contin”.desc AT 1 ;Descuelga el módem.contin ... ;Continua el programa

AT

Page 325: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO MÓDEM FM-TM 21 04.01

AT XXXX

NEMÓNICO: ATOPERANDO XXXX: Constante 2CÓDIGO INSTRUCCIÓN: 39

DESCRIPCIÓN:

CUELGA la llamada en línea y pasa a modo comandos el módem.El operando XXXX es la constante 2, llamada a dicha función.Esta función detecta si el módem esta en modo transparente ocomandos. En el primer caso pasa el módem a modo comandos(envía “+++”) y cuelga la línea (envía “ATH”). En el segundo caso secomprueba que el módem esta en modo comandos (se envía “AT”).En ambos casos el módem responderá con un OK”. De lo contrarioactivará el error “No se detecta módem ó Instrucción AT incorrecta”,bit 11 del “Registro Errores General” (ver capitulo Tratamiento deErrores).No opera con las pilas (0)

Nota: Esta función se puede utilizar tanto en modo comandos, comoen transparente, y se puede utilizar para detectar la presencia demódem.

# Ejemplo:

...LD modo ;Carga el estado del relé “Modo

;Comandos”.JNZ contin ;Si el relé “Modo Comandos” esta a “1”

;(modo comandos) salto a “contin”. De lo;contrario si el relé esta a “0” (modo;transparente) continua a la siguiente línea.

AT 2 ;Pasa a modo comandos y cuelgo la línea.contin ... ;Continua el programa

AT

Page 326: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO MÓDEM FM-TM 22 04.01

AT XXXX

NEMÓNICO: ATOPERANDO XXXX: Constante 6CÓDIGO INSTRUCCIÓN: 39

DESCRIPCIÓN:

ALMACENA numero de teléfono destino para mensajes cortos SMS.El operando XXXX es la constante 6, llama a dicha función.Esta función almacena el contenido de los 20 primeros caracteres(sin contar espacios en blanco) del buffer intermedio como numerode teléfono destino de los mensajes SMS (ver instrucción AT 3).El numero de teléfono queda almacenado en una zona de memoriainaccesible por el usuario.No opera con las pilas (0).

Nota: Esta función solo funciona en modo comandos para losmódems GSM y debe tener activado el acceso al Centro de Mensajes.

# Ejemplo:

tel_sms lite “+346305000”

...CLEAR ;Borra buffer intermedio.DISL tel_sms ;Copia en el buffer intermedio el texto

;“tel_sms” de la tabla de literales.AT 6 ;Almacena el contenido del buffer

;intermedio en una zona de memoria. El;cual será el numero de teléfono a utilizar;para el envío de mensajes SMS.

... ;Continua el programa

AT

Page 327: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO MÓDEM FM-TM 23 04.01

AT XXXX

NEMÓNICO: ATOPERANDO XXXX: Constante 3CÓDIGO INSTRUCCIÓN: 39

DESCRIPCIÓN:

ENVIA mensaje corto SMS.El operando XXXX es la constante 3, llama a dicha función.Esta función envía el mensaje corto SMS, formado por los Nprimeros caracteres, indicados por el registro entero “Ancho TxCOM1”, del buffer intermedio. Al teléfono indicado por la instrucción“AT 6”.No opera con las pilas (0)

Nota: Esta función solo funciona en modo comandos para losmódems GSM y debe tener activado el acceso al Centro de Mensajes.

# Ejemplo:

sms_1 lite “alarma en caldera”

...CLEAR ;Borra buffer intermedio.DISL sms_1 ;Copia en el buffer intermedio el texto

;“sms_1” de la tabla de literales.AT 3 ;Envía el contenido del buffer intermedio al

;numero de teléfono asignado previamente;con la instrucción AT 6, como mensaje;SMS. La longitud de este, será según el;registro entero “Ancho Tx”

... ;Continua el programa

AT

Page 328: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO MÓDEM FM-TM 24 04.01

! Recepción de mensajes cortos SMS

Los módulos SIM de los módems GSM pueden almacenar unnúmero limitado de mensajes y estos son almacenados con unnumero de índice.

Los pasos que el MIDA ejecuta automáticamente al recibir unmensaje corto SMS, son los siguientes:

1. Se activará el relé “Nuevo SMS”.2. Se guardará en el registro “Num. SMS Recibido” el

numero del índice correspondiente al mensaje cortorecibido.

3. Si el relé de “Nuevo SMS” estaba activado previamentese activará el relé “Colisión SMS”.

Debido a que se pueden recibir varios mensajes cortos con muypoco tiempo de diferencia entre ellos, el relé “Colisión SMS” sirve paradetectar si nos hemos dejado algún mensaje sin tratar.

El tratamiento puede ser tan sencillo como apuntar en una tablael mensaje a tratar y borrar el relé “Nuevo SMS”, con lo que dejamosel tratamiento real del mensaje SMS para más tarde. O ejecutar elcomando “AT 4” (borra automáticamente el relé “Nuevo Mensaje”) ytratar el mensaje en el momento mediante la instrucción “COM 9”.

Como anteriormente hemos indicado los módulos SIM de losmódems GSM pueden almacenar un número limitado de mensajes,por ello es interesante utilizar la instrucción “AT 5” para borrar losmensajes ya tratados.

Si se pide un mensaje corto que no exista (instrucción “AT 4”),cuando responda el módem se activará el relé “Error Módem”. Este esun relé accesible que puede ser borrado antes de enviar un nuevocomando al módem. De esta forma se podrían pedir todos losmensajes del módem y descubrir cuantos y cuales estánalmacenados.

Page 329: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO MÓDEM FM-TM 25 04.01

Una vez recibido un nuevo mensaje SMS, el cual nos lo indicarael relé de “Nuevo SMS”, los pasos que debemos seguir para sutratamiento, es el siguiente:

1. Comprobar que el relé “Mensaje Completo” este a “0”.2. Poner el relé Tratamiento Módem a “0” (tratamiento

manual).3. Cargar en la pila aritmética el numero del índice

correspondiente al mensaje a leer. (ver descripción delregistro entero “Num. SMS Recibido” en el apartado “Relésy Registros” en este capitulo).

4. Ejecutar la instrucción “AT 4”.5. Al descargar el mensaje se activara el relé “Mensaje

Completo”, el registro entero “Respuesta Módem” contendráun 0 (respuesta OK) y en el registro “Longitud Mensaje Rx”tendremos el numero de caracteres que contiene.

6. A continuación debemos de utilizar la instrucción “COM 9”,donde pasaremos al buffer intermedio el contenido delmensaje para ser tratado.

7. Poner el relé Tratamiento Módem a “1” (tratamientoautomático), en el caso de desearlo, (ver descripción delrelé “Tratamiento Módem” en el apartado “Relés yRegistros” en este capitulo).

Page 330: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO MÓDEM FM-TM 26 04.01

AT XXXX

NEMÓNICO: ATOPERANDO XXXX: Constante 4CÓDIGO INSTRUCCIÓN: 39

DESCRIPCIÓN:

LEE mensaje corto SMS del módem GSM.El operando XXXX es la constante 4, llama a dicha función.Cada vez que el módem GSM recibe un mensaje SMS, este loalmacena con un numero de índice.Esta función lee un mensaje almacenado en el módem GSM,cargando previamente en la pila aritmética el numero del índicecorrespondiente al mensaje a leer. (ver descripción del registroentero “Num. SMS Recibido” en el apartado “Relés y Registros” eneste capitulo).Si el mensaje SMS pedido no se encuentra en el módem se activarael relé “Error Módem”.Decrementa un nivel la pila aritmética (-1).

Nota: Esta función solo funciona en modo comandos para losmódems GSM y debe tener activado el acceso al Centro de Mensajes.

# Ejemplo:

LD r_sms ;Cargar el estado del relé “Nuevo;SMS”.

JZ fin ;Si la pila lógica esta a “1”, continua;el programa desde esta línea.

RESET r_modo ;Resetear relé “Tratamiento;Módem”.

MOVRI n_sms ;Cargar en pila aritmética, el;contenido del registro entero “Num.;SMS Recibido”.

AT 4 ;Ejecutar la función “Leer SMS”.

AT

Page 331: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO MÓDEM FM-TM 27 04.01

ver LD r_resp ;Verificar si el relé “Mensaje;Completo” esta a “1”.

JZ ver ;Si la pila lógica esta a “1”, continua;el programa desde esta línea.

CLEAR ;Borrar buffer intermedio.COM 9 ;Copiar el contenido actual del

;buffer de recepción al buffer;intermedio.

LOC 0 ;Posiciona el puntero en la posición;0 del buffer intermedio.

COM 0 ;Copia el contenido del buffer;intermedio al COM 0.

Page 332: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO MÓDEM FM-TM 28 04.01

AT XXXX

NEMÓNICO: ATOPERANDO XXXX: Constante 5CÓDIGO INSTRUCCIÓN: 39

DESCRIPCIÓN:

BORRA mensaje corto SMS del módem GSM.El operando XXXX es la constante 5, llama a dicha función.Esta función borra un mensaje almacenado en el módem GSM,cargando previamente en la pila aritmética el numero del índicecorrespondiente al mensaje a borrar.Cada vez que el módem GSM recibe un mensaje SMS, este loalmacena con un numero de índice.Decrementa un nivel la pila aritmética (-1).

Nota: Esta función solo funciona en modo comandos para losmódems GSM y debe tener activado el acceso al Centro de Mensajes.

# Ejemplo:

...MOVRI 500 ;Carga en pila aritmética el contenido del

;registro entero 500 (por ejemplo, 3).AT 5 ;Borra el mensaje corto SMS almacenado

;en el módem GSM con el numero de;índice 3

...

AT

Page 333: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO MÓDEM FM-TM 29 04.01

# EJEMPLOS:

Para efectuar estos ejemplos deberemos comprobar las instrucciones y el direccionamiento de losrelés/registros de la memoria, disponibles en el equipo MIDA que estamos programando.

;;Programa prueba para MIDA compatible con GSM-SMS con MODEM GSM;;Comprobar los siguientes parámetros del SET_UP del equipo:; CONEXION COM-1: MODEM GSM-SMS; DETECTAR NO CARRIER: SI; AUTODESCONEXION (SEG.): 30; CADENA DE MARCADO: ATD; CODIGO PIN: numero pin del módem GSM;;Definición de textosllamar lite "LLAMADA"enviar_m lite "ENVIA SMS”numero lite "6061110"numero_m lite "6061111"mensaje lite "ALARMA 1"borrando lite "BORRAR SMS”colgar lite "COLGAR"lineas lite "DESCOLGAR"

;Definición de etiquetas

llamar equ 60 ;Relé de Tecla n, para llamarcuelga equ 62 ;Relé de Tecla n, para colgarenviar equ 61 ;Relé de Tecla n, para enviar mensajeborrar equ 63 ;Relé de Tecla n, para borrar mensajescan equ 99 ;Relé 1º Scanr_sms equ 132 ;Relé Nuevo Mensaje SMSt_mod equ 134 ;Tratamiento Módemcmod equ 23 ;Respuesta Módemn_sms equ 24 ;Numero SMS Recibidoreg_int equ 250 ;Registro entero interno

Page 334: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO MÓDEM FM-TM 30 04.01

;;Programa principal;

LD scan ;Comprueba el relé de 1º scan.JNZ gsmSETRI 20 10 ;Almacena el numero de caracteres para

;transmitir, en el reg. entero “Ancho Tx”.CLEAR ;Borra buffer intermedio.DISL numero_m ;Carga en el buffer intermedio el numero

;de GSM donde enviar SMS.AT 6 ;Almacena el numero de GSM.

fin END;;;Llamar a un módem remoto y establecer conexión;gsm INK llama ;Si se pulsa tecla, llama.

JZ gsm1 ;De lo contrario salta a “gsm1”.CLEAR ;Borra buffer intermedio.DISL numero ;Copia en el buffer intermedio el numero

;de teléfono del módem remoto a llamar,;asignado en la tabla de literales.

AT 0 ;Inicia la llamada al módem remoto.CLEAR ;Borra buffer intermedio.DISL llamar ;Copia en el buffer intermedio el texto de la

;tabla de literales “llamar”.COM 0 ;Visualiza el texto por el display.

;;Colgar una llamada y pasar a modos comandos;gsm1 INK cuelga ;Si se pulsa tecla, cuelga la llamada.

JZ gsm2 ;De lo contrario salta a “gsm2”.AT 2 ;Cuelga la llamada en linea.CLEAR ;Borra buffer intermedioDISL colgar ;Copia en el buffer intermedio el texto de la

;tabla de literales “colgar”.COM 0 ;Visualiza el texto por el display.

Page 335: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO MÓDEM FM-TM 31 04.01

;;Responder llamada entrante;gsm2 MOVRI cmod ;Carga en pila aritmética el contenido del

;reg. entero “Respuesta Módem”.MOVCI 2 ;Carga en pila aritmética la constante 2.CPEI desc ;Comprueba si el contenido del registro

;“Respuesta Módem” es 2 (equivalente a;llamada entrante “RING” de la tabla de;Respuestas Validas).

JMP gsm3 ;De lo contrario salta a “gsm3”.desc AT 1 ;Descuelga la llamada entrante.

CLEAR ;Borra buffer intermedio.DISL lineas ;Copia en el buffer intermedio el texto de la

;tabla de literales “lineas”.COM 0 ;Visualiza el texto por el display.SETRI cmod -2 ;Almacena la constante –2 en el registro

;“Respuesta Módem”, código no existente;en la tabla de Respuestas Validas.

;;Leer mensaje SMS nuevo;gsm3 LD r_sms ;Comprueba si existe un SMS nuevo.

JZ gsm4 ;De lo contrario salta a “gsm4”.RESET t_mod ;Pone el relé de Tratamiento Módem a

;manual.MOVRI n_sms ;Cargo en pila aritmética el numero de

;SMS recibido.AT 4 ;Lee el SMS del módem GSM

verif LD 76 ;Compruebo el relé de mensaje completo.JZ verif ;De lo contrario espero que este a “1”.CLEAR ;Borra buffer intermedio.COM 9 ;Copia el contenido del buffer de recepción

;al buffer intermedio.LOC 0 ;Pone el puntero en la primera posiciónCOM 0 ;Visualiza el mensaje SMS por el display.SET t_mod ;Pone el relé de Tratamiento Módem a

;automático.

Page 336: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO MÓDEM FM-TM 32 04.01

;;Borrar mensaje SMS del módem GSM;gsm4 INK borrar ;Si se pulsa tecla, borra SMS del GSM.

JZ gsm5 ;De lo contrario salta a “gsm5”.MOVRI reg_int ;Carga en pila aritmética el contenido del

;registro entero “reg_int”, cuyo contenido;será el numero de SMS a borrar.

AT 5 ;Borra mensaje SMS n, indicado en el;registro “reg_int”.

CLEAR ;Borra buffer intermedio.DISL borrando ;Copia en el buffer intermedio el texto de la

;tabla de literales “borrando”.COM 0 ;Visualiza el texto por el display.

;;Enviar mensaje SMS;gsm5 INK enviar ;Si se pulsa tecla, envia SMS del GSM.

JZ gsm6 ;De lo contrario salta a “gsm6”.CLEAR ;Borra buffer intermedio.DISL mensaje ;Copia en el buffer intermedio el texto de la

;tabla de literales “mensaje”.AT 3 ;Envia el contenido del buffer intermedio

;como mensaje SMS.CLEAR ;Borra buffer intermedio.DISL enviar_m ;Copia en el buffer intermedio el texto de la

;tabla de literales “enviar_m”.COM 0 ;Visualiza el texto por el display.

;gsm6 RET

Page 337: Manual Tecnico de Programacion Plc PDF

PC

Page 338: Manual Tecnico de Programacion Plc PDF

.

Page 339: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MIDABUS PC-MB 1 99.01

AFEISA dispone de un protocolo de comunicaciones propiopara los equipos MIDA.

Las características principales de este protocolo son:

• Es del tipo Maestro-Esclavo con confirmación.

• Las comunicaciones se realizan carácter a carácter enHEXADECIMAL-ASCII.

• Todos los mensajes al equipo obtienen confirmación ó respuesta.

• En caso de que el mensaje sea ininteligible ó no pueda determinarsu número de periférico (fallo de comunicaciones, mensajeincorrecto, etc.), el equipo no responde.

• En caso de que el equipo detecte un mensaje con su número deperiférico pero con un defecto de forma constructiva, respondecon un mensaje de error.

• Todos los mensajes de respuesta del equipo llevan un byte deestado en el cual se reflejan los posibles errores decomunicaciones ó de ejecución de programa.

• Los mensajes del PC al periférico 00, son recibidos por todos losequipos de la red, pero ninguno responde. Los mensajes estándelimitados por un carácter '/' al inicio y un carácter ';' al final.

Todos los equipos de la nueva familia MIDA disponen de esteprotocolo y pueden conectarse en redes RS485 y RS422.

Page 340: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MIDABUS PC-MB 2 99.01

LISTA DE FUNCIONES DEL PROTOCOLO MIDAbusEl protocolo de comunicaciones MIDAbus soporta las siguientes

funciones:

MENSAJE FUNCIONMensaje 10 Petición de versión del equipo.Mensaje 11 Orden de inicialización del equipo.Mensaje 13 Petición del estado Paro / Marcha del equipo.Mensaje 93 Modificación del estado Paro / Marcha del equipo.Mensaje 91 Orden de borrado de registros.

Mensaje 15 Petición de estado de relés compactados de ocho enocho.

Mensaje 95 Modificación del estado de relés compactados deocho en ocho.

Mensaje 16 Petición de estado de relés.Mensaje 96 Modificación del estado de relés.Mensaje 17 Petición de contenido de registros enteros.Mensaje 97 Modificación de contenido de registros enteros.

Mensaje 1B Petición del contenido de registros de 32 bits encoma flotante.

Mensaje 9B Modificación del contenido de registros de 32 bits encoma flotante

Mensaje 18 Petición del contenido de los visualizadores.Mensaje 98 Modificación del contenido de los visualizadores.Mensaje 9C Simulación de pulsaciones de teclas.Mensaje 1D Petición del contenido del reloj interno del equipo.

Mensaje 9D Modificación del contenido del reloj interno delequipo (puesta en hora).

Page 341: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MIDABUS PC-MB 3 99.01

Mensaje 20 Petición del formato de un fichero.Mensaje 21 Petición del formato de campos de un fichero.Mensaje 22 Petición de un bloque de la memoria de ficheros.Mensaje A2 Grabación de un bloque de la memoria de ficheros.

FORMATO GENERAL DE UN MENSAJE

En la descripción del protocolo, cada dos caracteres separados ó nopor un espacio representan un byte, así por ejemplo:

NP CC IIII...Representan 4 bytes.

El formato general de los mensajes es el siguiente:

Inicio Perif Código Dir. Dato Estado Chek Fin

1Byte

1Byte

1Byte

2Byte

120Byte

1Byte

1Byte

1Byte

/ NP CC IIII DDD ST CK ;

/ NP CC IIII DDDD... ST CK ;

/ ..... Carácter de inicio de mensaje.NP ..... Número de periférico.CC ..... Código del mensaje ( tipo de operación).IIII ..... Dirección de peticiones o modificaciones.DDDD ..... Datos del mensaje ( varios bytes).ST ..... Estado del equipo (status).CK ..... Checksum del mensaje.; ..... Carácter de final de mensaje.

En función si el mensaje es de pregunta ó respuesta puedehaber variaciones en el mensaje descrito.

Page 342: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MIDABUS PC-MB 4 99.01

CALCULO DEL CHECKSUMEl checksum se obtiene sumando byte a byte en hexadecimal

todos los componentes del mensaje sin incluir los caracteres de inicioy final.

El checksum se representa mediante dos dígitos (1 byte) enhexadecimal. En caso de que el resultado sean dos bytes, se toma elmenos significativo.

# Ejemplo:

Mensaje /051700640ACK;

CK = 05 + 17 + 00 + 64 + 0A = 8A

RESULTADO..... /051700640A8A;

# Ejemplo:

Mensaje /150704830064CK;

CK = 15 + 07 + 04 + 83 + 00 + 64 = 107 = 07

RESULTADO.... /15070483006407;

DIMENSIONES MAXIMAS DE LOS MENSAJES

El buffer intermedio de los equipos MIDA, varia en cada uno delos modelos (ver Manuales de Usuario).Se tiene que tener en cuenta, que ningún mensaje puede superar lalongitud admitida en el buffer intermedio (incluidos caracteres de inicioy fin de mensaje).

Page 343: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MIDABUS PC-MB 5 99.01

BYTE DE ESTADOEn cada respuesta del MIDA se transmite un byte que indica el

estado del equipo.Si este byte es 00, no existen problemas ni errores en el equipo, por elcontrario, si tiene algún bit activado es que el equipo tiene algúnproblema ó error de programa.La codificación del byte de estado es:

BIT ERROR

Bit 0 activado (1Hex) Mensaje no tratable con el equipo enmarcha.

Bit 1 activado (2Hex) Margen de variables demandadas nocorrecto.

Bit 2 activado (4Hex)Error por intento de lectura o escrituraen la Base de Datos fuera de susmárgenes.

Bit 3 activado (8Hex)Error por intento de lectura o escriturafuera de márgenes del Mapa deMemoria.

Bit 4 activado (10Hex) Error por rebasamiento matemático óde división por cero.

Bit 5 activado (20Hex) Error en alguna pila (lógica, aritmética ode subrutinas).

Bit 6 activado (40Hex) Error de Check-Sum de la FLASH-EPROM.

Bit 7 activado (80Hex) Error en lectura o escritura deEEPROM.

Ver capitulo "Tratamiento de Errores" de este mismo manual.

Page 344: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MIDABUS PC-MB 6 99.01

MENSAJE 10:PETICION DE VERSION DEL EQUIPO

Mensaje 10

Pregunta Respuesta

/NP 10 CK; Rta. OK /NP 90 HH SS ST CK;Rta. NOK /NP FF ST CK;

donde:

NP ..... Número de periférico.HH ..... Versión hardware.SS ..... Versión software.ST ..... Estado del equipo.CK ..... Checksum del mensaje.

# Ejemplo: Petición de la versión a la unidad de número de periférico 15

MENSAJE PC A MIDA: /151025;

15 Número de periférico (15).10 Código de mensaje.25 Checksum del mensaje.

MENSAJE MIDA A PC: /1590202000E5;

15 Número de periférico (15).90 Respuesta a mensaje 10.20 Versión hardware (20).20 Versión software (20 ! v2.0).00 Byte de estado ( no existen errores).E5 Checksum del mensaje.

Page 345: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MIDABUS PC-MB 7 99.01

MENSAJE 11:ORDEN DE INICIALIZACION AL EQUIPO

Mensaje 11

Pregunta Respuesta

/NP 11 DD CK; Rta. OK No hay respuesta.Rta. NOK /NP FF ST CK;

donde:

NP ..... Número de periférico.DD ..... Datos de la orden.

FF = RESET HARDWARE.00 = RESET SOFTWARE.

ST ..... Estado del equipo.CK ..... Checksum del mensaje.

NOTA: El MIDA realiza el reset hardware mediante el watch-dog delequipo.

# Ejemplo: Petición de reset hardware a la unidad 15

MENSAJE PC A MIDA: /1511FF25;

15 Número de periférico (15).11 Código de mensaje.FF Petición de reset hardware.25 Checksum del mensaje.

MENSAJE MIDA A PC: NO HAY RESPUESTA

Page 346: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MIDABUS PC-MB 8 99.01

MENSAJE 13:PETICION DEL ESTADO PARO / MARCHA DEL EQUIPO

Mensaje 13

Pregunta Respuesta

/NP 13 CK; Rta. OK /NP 93 DD ST CK;Rta. NOK /NP FF ST CK;

donde:

NP ..... Número de periférico.DD ..... Datos de la orden.

FF = equipo en MARCHA.00 = equipo en PARO.

ST ..... Estado del equipo.CK ..... Checksum del mensaje.

# Ejemplo: Petición del estado a la unidad 15.

MENSAJE PC A MIDA: /151328;

15 Número de periférico (15).13 Código de mensaje.28 Checksum del mensaje.

MENSAJE MIDA A PC: /1593FF00A7;

15 Número de periférico (15).93 Respuesta a mensaje 13.FF Estado del equipo (marcha).00 Byte de estado (no existen errores).A7 Checksum del mensaje.

Page 347: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MIDABUS PC-MB 9 99.01

MENSAJE 93:MODIFICACIÓN DEL ESTADO PARO / MARCHA DEL EQUIPO

Mensaje 93

Pregunta Respuesta

/NP 93 DD CK; Rta. OK /NP 00 ST CK;Rta. NOK /NP FF ST CK;

donde:

NP ..... Número de periférico.DD ..... Datos de la orden.

FF = Equipo en MARCHA.00 = Equipo en PARO.

ST ..... Estado del equipo.CK ..... Checksum del mensaje.

# Ejemplo: Modificación del estado de la unidad 15.

MENSAJE PC A MIDA: /159300A8;

15 Número de periférico (15).93 Código de mensaje.00 Modificación del estado del equipo a PARO.A8 Checksum del mensaje.

MENSAJE MIDA A PC: /15000015;

15 Número de periférico (15).00 Confirmación de la modificación OK.00 Byte de estado (no existen errores).15 Checksum del mensaje.

Page 348: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MIDABUS PC-MB 10 99.01

MENSAJE 91:ORDEN DE BORRADO REGISTROS

Mensaje 91

Pregunta Respuesta

/NP 91 DD CK; Rta. OK /NP 00 ST CK;Rta. NOK /NP FF ST CK;

donde:NP ..... Número de periférico.DD ..... Datos de la orden.

00 = Borra contenido de los registros RAM, EEPROM01 = Borra contenido de la Base de Datos02 = Ejecuta las ordenes 00 y 0103 = Ejecuta las ordenes 00, 01 y pone el SETUP del

equipo por defectoST ..... Estado del equipo.CK ..... Checksum del mensaje.

NOTA: Para que surjan todos los cambios se ha de enviar un mensajede inicialización(Mensaje 11) o apagar y encender el equipo.

# Ejemplo: Borrado RAM y EEPROM del equipo 1

MENSAJE PC A MIDA: /01910092;

01 Número de periférico (1).91 Código de mensaje.00 Borrado registros RAM y EEPROM.92 Checksum del mensaje.

MENSAJE MIDA A PC: /01000001;

01 Número de periférico (1).00 Confirmación de la modificación OK.00 Byte de estado (no existen errores).01 Checksum del mensaje.

Page 349: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MIDABUS PC-MB 11 99.01

MENSAJE 15:PETICION DE ESTADO DE RELES COMPACTADOS DE OCHO ENOCHO

Mensaje 15

Pregunta Respuesta

/NP 15 II NN CK; Rta. OK /NP 95 II DD ... ST CK;Rta. NOK /NP FF ST CK;

donde:

NP ..... Número de periférico.II ..... Número de bloque de inicio de la petición.

(Relés 0 - 7 = Bloque 0)(Relés 8 - 15 = Bloque 1)

NN ..... Número de bloques pedidos.DD ..... Bloques respuesta (8 relés por byte).

Codificación:x x x x | x x x x = Bits del bloque1 2 3 4 5 6 7 8 = Relés de la petición.

ST ..... Estado del equipo.CK ..... Checksum del mensaje.

NOTA: El número máximo de bloques que se pueden pedir es de60 bloques.

# Ejemplo: Petición de los dos primeros bloques de relés de la unidad 1 (entradas 0–15).

MENSAJE PC A MIDA: /0115000218;

01 Número de periférico (1).15 Código de mensaje.00 Bloque de inicio de la petición (bloque 0).02 Número de bloques que se piden (2 bloques, ent.0-15).18 Checksum del mensaje.

Page 350: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MIDABUS PC-MB 12 99.01

MENSAJE MIDA A PC: /019500C1AB0002;

01 Número de periférico (1).95 Respuesta a mensaje 15.00 Bloque de inicio de la respuesta (bloque 0).C1 Estado del primer bloque de la respuesta (bloque 0).

Relé 0 a relé 7 (1 1 0 0 0 0 0 1).AB Estado del segundo bloque de la respuesta (bloque 1).

Relé 8 a relé 15 (1 0 1 0 1 0 1 1).00 Byte de estado (no existen errores).02 Checksum del mensaje.

Page 351: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MIDABUS PC-MB 13 99.01

MENSAJE 95:MODIFICACION DE ESTADO DE RELES COMPACTADOS DEOCHO EN OCHO

Mensaje 95

Pregunta Respuesta

/NP 95 II DD CK; Rta. OK /NP 95 00 ST CK;Rta. NOK /NP FF ST CK;

donde:

NP ..... Número de periférico.II ..... Número de bloque de inicio de la petición.

(Relés 0 - 7 = Bloque 0)(Relés 8 - 15 = Bloque 1)

DD ..... Bloques respuesta (8 relés por byte).Codificación:x x x x | x x x x = Bits del bloque1 2 3 4 5 6 7 8 = Relés de la petición.

ST ..... Estado del equipo.CK ..... Checksum del mensaje.

NOTA: El número máximo de bloques que se pueden modificares de 60 bloques.

# Ejemplo: Modificación de los bloques de relés 12 y 13 de la unidad 1:Bloque 12 (96 - 103) 1 1 1 1 1 1 1 1 = FFBloque 13 (104 - 111) 0 0 1 1 1 1 1 1 = 3F

MENSAJE PC A MIDA: /01950CFF3FE0;

01 Número de periférico (1).95 Código de mensaje.0C Bloque de inicio de la modificación (bloque 12).

Page 352: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MIDABUS PC-MB 14 99.01

FF Modificación sobre el primer bloque (bloque 12).3F Modificación sobre el segundo bloque (bloque 13).E0 Checksum del mensaje.

MENSAJE MIDA A PC: /01000001;

01 Número de periférico (1).00 Confirmación de la modificación OK.00 Byte de estado (no existen errores).01 Checksum del mensaje.

Page 353: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MIDABUS PC-MB 15 99.01

MENSAJE 16:PETICION DE ESTADO DE RELES

Mensaje 16

Pregunta Respuesta

/NP 16 IIII NN CK; Rta. OK /NP 96 IIII DD ... ST CK;Rta. NOK /NP FF ST CK;

donde:

NP ..... Número de periférico.IIII ..... Dirección del relé inicio de la petición.NN ..... Número de relés pedidos.DD ..... Datos de respuesta (1 relés por byte).

00 = Relé DESACTIVADO.FF = Relé ACTIVADO.

ST ..... Estado del equipo.CK ..... Checksum del mensaje.

NOTA: El número máximo de relés que se pueden pedir es de 60.

# Ejemplo: Petición de 6 relés a partir del relé 255 de la unidad 1.

MENSAJE PC A MIDA: /011600FF061C;

01 Número de periférico (1).16 Código de mensaje.00FF Dirección del relé de inicio de la petición (relé 255).06 Número de relés que se demandan (6).1C Checksum del mensaje.

Page 354: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MIDABUS PC-MB 16 99.01

MENSAJE MIDA A PC: /019600FFFFFF000000000094;

01 Número de periférico (1).96 Respuesta a mensaje 16.00FF Dirección del relé de inicio de la petición (relé 255).FF Estado primer relé demandado (relé 255 en ON).FF Estado segundo relé demandado (relé 256 en ON).00 Estado tercer relé demandado (relé 257 en OFF)00 Estado cuarto relé demandado (relé 258 en OFF)00 Estado quinto relé demandado (relé 259 en OFF)00 Estado sexto relé demandado (relé 260 en OFF)00 Byte de estado (no existen errores).94 Checksum del mensaje.

Page 355: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MIDABUS PC-MB 17 99.01

MENSAJE 96:MODIFICACION DEL ESTADO DE RELES

Mensaje 96

Pregunta Respuesta

/NP 96 IIII DD ... CK; Rta. OK /NP 96 00 ST CK;Rta. NOK /NP FF ST CK;

donde:

NP ..... Número de periférico.IIII ..... Dirección del relé inicio de la modificación.DD ..... Datos de la modificación (1 byte por relé).

00 = Relé DESACTIVADO.FF = Relé ACTIVADO.

ST ..... Estado del equipo.CK ..... Checksum del mensaje.

NOTA: El número máximo de relés que se pueden modificar es de 60.

# Ejemplo: Activar el relé 8 y desactivar el relé 9 de la unidad 7.

MENSAJE PC A MIDA: /07960008FF00A4;

07 Número de periférico (7).96 Código de mensaje.0008 Dirección del relé de inicio de la modificación (relé 8).FF Activación del primer relé (relé 8 a ON).00 Desactivación del segundo relé (relé 9 a OFF).A4 Checksum del mensaje.

MENSAJE MIDA A PC: /07000007;07 Número de periférico (7).00 Confirmación de la modificación OK.00 Byte de estado (no existen errores).07 Checksum del mensaje.

Page 356: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MIDABUS PC-MB 18 99.01

MENSAJE 17:PETICION DE CONTENIDO DE REGISTROS ENTEROS

Mensaje 17

Pregunta Respuesta

/NP 17 IIII NN CK; Rta. OK /NP 97 IIII DD... ST CK;Rta. NOK /NP FF ST CK;

donde:

NP ..... Número de periférico.IIII ..... Dirección del registro inicio de la petición.NN ..... Número de registros que se demandan.DD ..... Datos de la respuesta (2 bytes por registro).ST ..... Estado del equipo.CK ..... Checksum del mensaje.

NOTA: El número máximo de registros enteros que se pueden pedires de 60.

# Ejemplo: Petición de 3 registros enteros desde la dirección 4 de la unidad 1.

MENSAJE PC A MIDA: /011700FA0315;

01 Número de periférico (1).17 Código de mensaje.00FA Dirección del registro de inicio de la petición (reg.250)03 Número de registros enteros que se demandan (3).15 Checksum del mensaje.

Page 357: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MIDABUS PC-MB 19 99.01

16 MENSAJE MIDA A PC: /019700FAD8F002D33A980001;

01 Número de periférico (1).97 Respuesta a mensaje 17.00FA Dirección del registro de inicio de la petición (250).D8F0 Contenido del primer registro (reg. 250 con –22769).02D3 Contenido del segundo registro (reg. 251 con 723).3A98 Contenido del tercer registro (reg. 252 con 15000).00 Byte de estado (no existen errores).01 Checksum del mensaje.

Page 358: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MIDABUS PC-MB 20 99.01

MENSAJE 97:MODIFICACION DEL CONTENIDO DE REGISTROS ENTEROS

Mensaje 97

Pregunta Respuesta

/NP 97 IIII DD ... CK; Rta. OK /NP 97 00 ST CK;Rta. NOK /NP FF ST CK;

donde:

NP ..... Número de periférico.IIII ..... Dirección del registro de inicio de la modificación.DD ..... Datos de la modificación (2 bytes por registro).ST ..... Estado del equipo.CK ..... Checksum del mensaje.

NOTA: El número máximo de registros enteros que se puedenmodificar es de 30.

# Ejemplo: Modificación de los registros 100 y 101 de la unidad 1.

MENSAJE PC A MIDA: /019701F406BB0065B3;

01 Número de periférico (1).97 Código de mensaje.01F4 Dirección del registro de inicio de la modificación (reg. 500).06BB Modificación del primer registro (reg. 500 a 1723).0065 Modificación del segundo registro (reg. 501 a 101).B3 Checksum del mensaje.

MENSAJE MIDA A PC: /01000001;

01 Número de periférico (1).00 Confirmación de la modificación OK.00 Byte de estado (no existen errores).01 Checksum del mensaje.

Page 359: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MIDABUS PC-MB 21 99.01

MENSAJE 1B:PETICION DE CONTENIDO DE REGISTROS DE 32 BITS EN COMAFLOTANTE

Mensaje 1B

Pregunta Respuesta

/NP 1B IIII NN CK; Rta. OK /NP 9B III DD... ST CK;Rta. NOK /NP FF ST CK;

donde:

NP ..... Número de periférico.IIII ..... Dirección de registro de inicio de petición.NN ..... Número de registros pedidos.DD ..... Datos de respuesta (4 bytes por registro).ST ..... Estado del equipo.CK ..... Checksum del mensaje.

NOTA: El número máximo de registros en coma flotante que sepueden pedir es de 15.El formato de los datos es IEEE de 32 bits en hexadec.

# Ejemplo: Petición del contenido 3 registros en coma flotante desde la dirección 4 de la unidad 1.

MENSAJE PC A MIDA: /011B00040323;

01 Número de periférico (1).1B Código de mensaje.0004 Dirección del registro de inicio de la petición (reg. 4).03 Número de registros en coma flotante que se demandan (3).23 Checksum del mensaje.

Page 360: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MIDABUS PC-MB 22 99.01

MENSAJE MIDA A PC:/019B0004C61C40004434E000466A6000002A;

01 Número de periférico (1).9B Respuesta a mensaje 1B.0004 Dirección del registro de inicio de la petición (reg. 4).C61C4000 Contenido del primer registro (reg. 4: -10000).4434E000 Contenido del segundo registro (reg. 5: 723.5).466A6000 Contenido del tercer registro (reg. 6: 15000).00 Byte de estado (no existen errores).2A Checksum del mensaje.

Page 361: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MIDABUS PC-MB 23 99.01

MENSAJE 9B:MODIFICACION DEL CONTENIDO DE REGISTROS DE 32 BITS ENCOMA FLOTANTE

Mensaje 9B

Pregunta Respuesta

/NP 9B IIII DD... CK; Rta. OK /NP 00 ST CK;Rta. NOK /NP FF ST CK;

donde:

NP ..... Número de periférico.IIII ..... Dirección del registro inicio de la modificación.DD ..... Datos de respuesta (4 bytes por registro).ST ..... Estado del equipo.CK ..... Checksum del mensaje.

NOTA: El número máximo de registros en coma flotante que sepueden modificar es de 15.El formato de los datos es IEEE de 32 bits en hexadec.

# Ejemplo: Modificación de los registros 100 y 101 de la unidad 1.

MENSAJE PC A MIDA: /019B006443E000000C7F1200016;

01 Número de periférico (1).9B Código de mensaje.0064 Dirección del registro de inicio de la modificación (reg.

100).3E000000 Modificación del primer registro (reg. 100 a 0.125)C7F12000 Modificación del segundo registro (reg. 101a -123456)17 Checksum del mensaje.

Page 362: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MIDABUS PC-MB 24 99.01

MENSAJE MIDA A PC: /01000001;

01 Número de periférico (1).00 Confirmación de la modificación OK.00 Byte de estado (no existen errores).01 Checksum del mensaje.

Page 363: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MIDABUS PC-MB 25 99.01

MENSAJE 18:PETICION DEL CONTENIDO DE LOS VISUALIZADORES

Mensaje 18

Pregunta Respuesta

/NP 18 LL CK; Rta. OK /NP 98 LL DD... ST CK;Rta. NOK /NP FF ST CK;

donde:

NP ..... Número de periférico.LL ..... Línea de display LCD, donde:

00 - 1ª Línea de display LCD01 - 2ª Línea de display LCD02 - 3ª Línea de display LCD03 - 4ª Línea de display LCD04 - Visualizador rojo

DD ..... Datos de respuesta (20 bytes en ASCII -HEXA).ST ..... Estado del equipo.CK ..... Checksum del mensaje.

NOTA: La opción LL es exclusivo para equipos con display LCD de 4líneas, para los demás equipos no se usa dicha opción.Sin la opción LL, los 32 primeros caracteres de la respuestacorresponden al LCD, los 12 restantes al visualizador rojo.Con la opción LL, son 20 caracteres por línea (12 para el display rojo)

# Ejemplo: Petición del contenido de los visualizadores a la unidad 1 (sin opción LL).

MENSAJE PC A MIDA: /011819;01 Número de periférico (1).18 Código de mensaje.19 Checksum del mensaje.

Page 364: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MIDABUS PC-MB 26 99.01

MENSAJE MIDA A PC:

/0198454A45435554414E444F20202020202050524F4752414D412E2E2E2020202020 2D313135303020202020202000A2;

01 Número de periférico (1).98 Respuesta a mensaje 18.454A45435554414E444F202020202020 Primera línea del LCD

’EJECUTANDO’50524F4752414D412E2E2E2020202020 Segunda línea del LCD.

’PROGRAMA...’2D3131353030202020202020 Contenido visualizador

rojo. '-11500'00 Byte de estado (no existen errores).A2 Checksum del mensaje.

# Ejemplo: Petición del contenido de la 3ª líneas del display LCD de la unidad 2(con opción LL).

MENSAJE PC A MIDA: /0218021D;

02 Número de periférico (2).18 Código de mensaje.02 Número de línea del LCD que se demanda (3).1D Checksum del mensaje.

MENSAJE MIDA A PC:

/0298022045737461646F20416C61726D613A204F46462000DF;02 Número de periférico (2).98 Respuesta a mensaje 18.02 Petición de la 3ª línea del display LCD2045737461646F20416C61726D613A204F464620

Contenido de la 3ª línea del display: " Estado Alarma:OFF "00 Byte de estado (no existen errores).DF Checksum del mensaje.

Page 365: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MIDABUS PC-MB 27 99.01

MENSAJE 98:MODIFICACIÓN DEL CONTENIDO DE LOS VISUALIZADORES

Mensaje 98

Pregunta Respuesta

/NP 98 LL CK; Rta. OK /NP 00 ST CK;Rta. NOK /NP FF ST CK;

donde:

NP ..... Número de periférico.LL ..... Línea de display LCD, donde:

05 - 1ª Línea de display LCD06 - 2ª Línea de display LCD07 - 3ª Línea de display LCD08 - 4ª Línea de display LCD09 - Visualizador rojo

DD ..... Datos de respuesta (20 bytes en ASCII -HEXA).ST ..... Estado del equipo.CK ..... Checksum del mensaje.

NOTA: La opción LL es exclusivo para equipos con display LCD de 4líneas, para los demás equipos no se usa dicha opción.Sin la opción LL, los 32 primeros caracteres de la respuestacorresponden al LCD, los 12 restantes al visualizador rojo.Con la opción LL, son 20 caracteres por línea (12 para el visualizadorrojo)

# Ejemplo: Modificación del contenido de los visualizadores LCD: 'NUMERO FORMULA? +***' y visualizador rojo:'0.0' a la unidad 1 (sin opción LL).

MENSAJE MIDA A PC:/01984E554D45524F20464F524D554C41203F202020202020

2B2A2A2A20202020202020202020302E302020202020DB;

Page 366: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MIDABUS PC-MB 28 99.01

01 Número de periférico (1).98 Respuesta a mensaje 18.4E554D45524F20464F524D554C41203F Primera línea del LCD:

’NUMERO FORMULA ?'2020202020202B2A2A2A202020202020 Segunda línea del LCD:

'+***’2D3131353030202020202020 Contenido del

visualizador rojo: 0.0''DB Checksum del mensaje.

MENSAJE MIDA A PC: /01000001;

01 Número de periférico (1).00 Confirmación de la modificación OK.00 Byte de estado (no existen errores).01 Checksum del mensaje.

# Ejemplo: Modificación del contenido de la 1ª línea del display LCD (PRIORIDAD 001)de la unidad 2(con opción LL).

MENSAJE PC A MIDA: /029800205052494F52494441442030303120202020202000C9;

02 Número de periférico (2).98 Código de mensaje.00 Número de línea del LCD que se modifica (1).205052494F524944414420303031202020202020

Modificación del LCD: " PRIORIDAD 001 "C9 Checksum del mensaje.

MENSAJE MIDA A PC: /02000002;

02 Número de periférico (2).00 Confirmación de la modificación OK.00 Byte de estado (no existen errores).02 Checksum del mensaje.

Page 367: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MIDABUS PC-MB 29 99.01

MENSAJE 9C:SIMULACIÓN DE PULSACIONES DE TECLAS

Mensaje 9C

Pregunta Respuesta

/NP 9C TTTT CK; Rta. OK /NP 00 ST CK;Rta. NOK /NP FF ST CK;

donde:

NP ..... Número de periférico.TTTT ..... Código de la tecla (relé interno según modelo).ST ..... Estado del equipo.CK ..... Checksum del mensaje.

NOTA: Los códigos de las teclas corresponden a los relés internos decada uno de estas (ver mapa de memoria del Manual Usuario de cadamodelo de MIDA).

# Ejemplo: Simulación de pulsación de la tecla <ENTER> de la unidad 1 (ej: MIDA20).

MENSAJE PC A MIDA: /019C003CD9;

01 Número de periférico (1).9C Código de mensaje.003C Código de la tecla <ENTER>D9 Checksum del mensaje.

MENSAJE MIDA A PC: /01000001;

01 Número de periférico (1).00 Confirmación de la modificación OK.00 Byte de estado (no existen errores).01 Checksum del mensaje.

Page 368: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MIDABUS PC-MB 30 99.01

MENSAJE 1D:PETICION DEL CONTENIDO DEL RELOJ INTERNO DEL EQUIPO

Mensaje 1D

Pregunta Respuesta

/NP 1D CK; Rta. OK /NP 9D SS MM HH DD mm AA WW ST CK;

Rta. NOK /NP FF ST CK;

donde:

NP ..... Número de periférico.SS ..... Segundos.MM ..... Minutos.HH ..... Horas.DD ..... Día.mm ..... Mes.AA ..... Año.WW ..... Día de la semana.ST ..... Estado del equipo.CK ..... Checksum del mensaje.

NOTA: Los datos se transmiten en formato decimal (real).

# Ejemplo: Petición del contenido del reloj interno a la unidad 1.

MENSAJE PC A MIDA: /011D1E;

01 Número de periférico (1).1D Código de mensaje.1E Checksum del mensaje.

Page 369: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MIDABUS PC-MB 31 99.01

MENSAJE MIDA A PC: /019D0030122804950400A5;

01 Número de periférico (1).9D Respuesta a mensaje 1D.00 Segundos del minuto (0s.).30 Minutos de la hora (30min.).12 Hora del día (12h.).28 Día del mes (28).04 Mes del año (abril).95 Año (1995).04 Día de la semana (viernes).00 Byte de estado (no existen errores).A5 Checksum del mensaje.

Page 370: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MIDABUS PC-MB 32 99.01

MENSAJE 9D:MODIFICACION DEL CONTENIDO DEL RELOJ INTERNO DELEQUIPO (PUESTA EN HORA)

Mensaje 9D

Pregunta Respuesta

/NP 9D SS MM HH DD mm AA WW CK;

Rta. OK /NP 00 ST CK;Rta. NOK /NP FF ST CK;

donde:

NP ..... Número de periférico.SS ..... Segundos.MM ..... Minutos.HH ..... Horas.DD ..... Día.mm ..... Mes.AA ..... Año.WW ..... Día de la semana.ST ..... Estado del equipo.CK ..... Checksum del mensaje.

NOTA: Los datos se transmiten en formato decimal (real).

# Ejemplo: Puesta en hora del reloj interno.

MENSAJE PC A MIDA: /019D00450029049505AA;

01 Número de periférico (1).9D Código de mensaje.00 Puesta en hora de segundos (0s.).45 Puesta en hora de minutos (45min.).00 Puesta en hora de hora (0h.).29 Puesta en hora de día (29).04 Puesta en hora de mes (abril).

Page 371: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MIDABUS PC-MB 33 99.01

95 Puesta en hora de año (1995).05 Puesta en hora de día de la semana (sábado).AA Checksum del mensaje.

MENSAJE MIDA A PC: /01000001;

01 Número de periférico (1).00 Confirmación de la modificación OK.00 Byte de estado (no existen errores).01 Checksum del mensaje.

Page 372: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MIDABUS PC-MB 34 99.01

MENSAJE 20:PETICION DEL FORMATO DE UN FICHERO

Mensaje 20

Pregunta Respuesta

/NP 20 nn CK; Rta. OK /NP A0 pppp rrrr nnnn tt cc dd xx ST CK;

Rta. NOK /NP FF ST CK;

donde:

NP ..... Número de periférico.nn ..... Número de fichero (0-9).pppp ..... Offset fichero.rrrr ..... Tamaño del registro.nnnn ..... Número máximo de registros.tt ..... Tipo de fichero (1-Lineal, 2-Ciclico).cc ..... Número de campos por registro.dd ..... Offset en tabla de campos.xx ..... No se utiliza.ST ..... Estado del equipo.CK ..... Checksum del mensaje.

NOTA: Este comando nos devuelve los datos más generales que nosdefine un fichero. Si 'tt' vale 0xff significa que se ha pedido laestructura de un fichero no definido en el programa de autómata.

# Ejemplo: Petición del formato de fichero 0 de la unidad 1.

MENSAJE PC A MIDA: /01200021;

01 Número de periférico (1).20 Código de mensaje.00 Petición del formato del fichero 0.21 Checksum del mensaje.

Page 373: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MIDABUS PC-MB 35 99.01

MENSAJE MIDA A PC: /01A000000015000101080AFF00BF;

01 Número de periférico (1).A0 Respuesta a mensaje 20.0000 Offset fichero (0 bytes).0015 Tamaño del registro (21 bytes).0001 Número máximo de registros (1).01 Fichero Lineal.08 Número de campos por registro (8 campos).0A Offset en tabla de campos (10).FF No se utiliza.00 Byte de estado (no existen errores).BF Checksum del mensaje.

Page 374: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MIDABUS PC-MB 36 99.01

MENSAJE 21:PETICION DEL FORMATO DE CAMPOS DE UN FICHERO

Mensaje 21

Pregunta Respuesta

/NP 21 nn cc CK; Rta. OK /NP A1 rrrr tt xx ... rrrr tt xx ST CK;Rta. NOK /NP FF ST CK;

donde:

NP ..... Número de periférico.nn ..... Offset en tabla de camposcc ..... Número de campos.rrrr ..... Registro asociado o tamaño si es de tipo Texto.tt ..... Tipo de campo (0-Rele, 1-Entero, 2-Coma Flotante,

3-Texto, 4-Fecha, 5-Hora).xx ..... No se utiliza.CK ..... Checksum del mensaje.

NOTA: Los campos de todos los ficheros están definidos en una tablade campos. El primer campo de un fichero concreto viene definido porel dato 'Offset en tabla de campos' del Mensaje 20 (Petición delformato de un fichero). El número de campos que se pueden pedirsimultáneamente son 15 como máximo.

# Ejemplo: Petición del formato de campos del fichero 0 de la unidad 1.

MENSAJE PC A MIDA: /012100082A;

01 Número de periférico (1).21 Código de mensaje.00 Offset en tabla de campos (00).08 Número de campos (8).2A Checksum del mensaje.

Page 375: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MIDABUS PC-MB 37 99.01

MENSAJE MIDA A PC:

/01A1019000FF019100FF000002FF012C01FF012D01FF002A05FF000503FF002C04FF0083;

01 Número de periférico (1).A1 Respuesta a mensaje 21.0190 Registro asociado (400).00 Tipo de campo (Relé).FF No se utiliza.0005 Registro asociado (texto de 5 caracteres)03 Tipo de campo (Texto).FF No se utiliza.0191 Registro asociado (401).00 Tipo de campo (Relé).FF No se utiliza.0000 Registro asociado (0).02 Tipo de campo (Registro Coma Flotante).FF No se utiliza.012C Registro asociado (300).01 Tipo de campo (Registro Entero).FF No se utiliza.012D Registro asociado (301).01 Tipo de campo (Registro Entero).FF No se utiliza.002A Registro asociado (42).05 Tipo de campo (Hora).FF No se utiliza.0028 Registro asociado (40).04 Tipo de campo (Fecha).FF No se utiliza.00 Byte de estado (no existen errores).83 Checksum del mensaje.

Page 376: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MIDABUS PC-MB 38 99.01

MENSAJE 22:PETICION DE UN BLOQUE DE LA MEMORIA DE FICHEROS

Mensaje 22

Pregunta Respuesta

/NP 22 pppp nn CK; Rta. OK /NP A2 NN ... NN ST CK;Rta. NOK /NP FF ST CK;

donde:

NP ..... Número de periférico.pppp ..... Offset fichero.nn ..... Petición de número de bytes.NN ..... Byte leído en hexascii.ST ..... Estado del equipo.CK ..... Checksum del mensaje.

NOTA: Lee el contenido de la memoria de ficheros directamente. Elprimer byte de un fichero concreto se encuentra en la posición definidapor 'Offset fichero' del Mensaje 20 (Petición del formato de un fichero).De esta forma si empezamos a numerar los registros del fichero apartir del cero, si deseamos leer un registro concreto debemos calcularsu offset y el número de bytes.

Offset = Registro * Tamaño_del_registro + Offset_fichero

Número_de_bytes = Tamaño_del_registro

Hay que tener en cuenta que los bloques a leer no pueden exceder los60 bytes.

Para ver el formato en que se recibe el contenido de la memoria, ir a lasección "Formato de Datos en la Memoria de Ficheros", que seencuentra al final de este capitulo.

Page 377: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MIDABUS PC-MB 39 99.01

# Ejemplo: Petición de un bloque de la memoria de ficheros de la unidad 1.

MENSAJE PC A MIDA: /01220000193C;

01 Número de periférico (1).22 Código mensaje.0000 Offset fichero (0).19 Petición de numero de bytes (25).3C Checksum del mensaje.

MENSAJE MIDA A PC:

/01A200202020202000CDCCF6426F00DE00252E0E1D0363000000000045;

01 Número de periférico (1).A2 Respuesta a mensaje 22.00 Relé 400 (0).20 20 20 20 20 Texto ( ).00 Relé 401 (0).CD CC F6 42 Registro Coma Flotante 0 (123.400).6F 00 Registro Entero 300 (111).DE 00 Registro Entero 301 (222).25 2E 0E Registro Hora (37 seg., 46 min. 14 h).1D 03 63 Registro Fecha (29, 03, 99)00 Vacío.00 Vacío.00 Vacío.00 Vacío.00 Byte de estado (no existen errores).45 Checksum del mensaje.

Page 378: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MIDABUS PC-MB 40 99.01

MENSAJE A2:GRABACION DE UN BLOQUE DE LA MEMORIA DE FICHEROS

Mensaje A2

Pregunta Respuesta

/NP A2 pppp dd ... dd CK; Rta. OK /NP 00 ST CK;Rta. NOK /NP FF ST CK;

donde:

NP ..... Número de periférico.pppp ..... Offset fichero.dd ..... Byte a grabar en la memoria.ST ..... Estado del equipo.CK ..... Checksum del mensaje.

NOTA: Grabar datos en la memoria de ficheros directamente. Elprimer byte de un fichero concreto se encuentra en la posición definidapor 'Offset fichero' del Mensaje 20 (Petición del formato de un fichero).De esta forma si empezamos a numerar los registros del fichero apartir del cero, si deseamos modificar el contenido de un registroconcreto deberemos calcular su offset y el número de bytes.

Offset = Registro* Tamaño_del_registro + Offset_fichero

Número_de_bytes = Tamaño_del_registro

Hay que tener en cuenta que los bloques a leer no pueden exceder los60 bytes.

Para ver el formato en que se envía el contenido de la memoria, ir a lasección "Formato de Datos en la Memoria de Ficheros", que seencuentra al final de este capitulo.

Page 379: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MIDABUS PC-MB 41 99.01

# Ejemplo: Grabación de un bloque de la memoria de ficheros de la unidad 1.

MENSAJE PC A MIDA:

/01A20000005041524F20FFCDCCF642D2042E160000121D036374;

01 Número de periférico (1).A2 Código de mensaje.0000 Offset fichero.00 Relé 400 (0).50 41 52 4F 20 Texto (PARO).FF Relé 401 (1).CD CC F6 42 Registro Coma Flotante 0 (123.400).D2 04 Registro Entero 300 (1234).2E 16 Registro Entero 301 (5678).00 00 12 Registro Hora (00 seg., 00 min. 18 h).1D 03 63 Registro Fecha (29, 03, 99)74 Checksum del mensaje.

MENSAJE MIDA A PC: /01000001;

01 Número de periférico (1).00 Confirmación de la modificación OK.00 Byte de estado (no existen errores).01 Checksum del mensaje.

Page 380: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MIDABUS PC-MB 42 99.01

FORMATO DE DATOS EN LA MEMORIA DE FICHEROS

TIPO RELETamaño: 1 ByteEncapsulado: FF - relé en ON

00 - relé en OFF

TIPO REGISTRO ENTEROTamaño: 2 BytesEncapsulado: Valor del registro entero directamente.

TIPO REGISTRO COMA FLOTANTETamaño: 4 BytesEncapsulado: Valor del registro coma flotante en formato IEEE.

TIPO TEXTOTamaño: Variable según se haya definido dicho campo.Encapsulado: 1 byte por carácter del texto.

TIPO HORATamaño: 3 BytesEncapsulado:

Byte 0 Bits 0..4Bits 5..7

DíaDía de la semana

Byte 1 Bits 0..7 MesByte 2 Bits 0..7 Año (00..99)

TIPO FECHATamaño: 3 BytesEncapsulado:

Byte 0 Bits 0..4 SegundosByte 1 Bits 0..5 MinutosByte 2 Bits 0..5 Hora

Page 381: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MODBUS PC-MD 1 99.01

! PROTOCOLO MODBUS EN MODO RTU

En modo RTU los mensajes empiezan con un silencio de almenos el tiempo de enviar 3.5 caracteres. Este tiempo depende de losbaudios en que se realice la comunicación.

A continuación se envía el mensaje que se compone cuatro partesnúmero de periférico, comando, datos y CRC.

El final de mensaje se indica con otro silencio de 3.5 caracteres.

Inicio Nº Periférico Comando Datos CRC Final

Silencio 8 bits 8 bits n × 8 bits 16 bits Silencio

! NÚMERO DE PERIFÉRICO

El protocolo MODbus admite direcciones validas del 0 al 247decimal. Reservándose la dirección 0 para broadcasting (transmitirordenes a todos los periférico a la vez). La familia de equipos MIDAsolo admite direcciones validas del 0 al 99.

! COMANDO

Los comandos validos van del 1 al 255 decimal. En la familiaMIDA se han implementado los siguientes comandos:

Comando Descripción

Comando 01 y 02 Lectura de relés en compactadoComando 03 y 04 Lectura de registros enterosComando 05 Escritura de un reléComando 06 Escritura de un registro enteroComando 0F Escritura de múltiples relés en compactadoComando 10 Escritura de múltiples registros enteros

Page 382: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MODBUS PC-MD 2 99.01

COMANDO 01 y 02:

LECTURA DE RELÉS EN COMPACTADO

FORMATO:

Pregunta Ejemplo (Hex)*Nº Periférico 63Comando 01Dirección de inicio (Hi) 00Dirección de inicio (Lo) FANº de relés (Hi) 00Nº de relés (Lo) 10CRC (Lo) 15CRC (Hi) B5

(*) Pedir 16 relés a partir del 250 al periférico 99.

Respuesta Ejemplo (Hex)Nº Periférico 63Comando 01Nº Bytes de datos 02Dato 0 (relés 257-250) 6BDato 1 (relés 265-258) 5CCRC (Lo) 6FCRC (Hi) 3D

Page 383: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MODBUS PC-MD 3 99.01

COMANDO 03 y 04:

LECTURA DE REGISTROS ENTEROS

FORMATO:

Pregunta Ejemplo (Hex)*Nº Periférico 63Comando 03Dirección de inicio (Hi) 00Dirección de inicio (Lo) FANº de registros (Hi) 00Nº de registros (Lo) 02CRC (Lo) ECCRC (Hi) 78

(*) Pedir 2 registros enteros partir del 250 al periférico 99

Respuesta Ejemplo (Hex)*

Nº Periférico 63Comando 03Nº Bytes de datos 04Dato (Hi) (Reg. 250) 6BDato (Lo) (Reg. 250) 5CDato (Hi) (Reg. 251) 00Dato (Lo) (Reg. 251) 01CRC (Lo) A4CRC (Hi) 03

Page 384: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MODBUS PC-MD 4 99.01

COMANDO 05:

ESCRITURA DE UN RELÉ:FF00 – Relé ON0000 – Relé OFF

FORMATO:

Pregunta Ejemplo (Hex)*Nº Periférico 63Comando 05Dirección de inicio (Hi) 00Dirección de inicio (Lo) FAValor del relé (Hi) FFValor del relé (Lo) 00CRC (Lo) A4CRC (Hi) 49

(*) Activar el relé 250 a ON del periférico 99.

Respuesta Ejemplo (Hex)Nº Periférico 63Comando 05Dirección de inicio (Hi) 00Dirección de inicio (Lo) FAValor del relé (Hi) FFValor del relé (Lo) 00CRC (Lo) A4CRC (Hi) 49

Page 385: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MODBUS PC-MD 5 99.01

COMANDO 06:

ESCRITURA DE UN REGISTRO ENTERO

FORMATO:

Pregunta Ejemplo (Hex)*Nº Periférico 63Comando 06Dirección de inicio (Hi) 00Dirección de inicio (Lo) FAValor del registro (Hi) 03Valor del registro (Lo) E8CRC (Lo) A1CRC (Hi) 07

(*) Escribir el registro 250 a 1000 del periférico 99.

Respuesta Ejemplo (Hex)

Nº Periférico 63Comando 06Dirección de inicio (Hi) 00Dirección de inicio (Lo) FAValor del registro (Hi) 03Valor del registro (Lo) E8CRC (Lo) A1CRC (Hi) 07

Page 386: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MODBUS PC-MD 6 99.01

COMANDO 0F:

ESCRITURA DE MULTIPLES RELÉS EN COMPACTADO

FORMATO:

Pregunta Ejemplo (Hex)*

Nº Periférico 63Comando 0FDirección de inicio (Hi) 00Dirección de inicio (Lo) FANº de relés (Hi) 00Nº de relés (Lo) 10Nº Bytes de datos 02Dato 0 (relés 257-250) 6BDato 1 (relés 265-258) 5CCRC (Lo) 68CRC (Hi) 11

(*) Forzar 16 relés a partir del 250 al periférico 99.

Respuesta Ejemplo (Hex)

Nº Periférico 63Comando 0FDirección de inicio (Hi) 00Dirección de inicio (Lo) FANº de relés (Hi) 00Nº de relés (Lo) 10CRC (Lo) 7CCRC (Hi) 74

Page 387: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MODBUS PC-MD 7 99.01

COMANDO 10:

ESCRITURA DE MÚLTIPLES REGISTROS ENTEROS

FORMATO:

Pregunta Ejemplo (Hex)*

Nº Periférico 63Comando 10Dirección de inicio (Hi) 00Dirección de inicio (Lo) FANº de registros (Hi) 00Nº de registros (Lo) 02Nº Bytes de datos 04Dato (Hi) (Reg. 250) 6BDato (Lo) (Reg. 250) 5CDato (Hi) (Reg. 251) 00Dato (Lo) (Reg. 251) 01CRC (Lo) 94CRC (Hi) DB

(*) Forzar 2 registros enteros a partir del 250 del periférico 99

Respuesta Ejemplo (Hex)Nº Periférico 63Comando 10Dirección de inicio (Hi) 00Dirección de inicio (Lo) FANº de registros (Hi) 00Nº de registros (Lo) 02CRC (Lo) 69CRC (Hi) BB

Page 388: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MODBUS PC-MD 8 99.01

! CRC

El CRC (Cyclical Redundancy Check) sirve para verificar que elmensaje haya llegado correcto y se ha de añadir a todos los mensajesque se envíen y verificar en todos los mensajes que se reciban.Cuando un equipo recibe un mensaje con CRC incorrecto no contesta(se deberá repetir la pregunta al cabo de cierto tiempo) y si larespuesta recibida no tiene el CRC correcto se deberá repetir lapregunta.

A continuación se incluyen dos rutinas diferentes (lenguaje C)para calcular el CRC. La primera es más corta y lenta y la segunda esmuy rápida pero larga.

RUTINA 1

unsigned int crc(unsigned char *dat,int nudat){int n;unsigned int CRC=0xffff;unsigned int CRCO;

while(nudat--){

CRC=CRC^*dat++;for (n=0;n<8;n++)

{CRCO=CRC;CRC>>=1;if (CRCO&1) CRC^=0xa001;}

}return(CRC);}

Page 389: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MODBUS PC-MD 9 99.01

RUTINA 2

unsigned char thi[256]={0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40,0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40,0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40,0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40,0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40,0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40,0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40,0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40,0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40,0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40,0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40};

unsigned char tlo[256]={0x00,0xc0,0xc1,0x01,0xc3,0x03,0x02,0xc2,0xc6,0x06,0x07,0xc7,0x05,0xc5,0xc4,0x04,0xcc,0x0c,0x0d,0xcd,0x0f,0xcf,0xce,0x0e,0x0a,0xca,0xcb,0x0b,0xc9,0x09,0x08,0xc8,0xd8,0x18,0x19,0xd9,0x1b,0xdb,0xda,0x1a,0x1e,0xde,0xdf,0x1f,0xdd,0x1d,0x1c,0xdc,0x14,0xd4,0xd5,0x15,0xd7,0x17,0x16,0xd6,0xd2,0x12,0x13,0xd3,0x11,0xd1,0xd0,0x10,0xf0,0x30,0x31,0xf1,0x33,0xf3,0xf2,0x32,0x36,0xf6,0xf7,0x37,0xf5,0x35,0x34,0xf4,0x3c,0xfc,0xfd,0x3d,0xff,0x3f,0x3e,0xfe,0xfa,0x3a,0x3b,0xfb,0x39,0xf9,0xf8,0x38,0x28,0xe8,0xe9,0x29,0xeb,0x2b,0x2a,0xea,0xee,0x2e,0x2f,0xef,0x2d,0xed,0xec,0x2c,0xe4,0x24,0x25,0xe5,0x27,0xe7,0xe6,0x26,0x22,0xe2,0xe3,0x23,0xe1,0x21,0x20,0xe0,0xa0,0x60,0x61,0xa1,0x63,0xa3,0xa2,0x62,0x66,0xa6,0xa7,0x67,0xa5,0x65,0x64,0xa4,0x6c,0xac,0xad,0x6d,0xaf,0x6f,0x6e,0xae,0xaa,0x6a,0x6b,0xab,0x69,0xa9,0xa8,0x68,0x78,0xb8,0xb9,0x79,0xbb,0x7b,0x7a,0xba,0xbe,0x7e,0x7f,0xbf,0x7d,0xbd,0xbc,0x7c,0xb4,0x74,0x75,0xb5,0x77,0xb7,0xb6,0x76,0x72,0xb2,0xb3,0x73,0xb1,0x71,0x70,0xb0,0x50,0x90,0x91,0x51,0x93,0x53,0x52,0x92,0x96,0x56,0x57,0x97,0x55,0x95,0x94,0x54,0x9c,0x5c,0x5d,0x9d,0x5f,0x9f,0x9e,0x5e,0x5a,0x9a,0x9b,0x5b,0x99,0x59,0x58,0x98,0x88,0x48,0x49,0x89,0x4b,0x8b,0x8a,0x4a,0x4e,0x8e,0x8f,0x4f,0x8d,0x4d,0x4c,0x8c,0x44,0x84,0x85,0x45,0x87,0x47,0x46,0x86,0x82,0x42,0x43,0x83,0x41,0x81,0x80,0x40};

Page 390: Manual Tecnico de Programacion Plc PDF

PROTOCOLO MODBUS PC-MD 10 99.01

unsigned int crc(unsigned char *dat,int nudat){unsigned char CRClo=0xff;unsigned char CRChi=0xff;unsigned int ind;

while(nudat--){ind=CRClo^*dat++;CRClo=CRChi^thi[ind];CRChi=tlo[ind];}

return(((unsigned int)CRChi<<8)|CRClo);}

Page 391: Manual Tecnico de Programacion Plc PDF

PROTOCOLO LIBRE PC-PL 1 99.01

Los equipos MIDA (según modelos) disponen de unasinstrucciones, registros y relés para la recepción y transmisión decadenas ASCII. Dicho protocolo lo denominamos Protocolo Libre.

El Protocolo Libre solamente tiene funcionalidad en el puerto decomunicaciones RS232 de los equipos MIDA. Por lo que es unprotocolo punto a punto, no funcionando en redes 485.

! Configuración del Set-up.

En el set-up de los equipos que incorporan el protocolo libredisponemos de cuatro parámetros para configurarlo, (los dos primerosvarían según del modelo de MIDA):

" Protocolo COM: Donde indicaremos que protocolo tienepor defecto el MIDA cada vez que sé inicialice este (solopara equipos que disponen de puerto de comunicacionesRS232 y este no es configurable a RS485).

" Protocolo Libre: Donde indicaremos en que puerto decomunicaciones tenemos configurado como RS232 yqueremos activar el Protocolo Libre (solo para equipos quedisponen de puertos de comunicaciones RS232 y estos sonconfigurables a RS485).

" Carácter Inicial: Donde indicaremos el carácter inicial demensaje.

" Carácter Final: Donde indicaremos el carácter final delmensaje.

" Longitud Mensaje: Donde indicaremos la longitud delmensaje de recepción.

NOTA:El parámetro 0 como carácter de inicio o final, indica la ausencia

del mismo.El parámetro 0 como la longitud del mensaje de recepción

indicará que no se verifique la misma. Si se pone una longitud mayorde 132 (tamaño máximo de buffer) se perderán los últimos caracteres.

Page 392: Manual Tecnico de Programacion Plc PDF

PROTOCOLO LIBRE PC-PL 2 99.01

! Relés y registros

Los equipos MIDA con Protocolo Libre disponen de un relé y deun registro entero para la gestión para dicho protocolo (ver mapa dememoria del Manual de Usuario del equipo):

" Mensaje Completo (relé): Dicho relé se activará cuando enel buffer de recepción hay un mensaje para ser tratado.

" Activa Protocolo Libre (relé): Con este relé se puedeactivar y desactivar el Protocolo Libre.

" Longitud Mensaje Recepción (registro entero): Indica loscaracteres que hay actualmente almacenados en el bufferde recepción.

! Funcionamiento

Si tenemos configurado el puerto de comunicaciones RS232 enmodo Protocolo Libre, (quedará desactivado el protocolo MIDAbus),este funcionara de la siguiente forma:

" Si el carácter de inicio es diferente de cero al recibirlo se inicializael buffer de recepción y se guarda dicho carácter. Se activara elrelé de RX y el registro entero de Longitud de Mensaje deRecepción se pondrá a 1.

" Si el carácter de inicio es cero, el primer carácter que se recibatras tratar el mensaje inicializará el buffer de recepción y seguardará. Esto activará el relé de RX y el registro entero deLongitud de Mensaje de Recepción se pondrá a 1.

" Si el carácter de final es diferente de cero, al recibir un carácter definal se activará el relé de Mensaje Completo y desactivará larecepción hasta que el mensaje no sea tratado.

" Si se llega a la longitud de mensaje programada en el set-up, seactivará el relé de Mensaje Completo y desactivará la recepciónhasta que el mensaje no sea tratado.

" En el caso de tener carácter de inicio y longitud programada,puede ocurrir el caso de que se active el relé de Mensajecompleto y sin que el relé de RX este activado. Esto implica quese ha recibido un mensaje de la longitud programada sin haber

Page 393: Manual Tecnico de Programacion Plc PDF

PROTOCOLO LIBRE PC-PL 3 99.01

recibido previamente el carácter de inicio, es trabajo del programadel usuario el actuar en consecuencia.

La rutina de transmisión con Protocolo Libre funciona igual quesin dicho protocolo, salvo que añade al final del mensaje el carácterCARRY RETURN (13 dec).

NOTA: Cada puerto de comunicaciones tiene un único buffer paratransmitir y recibir, por lo que si durante la recepción de un mensajetransmitimos por dicho puerto, perderemos lo recibido hasta elmomento. Al iniciarse la recepción se activa el relé de RX y, por tanto,debería ser consultado antes de realizar una transmisión si no sequiere perder mensajes.

! Activar y desactivar el Protocolo Libre

Existe un relé (Activa Protocolo Libre) para poder activar ydesactivar por programa el Protocolo Libre, de forma que se puedatrabajar con dicho protocolo y en un cierto punto del programa cambieal funcionamiento normal (MIDAbus).

En el caso de tener activado el Protocolo Libre (el relé estaráactivado) si desactivamos el relé, desactivaremos dicho protocolo. Silo volvemos a activar, reactivaremos el Protocolo Libre.Si reactivamos el Protocolo Libre hay que tener cuidado con la basuraque pueda haber quedado en el buffer de recepción, un buen consejoes ejecutar inmediatamente la instrucción "COM 9" para leer posiblebasura y reinicializar el buffer de recepción.

En los equipos MIDA en donde el puerto de comunicacionesRS232 puede ser configurable a RS485, el relé Activa Protocolo Libre,no funcionara al menos de que se halla activado dicho protocolomediante el set-up del equipo. Por lo contrario en los equipos que elpuerto de comunicaciones RS232 no puede ser configurados aRS485, el relé Activa Protocolo Libre funciona independientemente delset-up del equipo, por lo que podemos activarlo mediante el set-up opor programa usuario.

Page 394: Manual Tecnico de Programacion Plc PDF

PROTOCOLO LIBRE PC-PL 4 99.01

DISB XXXX YYYY

NEMÓNICO: DISBOPERANDO XXXX: Define la base en que se escribe el número.OPERANDO YYYY: Numero de caracteres a escribir.CÓDIGO INSTRUCCIÓN: 82

DESCRIPCIÓN:Escribe sobre el buffer general un número almacenado sobre la pilaaritmética, a partir de la posición apuntada por la instrucción LOC.El operando XXXX indica el tipo de base que se escribe en el buffer:

0 – En binario.1 – En Octal (0..177777).2 – En decimal. (0..65536).3 – En hexadecimal (0..FFFF).4 – En BCD.

El operando YYYY indica el número de caracteres a escribir, de 1 a6.Decrementa un nivel la pila aritmética (-1).

# Ejemplos:

Pila Aritmética Instrucción Buffer6565656565167061670616706167061670616706

DISB 0 1DISB 1 4DISB 2 4DISB 3 4DISB 4 1DISB 0 1DISB 0 2DISB 1 6DISB 1 5DISB 1 4DISB 2 6

‘A’‘0101’‘0065’‘0041’‘e’ Carácter 65H‘B’ Carácter 42H‘AB’ Caracteres 41H42H‘040502’‘40502’‘0502’‘016706’

DISB

Page 395: Manual Tecnico de Programacion Plc PDF

PROTOCOLO LIBRE PC-PL 5 99.01

167061670616706167061670616706167061670616706

DISB 2 5DISB 2 4DISB 3 6DISB 3 5DISB 3 4DISB 3 3DISB 4 3DISB 4 2DISB 4 1

‘16706’‘6706’‘004142’‘04142’‘4142’‘142’Caracteres 01H67H06HCaracteres 67H06HCarácter 06H

Page 396: Manual Tecnico de Programacion Plc PDF

PROTOCOLO LIBRE PC-PL 6 99.01

LECB XXXX YYYY

NEMÓNICO: LECBOPERANDO XXXX: Define la base en que se lee el número.OPERANDO YYYY: Numero de caracteres a leer.CÓDIGO INSTRUCCIÓN: 83

DESCRIPCIÓN:

Lee del buffer general, a partir de la posición apuntada por lainstrucción LOC, un número y lo almacena sobre la pila aritmética.El operando XXXX indica el tipo de base que se lee del buffer:

0 – En binario.1 – En Octal (0..177777).2 – En decimal. (0..65536).3 – En hexadecimal (0..FFFF).4 – En BCD.

El operando YYYY indica el número de caracteres a leer, de 1 a 6.Incrementa un nivel la pila aritmética (+1).

# Ejemplo:

Buffer Instrucción Pila Aritmética‘A’‘0101’‘0065’‘0041’‘e’ Carácter 65H‘AB’ Caracteres 41H42H‘AB’ Caracteres 41H42H‘040502’‘040502’‘040502’‘016706’‘016706’‘016706’

LECB 0 1LECB 1 4LECB 2 4LECB 3 4LECB 4 1LECB 0 1LECB 0 2LECB 1 6LECB 1 5LECB 1 4LECB 2 6LECB 2 5LECB 2 4

6565 = 101OCT6565 = 41H6565 = 41H16706 = 4142H16706 = 040502OCT2088 = 04050OCT261 = 0405OCT016706016700167

LECB

Page 397: Manual Tecnico de Programacion Plc PDF

PROTOCOLO LIBRE PC-PL 7 99.01

‘4142’‘4142’‘4142’Caracteres 01H67H06HCaracteres 01H67H06HCaracteres 01H67H06H

LECB 3 4LECB 3 3LECB 3 2LECB 4 3LECB 4 2LECB 4 1

16706 = 4142H1044 = 414H65 = 41H016706016701

Es responsabilidad del programa de autómata que el númeroleído quepa en un registro entero (16 bits), en caso contrario elresultado puede ser impredecible.

Al guardar el número leído sobre la pila aritmética será tratadocomo un entero con signo, lo cual significa que si el número escritosobre el buffer es mayor de 32767 al ser guardado sobre la pilatendremos el número negativo correspondiente. Por ejemplo si en elbuffer tenemos un 65535 en decimal o un FFFF en hexadecimal, en lapila se almacenará un –1.

Page 398: Manual Tecnico de Programacion Plc PDF

PROTOCOLO LIBRE PC-PL 8 99.01

COM XXXX

NEMÓNICO: COMOPERANDO XXXX: Constante 9.CÓDIGO INSTRUCCIÓN: 80

DESCRIPCIÓN:

Copia el contenido actual de buffer de recepción sobre el buffergeneral, para poder ser leído con LECB y escrito con DISB.El operando XXXX es la constante 9,para indicar al puerto decomunicaciones que es una comunicación utilizando las rutinas deProtocolo Libre.No opera con las pilas (0)

Los pasos que efectúa la instrucción COM 9 son:

" Copia sobre el buffer general el contenido del buffer de recepción." Desactiva el relé de RX." Desactiva el relé de Mensaje Completo." Pone a cero el registro entero de Longitud de Mensaje." Se ejecuta un LOC 0.

El relé de RX ha permanecido activado hasta ahora, indicandoque todavía estamos en el proceso de recepción y que sitransmitiéramos un mensaje perderíamos el contenido del buffer derecepción.

El relé de Mensaje Completo nos indica que el mensaje estalisto para ser pasado del buffer de recepción al buffer general (ejecutarla instrucción COM 9). También inhabilita la recepción de nuevosmensajes para no perder el mensaje recibido. Al realizar la instrucciónCOM 9 se desactiva dicho relé y esta forma se habilita el puerto decomunicaciones para recibir nuevos mensajes. También se podríahabilitar y deshabilitar dicho puerto mediante un SET o un RESET delrelé.

COM

Page 399: Manual Tecnico de Programacion Plc PDF

PROTOCOLO LIBRE PC-PL 9 99.01

El registro entero de Longitud de Mensaje de RX se pone 0 alejecutar la instrucción COM 9, por lo que si fuera necesario utilizardicho valor para el tratamiento del mensaje se debería salvar en algúnregistro antes de utilizar dicha instrucción.

Page 400: Manual Tecnico de Programacion Plc PDF

PROTOCOLO LIBRE PC-PL 10 99.01

.

Page 401: Manual Tecnico de Programacion Plc PDF

TE

Page 402: Manual Tecnico de Programacion Plc PDF

.

Page 403: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO DE ERRORES TE-RE 1 02.04

! ERRORES EN TIEMPO DE EJECUCIÓN

Los errores en tiempo de ejecución son aquéllos que seproducen mientras el programa usuario del MIDA está ejecutándose.Una vez compilado y transferido el programa al equipo sin errorescomienza la ejecución del mismo. Este capitulo trata de la descripciónde los errores que se detectan mientras se ejecuta el programa.

Se puede realizar un programa que sintácticamente estécorrectamente escrito y que por lo tanto su compilación no produzcaerrores, pero que una vez enviado al MIDA no funcione correctamenteó hasta incluso produzca errores y defectos en el funcionamiento delequipo (autoreset, paradas, etc). Cuando esto ocurra habrá queproceder de la forma que se describe a continuación testeando cadauna de las posibilidades que se van a describir en este apartado.Existen varios tipos de errores:

TIPO DE ERROR ELEMENTO QUE LO DETECTA

De Software Relés de errores.

De Hardware Registros enteros de errores

De Comunicaciones Byte de status del Protocolo MIDAbus

De estado de los puertosde comunicaciones

Relés de estado de los puertos decomunicaciones

NOTA: Según el modelo de MIDA con el que estemos trabajando,tendremos unos reles/registros determinados de errores o estado.Para ver de cuales disponemos, observaremos el Mapa de Memoriacontenido en el Manual de Usuario del equipo correspondiente.

Page 404: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO DE ERRORES TE-RE 2 02.04

! ERRORES DE SOFTWARE

Estos se producen cuando el responsable de los errores es elprograma usuario del MIDA, por estar mal escrito, mal planteado, etc.

El equipo cada vez que ejecuta la instrucción END inicializa losniveles de las pilas lógica, aritmética y de subrutinas, y actualiza losrelés de errores para impedir una detención de la ejecución delprograma.Esto permite que el equipo no se detenga y que ejecute la parte deprograma en buenas condiciones, pero no garantiza en absoluto quela instalación funcione correctamente.

Existen una serie de relés internos que indican en todomomento los errores que se han detectado al ejecutarse la instrucciónEND.

El equipo activa los relés internos de errores cada vez que seejecuta la instrucción END, por lo tanto si no se ejecuta estainstrucción los relés de errores no se activan nunca.Una vez activado algún relé de error, éste no se desactiva más quepor una desactivación sobre el relé pertinente por parte del usuario,por un reset ó puesta en tensión del equipo. Es decir que si un errordesapareciese, su relé pertinente no se desactivaría hasta queefectuaríamos una de las acciones antes mencionadas.Los relés de errores del equipo son:

Page 405: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO DE ERRORES TE-RE 3 02.04

Error Relé Batería

Es un relé que indica el fallo de la batería de Ni-Cd quepreserva los datos contenidos en la memoria RAM y del reloj internodel equipo.Se puede operar con él como cualquier otro relé interno.

Estado del relé Estado detectado del error1 Batería en buen estado.0 Fallo en batería (avería ó baja carga ).

El fallo detectado de la batería es debido a un defecto dehardware: la carga de la batería ha rebasado un límite mínimo ó bienque se encuentra en mal estado.

Para comprobar el estado de la batería, ponemos el reloj enhora y dejamos el equipo MIDA desconectado unos minutos.Volvemos a conectar el equipo y comprobamos la hora, si esta no esla correcta, la batería es defectuosa.

Error de División por Cero

Se produce cuando el programa MIDA ha intentado realizar unadivisión por cero.Se puede operar con él como cualquier otro relé interno.

Estado del relé Estado detectado del error0 No existe error.1 Existe algún intento de división por cero.

Debe revisarse el programa para detectar el punto donde seejecuta este intento de división por cero y subsanar este error.La operación de división puede dar un resultado inesperado.

Page 406: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO DE ERRORES TE-RE 4 02.04

Error de rebasamiento aritmético (overflow)

Se produce cuando el programa MIDA ha intentado realizar unaoperación aritmética cuyo resultado es superior a la capacidad decálculo del equipo.Se puede operar con él como cualquier otro relé interno.

Estado del relé Estado detectado del error0 No existe error.

1Existe alguna operación aritmética cuyoresultado excede de la capacidad decálculo del equipo.

Debe revisarse el programa para detectar el punto donde seejecuta este cálculo aritmético y subsanar el error.

La operación aritmética puede dar un resultado inesperado.

Error de pila lógica

Se produce cuando existe un desequilibrio entre cargas ydescargas sobre la pila lógica del equipo.Se puede operar con él como cualquier otro relé interno.

Estado del relé Estado detectado del error0 No existe error.

1Existe algún desequilibrio entre cargas ydescargas sobre la pila lógica delequipo).

Debe revisarse el programa para detectar el punto donde seproducen estos desequilibrios.

Page 407: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO DE ERRORES TE-RE 5 02.04

Error de pila aritmética

Se produce cuando existe un desequilibrio entre cargas ydescargas sobre la pila aritmética del equipo.Se puede operar con él como cualquier otro relé interno.

Estado del relé Estado detectado del error0 No existe error.

1Existe algún desequilibrio entre cargas ydescargas sobre la pila aritmética delequipo).

Debe revisarse el programa para detectar el punto donde se producenestos desequilibrios.

Error de pila de subrutinas

Se produce cuando existe un desequilibrio entre las llamadas asubrutinas y los retornos de las mismas.Este error se produce cuando se realiza una llamada a una subrutina yesta no termina con la instrucción de retorno (RET).Se puede operar con él como cualquier otro relé interno.

Estado del relé Estado detectado del error0 No existe error.

1 Existe algún desequilibrio entre llamadas yretornos a subrutinas).

Debe revisarse el programa para detectar el punto donde seproducen estos desequilibrios.

Page 408: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO DE ERRORES TE-RE 6 02.04

! ERRORES DE HARDWARE

En el mapa de memoria del equipo existen unos registros dedetección de errores que indican todas las posibles incidencias quepueden ocurrir al poner en marcha el equipo y/ó durante la ejecuciónde programas MIDA.

Los errores que se indican en estos registros son en principiolos que se pueden producir en el hardware del equipo base y losmódulos o cartas de ampliaciones (módulos mal insertados ó malparametrizados, memorias EPROM ó EEPROM en mal estado, etc.),aunque también se indican algunos producidos por la ejecución delprograma MIDA, lo cual es redundante con la información que dan losrelés de detección de errores descritos anteriormente.

Como decimos, el contenido de estos registros indica el (ó los)error/es detectado/s mediante una codificación que se va a describir.Estos registros son accesibles tanto para el programa MIDA comopara un PC conectado vía serie. De esta manera pueden ejecutarserutinas de tratamiento de errores tanto en el mismo equipo como en unPC central avisando al usuario de los problemas detectados.

El equipo señaliza los errores detectados activando bits deestos registros. Cada bit indica un tipo de error diferente y cadaregistro puede detectar más de un error.El contenido del registro indica los errores que se han detectado.

El equipo señaliza los errores detectados activando bits deestos registros cada vez que se ejecuta la instrucción END, por lotanto si no se ejecuta esta instrucción los registros de errores no seactualizan nunca.

Una vez activado algún bit de registro de error, éste no sedesactiva más que por una acción por parte del usuario ó puesta entensión del equipo. Es decir que si un error desapareciese, el registropertinente no se actualizará hasta que efectuaríamos una de lasacciones antes mencionadas.

Unicamente se actualizará automáticamente el bit B1 de ErroresGenerales y los bits de Errores de Cartas de los equipos quedispongan dichos errores.

A continuación se describe la decodificación del contenido deestos registros así como los errores que se detectan:

Page 409: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO DE ERRORES TE-RE 7 02.04

Registro Descripción

Errores General

Registro general de detección de errores.Pueden ser producidos por un fallo en la cartamicroprocesadora, por algún fallo en losmódulos o cartas de ampliación ó el programausuario del MIDA.En su codificación puede determinarse lanaturaleza del error.

Errores Placa Base

Registro de errores detectados en la cartabásica del equipo MIDA.En este registro se detecta cualquier error quese produzca en esta carta.

Errores Cartas Registro de detección de errores en el móduloo carta de ampliación.

NOTA: Según el modelo de MIDA con el que estemos trabajando,tendremos diferentes bits de errores determinados en los registros deerrores. Para ver de cuales disponemos, observaremos el Manual deUsuario del equipo correspondiente.

Registro Errores General

Indica los errroresRegistro de 2 bytes (16 bits) (X = bit no usado):

7 6 X X 3 2 1 0 7 6 5 4 3 2 1 0

BYTE ALTO BYTE BAJO

Page 410: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO DE ERRORES TE-RE 8 02.04

BITValor

enHex.

Pesoen

DecTipo de error y solución

b0 0001 1

Se ha pedido una acción al equipo que noes posible ejecutarla por estar el programaMIDA en marcha.Este error se produce sólo cuando serealizan peticiones mediante los Protocolosde Comunicaciones.Se debe eliminar esta petición ó biendetener la ejecución del programa MIDA.

b1 0002 2

Se ha producido un error en las variablesdemandas mediante el protocolo decomunicaciones.Revisar variables demandas en el mensajede comunicaciones.

b2 0004 4

Se ha intentado leer ó escribir en la Basede Datos fuera de los márgenes.Revisar las definiciones de los Ficheros dela Base de Datos del equipo (Directiva deCompilador "FILE").

b3 0008 8

Se ha intentado leer ó escribir fuera de losmárgenes del mapa de memoria disponibleen el equipo mediante el programa usuario.Revisar el programa MIDA.En especial las instrucciones dedireccionamiento indirecto.

b4 0010 16

Se ha intentado realizar una división porcero ó una operación aritmética que harebasado la capacidad de cálculo delequipo.Revisar el programa usuario MIDA

Page 411: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO DE ERRORES TE-RE 9 02.04

BITValor

enHex.

Pesoen

DecTipo de error y solución

b5 0020 32

Se ha detectado algún error dedesequilibrio de pilas (lógica, aritmética óde subrutinas).Revisar el programa MIDA

b6 0040 64

Se ha producido un error de Checksum enla EPROM FLASH.Se debe reiniciar el equipo. Si el errorpersiste, ponerse en contacto con el S.A.T.

b7 0080 128

Se ha producido un error de lectura óescritura en la EEPROM.Se debe reiniciar el equipo. Si el errorpersiste, ponerse en contacto con el S.A.T.

B0 0100 256

Se ha detectado un error en algúnmicroprocesador de control de algúnmódulo o carta de ampliación.Revisar que el equipo reconozca todos losmódulos y cartas insertados (mensaje deinicialización) para detectar posibles fallosde instalación ó parametrización de losmismos. También comprobar el registroentero de Errores de Cartas para ver quetipo de error nos indica.Si tras esta revisión no se detectavisualmente el error ó si este persiste,ponerse en contacto con el S.A.T.

B1 0200 512

Se ha detectado un error de acceso aldisplay LCD.Se debe reiniciar el equipo.Si tras reiniciar el equipo persiste el error,ponerse en contacto con el S.A.T.

* S.A.T.: Servicio de Asistencia Técnica.

Page 412: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO DE ERRORES TE-RE 10 02.04

BITValor

enHex.

Pesoen

DecTipo de error y solución

B2 0400 1024

Se ha detectado un error de acceso alreloj del equipo MIDA.Se debe reiniciar el equipo.Si tras reiniciar el equipo persiste el error,ponerse en contacto con el S.A.T.

B3 0800 2048

No se detecta Módem o instrucción ATincorrecta.Comprobar cableado y configuración delmódem.Revisar en el programa las llamadas a lainstrucción AT.Ver apartado “Tratamiento Errores Módem”en el capitulo “Tratamiento Módem”

B6 4000 16384

Se ha detectado un fallo decomunicaciones entre losmicroprocesadores de los módulos o cartasde ampliación y el microprocesador decontrol de dichos módulos o cartas.Revisar que el equipo reconozca todos losmódulos y cartas insertados (mensaje deinicialización) para detectar posibles fallosde instalación ó parametrización de losmismos.Si tras esta revisión no se detectavisualmente el error ó si este persiste,ponerse en contacto con el S.A.T.

Page 413: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO DE ERRORES TE-RE 11 02.04

BITValor

enHex.

Pesoen

DecTipo de error y solución

B7 8000 32768

Se ha detectado algún módulo o carta deampliación con número de periféricorepetido.Revisar que el equipo reconozca todos losmódulos insertados (mensaje deinicialización) para detectar posibles fallosde instalación ó parametrización de losmismos.Si tras esta revisión no se detectavisualmente el error ó si este persiste,ponerse en contacto con el S.A.T.

* S.A.T.: Servicio de Asistencia Técnica.

Los bits B4 y B5 no tienen utilización en este registro.Si se detectan varios errores al mismo tiempo, el registro tomará

el valor correspondiente a la suma de los pesos descritos en lacolumna PESO EN DECIMAL de la tabla.

Page 414: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO DE ERRORES TE-RE 12 02.04

Registro Errores Placa Base

Registro de 2 bytes (16 bits) (X = bit no usado):

X X X X X X X X X 6 X X 3 2 1 0

BYTE ALTO BYTE BAJO

BITValor

enHex.

Pesoen

DecTipo de error y solución

b0 0001 1

El PIC-Master no admite o no reconocealgún modulo o carta de ampliaciónconectado.Revisar que el equipo reconozca todos losmódulos insertados (mensaje deinicialización) para detectar posibles fallosde instalación ó parametrización de losmismos.Si tras esta revisión no se detectavisualmente el error ó si este persiste,ponerse en contacto con el S.A.T.

b1 0002 2

No hay suficiente RAM del PIC-Masterpara gestionar mas módulos o cartas deampliación.Se debe reiniciar el equipo.Si tras reiniciar el equipo persiste el error,ponerse en contacto con el S.A.T.

b2 0004 4

Error de comunicación del PIC-Master conel conversor A/D de algún modulo o cartade ampliación.Se debe reiniciar el equipo.Si tras reiniciar el equipo persiste el error,ponerse en contacto con el S.A.T.

Page 415: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO DE ERRORES TE-RE 13 02.04

BITValor

enHex.

Pesoen

DecTipo de error y solución

b3 0008 8Error interno de software.Se debe reiniciar el equipo.Si tras reiniciar el equipo persiste el error,ponerse en contacto con el S.A.T.

b6 0040 64

Se ha detectado algún módulo o carta deampliación con número de periféricorepetido.Revisar que el equipo reconozca todos losmódulos insertados (mensaje deinicialización) para detectar posibles fallosde instalación ó parametrización de losmismos.Si tras esta revisión no se detectavisualmente el error ó si este persiste,ponerse en contacto con el S.A.T.

Page 416: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO DE ERRORES TE-RE 14 02.04

Registro Errores Cartas

Registro de 2 bytes (16 bits) (X = bit no usado):

X X X X X X X X X X X X 3 2 1 0

BYTE ALTO BYTE BAJO

BITValor

enHex.

Pesoen

DecTipo de error y solución

b0 0001 1

Modelo de carta no admitido o no reconoceconfiguración la configuración de esta.Revisar que el equipo reconozca todos losmódulos insertados (mensaje deinicialización) para detectar posibles fallosde instalación ó parametrización de losmismos.Si tras esta revisión no se detectavisualmente el error ó si este persiste,ponerse en contacto con el S.A.T.

b1 0002 2Error general del bus I2C de la carta.Se debe reiniciar el equipo.Si tras reiniciar el equipo persiste el error,ponerse en contacto con el S.A.T.

b2 0004 4Error de parametrización de la carta.Se debe reiniciar el equipo.Si tras reiniciar el equipo persiste el error,ponerse en contacto con el S.A.T.

b3 0008 8Error interno del conversor A/D.Se debe reiniciar el equipo.Si tras reiniciar el equipo persiste el error,ponerse en contacto con el S.A.T.

Page 417: Manual Tecnico de Programacion Plc PDF

TRATAMIENTO DE ERRORES TE-RE 15 02.04

! ERRORES DE COMUNICACIONES

Las respuestas de los mensajes del protocolo MIDAbus llevanun byte de estado (byte de status) del equipo (ver capitulo ProtocoloMIDAbus de este mismo manual).Si este byte es 00, no existen problemas ni errores en el equipo, por elcontrario, si tiene algún bit activado es que el equipo tiene algúnproblema ó error de programa.El byte de estado corresponden a los bits b0 a b7 de la tabla deErrores Generales.

! RELES ESTADO DE LOS PUERTOS DE COMUNICACIONES

Los relés de estado de los puertos de comunicaciones: RxCOM, Tx COM, CTS COM y TIME-OUT COM, reflejan en todomomento el estado en que se encuentra cada uno de los puertos decomunicaciones del equipo.Estos relés no son intrínsecamente unos relés de errores, tan sóloreflejan sus estados.

Sin embargo, el relé TIME-OUT COM (para puertos decomunicaciones RS232) sí puede considerarse relé de error ya que seactiva cuando el equipo no puede lanzar una comunicación.El TIME-OUT se produce al cabo de 5s. que el equipo no puederealizar una transmisión. Transcurrido ese tiempo el equipo activa elrelé pertinente de TIME-OUT COM y prosigue la ejecución normal delprograma MIDA.

Page 418: Manual Tecnico de Programacion Plc PDF
Page 419: Manual Tecnico de Programacion Plc PDF

NOTAS NT-NT 1 99.01