Professional Documents
Culture Documents
The descriptions and specifications contained in this manual were in effect at the time this manual
was approved. FANUC America Corporation, hereinafter referred to as FANUC America, reserves
the right to discontinue models at any time or to change specifications or design without notice and
without incurring obligations.
FANUC America recommends that only persons who have been trained in one or more approved
FANUC America Training Course(s) be permitted to install, operate, use, perform procedures on,
repair, and/or maintain FANUC America’s products and/or systems and their respective components.
Approved training necessitates that the courses selected be relevant to the type of system installed
and application performed at the customer site.
Warning
This equipment generates, uses, and can radiate radio frequency energy
and if not installed and used in accordance with the instruction manual,
may cause interference to radio communications. As temporarily
permitted by regulation, it has not been tested for compliance with the
limits for Class A computing devices pursuant to subpart J of Part 15 of
FCC Rules, which are designed to provide reasonable protection against
such interference. Operation of the equipment in a residential area is
likely to cause interference, in which case the user, at his own expense,
will be required to take whatever measure may be required to correct the
interference.
i
About This Manual MARRC75KR07091E Rev H
FANUC America conducts courses on its systems and products on a regularly scheduled basis at its
headquarters in Rochester Hills, Michigan. For additional information contact
www.fanucamerica.com
For customer assistance, including Technical Support, Service, Parts & Part Repair, and
Marketing Requests, contact the Customer Resource Center, 24 hours a day, at 1-800-47-ROBOT
(1-800-477-6268). International customers should call 011-1-248-377-7159.
FANUC America reserves all proprietary rights, including but not limited to trademark and trade
name rights, in the following names:
Patents
One or more of the following U.S. patents might be related to the FANUC America products described
in this manual.
ii
MARRC75KR07091E Rev H About This Manual
Conventions
This manual includes information essential to the safety of personnel, equipment, software, and data.
This information is indicated by headings and boxes in the text.
iii
About This Manual MARRC75KR07091E Rev H
Warning
Caution
Note Information appearing next to NOTE concerns related information or useful hints.
iv
Contents
v
Contents MARRC75KR07091E Rev H
vi
MARRC75KR07091E Rev H Contents
vii
Contents MARRC75KR07091E Rev H
9.5.4 ...................................................................................................................
Parse Errors 9–26
9.6 MEMORY DEVICE ........................................................................................................ 9–26
viii
MARRC75KR07091E Rev H Contents
Chapter 12 DATA TRANSFER BETWEEN ROBOTS OVER ETHERNET (DTBR) ............................ 12–1
12.1 OVERVIEW .................................................................................................................... 12–2
12.2 TERMINOLOGY ............................................................................................................. 12–2
12.3 SETUP ........................................................................................................................... 12–3
12.4 TCP/IP SETUP FOR ROBOGUIDE ..................................................................................... 12–4
12.5 STANDARD DATA TRANSFER PROGRAMS ..................................................................... 12–5
12.5.1 RGETNREG: Program to Get Numeric Register ..................................................................... 12–6
12.5.2 RSETNREG: Program to Set Numeric Register ...................................................................... 12–7
12.5.3 RGETPREG: Program to Get Position Register ...................................................................... 12–8
12.5.4 RSETPREG: Program to Set Position Register ...................................................................... 12–10
12.6 ERROR RECOVERY ....................................................................................................... 12–11
12.7 KAREL BUILT-INS ......................................................................................................... 12–13
12.8 TIME OUT AND RETRY ................................................................................................. 12–14
12.9 LIMITATIONS ................................................................................................................ 12–14
12.10 TROUBLESHOOTING .................................................................................................... 12–16
ix
Contents MARRC75KR07091E Rev H
x
MARRC75KR07091E Rev H Contents
xi
Contents MARRC75KR07091E Rev H
xii
MARRC75KR07091E Rev H Contents
xiii
Contents MARRC75KR07091E Rev H
xiv
MARRC75KR07091E Rev H Contents
xv
Contents MARRC75KR07091E Rev H
xvi
MARRC75KR07091E Rev H Contents
xvii
Contents MARRC75KR07091E Rev H
xviii
MARRC75KR07091E Rev H Contents
xix
Contents MARRC75KR07091E Rev H
xx
MARRC75KR07091E Rev H Contents
xxi
List of Figures
xxiii
Contents MARRC75KR07091E Rev H
xxiv
List of Tables
xxv
Contents MARRC75KR07091E Rev H
xxvi
MARRC75KR07091E Rev H Contents
xxvii
Contents MARRC75KR07091E Rev H
xxviii
Safety
FANUC America Corporation is not and does not represent itself as an expert in safety systems, safety
equipment, or the specific safety aspects of your company and/or its work force. It is the responsibility
of the owner, employer, or user to take all necessary steps to guarantee the safety of all personnel in the
workplace.
The appropriate level of safety for your application and installation can best be determined by safety
system professionals. FANUC America Corporation therefore, recommends that each customer consult
with such professionals in order to provide a workplace that allows for the safe application, use, and
operation of FANUC America Corporation systems.
According to the industry standard ANSI/RIA R15-06, the owner or user is advised to consult the
standards to ensure compliance with its requests for Robotics System design, usability, operation,
maintenance, and service. Additionally, as the owner, employer, or user of a robotic system, it is your
responsibility to arrange for the training of the operator of a robot system to recognize and respond to
known hazards associated with your robotic system and to be aware of the recommended operating
procedures for your particular application and robot installation.
Ensure that the robot being used is appropriate for the application. Robots used in classified (hazardous)
locations must be certified for this use.
FANUC America Corporation therefore, recommends that all personnel who intend to operate,
program, repair, or otherwise use the robotics system be trained in an approved FANUC America
Corporation training course and become familiar with the proper operation of the system. Persons
responsible for programming the system-including the design, implementation, and debugging of
application programs-must be familiar with the recommended programming procedures for your
application and robot installation.
The following guidelines are provided to emphasize the importance of safety in the workplace.
xxix
Safety MARRC75KR07091E Rev H
The safety of people is always of primary importance in any situation. When applying safety measures
to your robotic system, consider the following:
• External devices
• Robot(s)
• Tooling
• Workpiece
Always give appropriate attention to the work area that surrounds the robot. The safety of the work
area can be enhanced by the installation of some or all of the following devices:
A safe workcell is essential to protect people and equipment. Observe the following guidelines to
ensure that the workcell is set up safely. These suggestions are intended to supplement and not replace
existing federal, state, and local laws, regulations, and guidelines that pertain to safety.
• Sponsor your personnel for training in approved FANUC America Corporation training course(s)
related to your application. Never permit untrained personnel to operate the robots.
• Install a lockout device that uses an access code to prevent unauthorized persons from operating
the robot.
• Use anti-tie-down logic to prevent the operator from bypassing safety measures.
• Arrange the workcell so the operator faces the workcell and can see what is going on inside the cell.
xxx
MARRC75KR07091E Rev H Safety
• Clearly identify the work envelope of each robot in the system with floor markings, signs, and
special barriers. The work envelope is the area defined by the maximum motion range of the
robot, including any tooling attached to the wrist flange that extend this range.
• Position all controllers outside the robot work envelope.
• Never rely on software or firmware based controllers as the primary safety element unless they
comply with applicable current robot safety standards.
• Mount an adequate number of EMERGENCY STOP buttons or switches within easy reach of the
operator and at critical points inside and around the outside of the workcell.
• Install flashing lights and/or audible warning devices that activate whenever the robot is operating,
that is, whenever power is applied to the servo drive system. Audible warning devices shall
exceed the ambient noise level at the end-use application.
• Wherever possible, install safety fences to protect against unauthorized entry by personnel into
the work envelope.
• Install special guarding that prevents the operator from reaching into restricted areas of the work
envelope.
• Use interlocks.
• Use presence or proximity sensing devices such as light curtains, mats, and capacitance and
vision systems to enhance safety.
• Periodically check the safety joints or safety clutches that can be optionally installed between the
robot wrist flange and tooling. If the tooling strikes an object, these devices dislodge, remove
power from the system, and help to minimize damage to the tooling and robot.
• Make sure all external devices are properly filtered, grounded, shielded, and suppressed to prevent
hazardous motion due to the effects of electro-magnetic interference (EMI), radio frequency
interference (RFI), and electro-static discharge (ESD).
• Make provisions for power lockout/tagout at the controller.
• Eliminate pinch points . Pinch points are areas where personnel could get trapped between a
moving robot and other equipment.
• Provide enough room inside the workcell to permit personnel to teach the robot and perform
maintenance safely.
• Program the robot to load and unload material safely.
• If high voltage electrostatics are present, be sure to provide appropriate interlocks, warning,
and beacons.
• If materials are being applied at dangerously high pressure, provide electrical interlocks for
lockout of material flow and pressure.
xxxi
Safety MARRC75KR07091E Rev H
Advise all personnel who must teach the robot or otherwise manually operate the robot to observe the
following rules:
• Never wear watches, rings, neckties, scarves, or loose clothing that could get caught in moving
machinery.
• Know whether or not you are using an intrinsically safe teach pendant if you are working in
a hazardous environment.
• Before teaching, visually inspect the robot and work envelope to make sure that no potentially
hazardous conditions exist. The work envelope is the area defined by the maximum motion range
of the robot. These include tooling attached to the wrist flange that extends this range.
• The area near the robot must be clean and free of oil, water, or debris. Immediately report unsafe
working conditions to the supervisor or safety department.
• FANUC America Corporation recommends that no one enter the work envelope of a robot that
is on, except for robot teaching operations. However, if you must enter the work envelope, be
sure all safeguards are in place, check the teach pendant DEADMAN switch for proper operation,
and place the robot in teach mode. Take the teach pendant with you, turn it on, and be prepared
to release the DEADMAN switch. Only the person with the teach pendant should be in the
work envelope.
Warning
• Know the path that can be used to escape from a moving robot; make sure the escape path is
never blocked.
• Isolate the robot from all remote control signals that can cause motion while data is being taught.
• Test any program being run for the first time in the following manner:
Warning
— Using a low motion speed, single step the program for at least one full cycle.
— Using a low motion speed, test run the program continuously for at least one full cycle.
— Using the programmed speed, test run the program continuously for at least one full cycle.
• Make sure all personnel are outside the work envelope before running production.
xxxii
MARRC75KR07091E Rev H Safety
Advise all personnel who operate the robot during production to observe the following rules:
xxxiii
Traducido del inglés al español - www.onlinedoctranslator.com
·Nunca use relojes, anillos, corbatas, bufandas o ropa holgada que pueda quedar atrapada en la maquinaria en
movimiento.
·Considere todos o cualquier área de trabajo superpuesta de robots contiguos cuando se encuentre en una área de
trabajo.
·Pruebe la consola portátil para ver si funciona correctamente antes de entrar en el área de trabajo.
·Si es necesario que entre en el entorno de trabajo del robot mientras está encendido, debe asegurarse de
tener el control del robot. Asegúrese de llevar la consola portátil con usted, presione el interruptor DEADMAN
y encienda la consola portátil. Esté preparado para soltar el interruptor DEADMAN para apagar el
servoalimentador del robot inmediatamente.
·Siempre que sea posible, realice el mantenimiento con la alimentación apagada. Antes de abrir el panel frontal del
controlador o ingresar al área de trabajo, apague y bloquee la fuente de alimentación trifásica en el controlador.
·Tenga en cuenta que la campana del aplicador puede continuar girando a una velocidad muy alta incluso si el robot está inactivo.
Use guantes protectores o deshabilite el aire de los cojinetes y el aire de la turbina antes de dar servicio a estos artículos.
·Tenga en cuenta que cuando extrae un servomotor o un freno, el brazo robótico asociado se caerá si no
está sujeto o apoyado en un tope rígido. Apoye el brazo sobre un soporte sólido antes de soltar el freno.
Advertencia
Hay voltaje letal en el controlador SIEMPRE QUE ESTÁ CONECTADO a una fuente de
alimentación. Tenga mucho cuidado para evitar descargas eléctricas. HAY ALTO
VOLTAJE en el lado de entrada siempre que el controlador esté conectado a una
fuente de alimentación. Al colocar el interruptor de desconexión o el disyuntor en
la posición APAGADO, se elimina la energía del lado de salida del dispositivo
únicamente.
·Libera o bloquea toda la energía almacenada. Antes de trabajar en el sistema neumático, cierre el suministro de aire del
sistema y purgue las líneas de aire.
·Aísle el robot de todas las señales de control remoto. Si se debe realizar el mantenimiento cuando la energía está encendida,
asegúrese de que la persona dentro del área de trabajo tenga el control exclusivo del robot. El colgante de enseñanza debe estar
en manos de esta persona.
·Asegúrese de que el personal no quede atrapado entre el robot en movimiento y otros equipos. Conozca el camino que se
puede usar para escapar de un robot en movimiento. Asegúrese de que la ruta de escape nunca esté bloqueada.
xiv
MARRC75KR07091E Rev H La seguridad
·Utilice bloques, topes mecánicos y pasadores para evitar movimientos peligrosos del robot. Asegúrese de que
dichos dispositivos no creen puntos de pellizco que puedan atrapar al personal.
Advertencia
·Tenga en cuenta que cuando extrae un servomotor o un freno, el brazo robótico asociado se caerá si no
está sujeto o apoyado en un tope rígido. Apoye el brazo sobre un soporte sólido antes de soltar el freno.
·Cuando reemplace o instale componentes, asegúrese de que la suciedad y los desechos no ingresen al sistema.
·Use solo las piezas especificadas para el reemplazo. Para evitar incendios y daños a las piezas del controlador, nunca
utilice fusibles no especificados.
·Antes de reiniciar un robot, asegúrese de que no haya nadie dentro del área de trabajo; asegúrese de que el robot y todos
los dispositivos externos funcionen con normalidad.
Ciertas medidas mecánicas y de programación son útiles para mantener seguras las máquinas herramienta y otros dispositivos
externos. Algunas de estas medidas se describen a continuación. Asegúrese de conocer todas las medidas asociadas para el uso
seguro de dichos dispositivos.
Implemente las siguientes medidas de seguridad de programación para evitar daños a las máquinas herramienta y otros
dispositivos externos.
·Vuelva a verificar los interruptores de límite en la celda de trabajo para asegurarse de que no fallen.
·Implemente "rutinas de falla" en programas que proporcionen acciones de robot apropiadas si falla un dispositivo
externo u otro robot en la celda de trabajo.
·Usarapretón de manosprotocolo para sincronizar las operaciones del robot y del dispositivo externo.
·Programe el robot para comprobar el estado de todos los dispositivos externos durante un ciclo de funcionamiento.
xxxv
La seguridad MARRC75KR07091E Rev H
Implemente las siguientes medidas de seguridad mecánica para evitar daños a las máquinas herramienta y otros
dispositivos externos.
·Asegúrese de que la celda de trabajo esté limpia y libre de aceite, agua y desechos.
·Use DCS (Dual Check Safety), límites de software, interruptores de límite y topes mecánicos para evitar movimientos
no deseados del robot en el área de trabajo de máquinas herramienta y dispositivos externos.
Observe las siguientes pautas de operación y programación para evitar daños al robot.
Las siguientes medidas están diseñadas para evitar daños al robot durante el funcionamiento.
·Utilice una velocidad de anulación baja para aumentar su control sobre el robot al moverlo.
·Visualice el movimiento que hará el robot antes de presionar las teclas de desplazamiento en el control remoto.
·Asegúrese de que el área de trabajo esté limpia y libre de aceite, agua o residuos.
·Utilice disyuntores para protegerse contra sobrecargas eléctricas.
Las siguientes medidas de seguridad están diseñadas para evitar daños al robot durante la programación:
·Establecerzonas de interferenciapara evitar colisiones cuando dos o más robots comparten un área de trabajo.
·Asegúrese de que el programa termine con el robot cerca o en la posición inicial.
·Tenga cuidado con las señales u otras operaciones que podrían desencadenar el funcionamiento de las herramientas y provocar
lesiones personales o daños al equipo.
·En las aplicaciones de dosificación, tenga en cuenta todas las pautas de seguridad con respecto a los materiales de
dosificación.
NotaCualquier desviación de los métodos y prácticas de seguridad descritos en este manual debe ajustarse a
las normas aprobadas de su empresa. Si tiene preguntas, consulte a su supervisor.
xxxvi
Capítulo 1
Contenido
1-1
1. VISIÓN GENERAL DEL LENGUAJE KAREL MARRC75KR07091E Rev H
El sistema KAREL de FANUC America Corporation consta de un robot, un controlador y el software del sistema.
Realiza tareas industriales utilizando programas escritos en el lenguaje de programación KAREL. KAREL puede
manipular datos, controlar y comunicarse con equipos relacionados e interactuar con un operador.
El controlador con KAREL funciona con una amplia gama de modelos de robots para manejar una variedad de aplicaciones.
Esto significa procedimientos comunes de funcionamiento, programación y resolución de problemas, así como menos piezas
de repuesto. Los sistemas KAREL se expanden para incluir una línea completa de productos de soporte, como visión integral,
programación fuera de línea y paquetes de software para aplicaciones específicas.
El lenguaje de programación KAREL es una combinación práctica de las características lógicas similares al inglés de los
lenguajes de alto nivel, como Pascal y PL/1, y la eficacia comprobada en la planta de producción de los lenguajes de control de
máquinas. KAREL incorpora estructuras y convenciones comunes a los lenguajes de alto nivel, así como características
desarrolladas especialmente para aplicaciones de robótica. Estas características de KAREL incluyen
Este capítulo resume el lenguaje de programación KAREL y describe el software del sistema
KAREL y el controlador.
NotaPara R-30iB y R-30iControladores B Mate, la opción KAREL debe estar instalada en el controlador
del robot para poder cargar los programas KAREL.
Un programa KAREL se compone de declaraciones y sentencias ejecutables almacenadas en un archivo de código fuente. Los
valores de datos variables asociados con un programa se almacenan en un archivo de variables.
1‒2
MARRC75KR07091E Rev H 1. VISIÓN GENERAL DEL LENGUAJE KAREL
Los programas de KAREL se crean y editan utilizando las Herramientas de desarrollo avanzadas de
ROBOGUIDE u otro editor como Word Pad.
El traductor de idiomas KAREL convierte el código fuente en un formato interno llamado código p y genera un
archivo de código p. El traductor cuenta con las herramientas de desarrollo avanzadas de ROBOGUIDE. Después
de ser traducido, el programa de código p resultante se puede cargar en el controlador usando el Lenguaje de
comandos KAREL (KCL)o el menú ARCHIVO.
Durante la carga, el sistema creará las variables requeridas que no estén en la RAM y las establecerá como no
inicializadas. Cuando ejecuta el programa, el intérprete de KAREL ejecuta las instrucciones de código p cargadas.
Un programa KAREL se compone de la lógica del programa y los datos del programa. La lógica del programa define una
secuencia de pasos a seguir para realizar una tarea específica. Los datos del programa son la información relacionada con la
tarea que utiliza la lógica del programa. En KAREL, la lógica del programa está separada de los datos del programa.
La lógica del programa está definida por sentencias ejecutables KAREL entre las sentencias BEGIN y END en un
programa KAREL. Los datos del programa incluyen variables que se identifican en la sección de declaración VAR de
un programa KAREL por nombre, tipo de datos y área de almacenamiento en RAM.
Los valores para los datos del programa se pueden enseñar usando el mando de programación para mover el robot, computar por el
programa, leer desde archivos de datos, establecer desde dentro del CRT/KB o la estructura del menú del mando de aprendizaje, o
aceptarse como entrada al programa durante la ejecución. Los valores de los datos pueden cambiar de una ejecución a la siguiente, pero
se usa la misma lógica del programa para manipular los datos.
La lógica del programa y los datos del programa están separados en un programa KAREL por las siguientes razones:
· Para permitir que los datos sean referenciados desde varios lugares en el mismo programa
· Para permitir que más de un programa haga referencia o comparta los mismos datos
· Para permitir que un programa use datos alternativos
· Para facilitar la creación de archivos de datos mediante un sistema de diseño asistido por computadora (CAD) fuera de línea
La sección ejecutable del programa contiene las declaraciones de manipulación de datos, las declaraciones de E/S y las
llamadas de rutina.
El ciclo de desarrollo del programa se describe brevemente en la siguiente lista.Sección 1.2.2-Sección 1.2.6
que siguen proporcionan detalles sobre cada fase.
1‒3
1. VISIÓN GENERAL DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Puede crear un programa KAREL utilizando el editor proporcionado con las Herramientas de desarrollo avanzadas
de ROBOGUIDE, o cualquier editor de texto como WordPad. El archivo resultante se llamaarchivo fuente ocódigo
fuente.
Los archivos fuente de KAREL deben traducirse a un código interno, llamadocódigo p, antes de que se ejecuten. El
traductor de idiomas KAREL realiza esta función y también comprueba si hay errores en el código fuente.
El traductor de idiomas KAREL comienza en la primera línea del código fuente y continúa hasta que
encuentra un error o traduce el programa con éxito. Si se encuentra un error, el traductor intenta
continuar revisando el programa, pero no se generará ningún código p.
Puede invocar al traductor desde una celda de trabajo ROBOGUIDE o usando la utilidad de comando KTRANS, y se
traducirá el código fuente que estaba editando. Después de una traducción exitosa, el traductor muestra un mensaje de
traducción exitosa y crea un archivo de código p. El archivo de código p utilizará el nombre del archivo de código fuente y
un tipo de archivo .pc. Este archivo contiene una representación interna del código fuente y la información que el
sistema necesita para vincular el programa a rutinas y datos variables.
Si invoca al traductor desde una celda de trabajo ROBOGUIDE y no se detectan errores, el código p
resultante se cargará automáticamente en el controlador virtual.
Si el traductor detecta algún error, muestra los mensajes de error y las líneas fuente que se estaban
traduciendo. Una vez que haya corregido los errores, puede volver a traducir el programa.
NotaPara R-30iB y R-30iControladores B Mate, la opción KAREL debe estar instalada en el controlador
del robot para poder cargar los programas KAREL.
El código p de un programa se carga en un controlador donde se puede ejecutar. Cuando se carga un programa,
se crea en la RAM una tabla de datos variables que contiene todas las variables estáticas del programa. los
1‒4
MARRC75KR07091E Rev H 1. VISIÓN GENERAL DEL LENGUAJE KAREL
La tabla de datos variables contiene el identificador del programa, todos los identificadores de variables y el nombre del área
de almacenamiento en RAM donde se encuentran las variables.
Cargar un programa también establece los vínculos entre declaraciones y variables. Inicialmente, los valores de la tabla
de datos variables no se inicializarán. Si un archivo de variables (.vr) se carga correctamente, los valores de cualquier
variable se almacenarán en el área de almacenamiento de datos variables (CMOS, DRAM, SHADOW).
A menudo se utilizan varios programas para dividir una aplicación o un problema de gran tamaño en partes más pequeñas que
se pueden desarrollar y probar por separado. El sistema KAREL permite la carga de múltiples programas. Cada programa que se
carga tiene su propia estructura de código p.
Los datos variables se pueden compartir entre varios programas. En este caso, la cláusula FROM del lenguaje KAREL
debe especificarse en la declaración VAR para que el sistema pueda realizar el enlace cuando se carga el programa.
Esto ahorra el almacenamiento necesario para incluir varias copias de los datos.
Los siguientes límites se aplican al número y tamaño de los programas KAREL que se pueden cargar:
Una vez que haya seleccionado un programa de la lista de programas y el código p y los archivos de variables se hayan cargado
en la RAM, pruebe y depure el programa para asegurarse de que funciona según lo previsto.
La ejecución del programa comienza en la primera línea ejecutable. Se asigna una pila de 300 palabras a menos que
especifique un tamaño de pila. La pila se asigna desde la RAM de usuario disponible. El uso de la pila se describe en
Sección 5.1.6.
Cada vez que se ejecuta un programa, se puede mostrar desde KCL un registro de las rutinas anidadas y
los números de línea que se han ejecutado con el comando SHOW HISTORY.
Esto es útil cuando un programa se ha detenido o se ha cancelado inesperadamente. El historial de ejecución muestra
la secuencia de eventos que llevaron a la interrupción.
Un programa KAREL se compone de secciones de declaración y ejecutables formadas por sentencias del lenguaje KAREL,
como se muestra enEstructura de un Programa KAREL.
1‒5
1. VISIÓN GENERAL DEL LENGUAJE KAREL MARRC75KR07091E Rev H
PROGRAMA prog_name
Traductor de directivas
Declaraciones CONST, TYPE y/o VAR
Declaraciones ROUTINE
EMPEZAR
Declaraciones ejecutables
FIN prog_name
Declaraciones de RUTINA
EnEstructura de un Programa KAREL, las palabras que se muestran en mayúsculas son palabras reservadas de
KAREL, que tienen significados específicos. PROGRAM, CONST, TYPE, VAR y ROUTINE indican secciones de
declaración del programa. BEGIN y END marcan la sección ejecutable. Las palabras reservadas se describen en
Sección 2.1.3.
La declaración PROGRAM, que identifica el programa, debe ser la primera declaración en cualquier programa
KAREL. La instrucción PROGRAM consta de la palabra reservada PROGRAM y un identificador de su elección
(prog_name enEstructura de un Programa KAREL). Los identificadores se describen enSección 2.1.4.
NotaSu programa debe residir en un archivo. El archivo puede, pero no necesariamente, tener el mismo nombre
que el programa. Esta distinción es importante porque invoca el traductor y carga programas con el nombre del
archivo que contiene su programa, pero inicia la ejecución del programa y borra el programa con el nombre del
programa.
Por ejemplo, si un programa llamadoagente de mudanzasestaba contenido en un archivo llamadotransferir,usted haría referencia al
archivo portransferirpara traducirlo, pero usaría el nombre del programaagente de mudanzaspara ejecutar el programa. Si tanto el
programa como el archivo se llamaranagente de mudanzas,podría usar mover para traducir el archivo y también para ejecutar el
programa.
Se crea una tarea para ejecutar el programa y el nombre de la tarea es el nombre del programa que inicia. El
programa puede llamar a una rutina en otro programa, pero el nombre de la tarea no cambia.
El identificador utilizado para nombrar el programa no se puede utilizar en el programa para ningún otro propósito, como
identificar una variable o una constante.
Las secciones de declaración CONST (constante), TYPE (tipo) y VAR (variable) vienen después de la instrucción
PROGRAM. Un programa puede contener cualquier número de secciones CONST, TYPE y VAR. Cada sección
también puede contener cualquier número de declaraciones individuales. Además, pueden aparecer múltiples
secciones CONST, TYPE y VAR en cualquier orden. El número de secciones CONST, TYPE y VAR y declaraciones de
declaración están limitados únicamente por la cantidad de memoria disponible.
Las declaraciones ROUTINE pueden seguir a las secciones CONST, TYPE y VAR. Cada rutina comienza con la
palabra reservada ROUTINE y es similar en sintaxis a un programa. Las declaraciones ROUTINE también pueden
seguir la sección ejecutable del programa principal después de la declaración END.
1‒6
MARRC75KR07091E Rev H 1. VISIÓN GENERAL DEL LENGUAJE KAREL
La sección ejecutable debe estar marcada con BEGIN al principio y END, seguido del identificador del programa
(prog_name enEstructura de un Programa KAREL), al final. Debe utilizarse el mismo identificador de programa en
la sentencia END que en la sentencia PROGRAM. La sección ejecutable puede contener cualquier número de
sentencias ejecutables, limitadas únicamente por la cantidad de memoria disponible.
El R-30iA y R-30iLos sistemas B incluyen un robot y un controlador electrónico. Las interfaces de hardware y el software del
sistema respaldan la programación, la operación diaria, el mantenimiento y la resolución de problemas.
Esta sección proporciona una descripción general del software del sistema y los modelos de robot admitidos.
Los temas de hardware se tratan con mayor detalle en el Manual de mantenimiento específico para su robot y
modelo de controlador.
El software del sistema es el software suministrado por FANUC America Corporation que ejecuta la CPU del
controlador, lo que le permite operar el sistema de robot. El software del sistema se utiliza para ejecutar programas,
así como para realizar operaciones diarias, mantenimiento y resolución de problemas.
· Control de movimiento-movimiento del punto central de la herramienta (TCP) desde una posición inicial a una posición
de destino deseada
Ver también:Manual de operaciones y configuración de FANUC America Corporation específico de la aplicación para conocer los
procedimientos de operación detallados utilizando el CRT/KB y las pantallas de la consola portátil.
1‒7
1. VISIÓN GENERAL DEL LENGUAJE KAREL MARRC75KR07091E Rev H
El robot, utilizando las herramientas adecuadas, realiza tareas de aplicación dirigidas por el software del sistema y el
controlador. El R-30iA y R-30iLos sistemas B admiten una variedad de robots, cada uno diseñado para un tipo
específico de aplicación.
Para obtener una lista actualizada de los modelos de robots compatibles, consulte a su representante técnico de FANUC America
Corporation.
Ver también:El Manual de mantenimiento para su tipo de robot específico, para obtener más información sobre su robot.
1.4 CONTROLADOR
El controlador contiene los circuitos electrónicos y la memoria necesarios para operar el sistema. El circuito
electrónico, respaldado por el software del sistema, dirige la operación y el movimiento del robot y permite la
comunicación con los dispositivos periféricos.
La electrónica del controlador incluye una unidad central de procesamiento (CPU), varios tipos de memoria, un entrada/salida
(E/S)sistema y dispositivos de interfaz de usuario. Un gabinete alberga la electrónica del controlador y los puertos a los que se
conectan los dispositivos de interfaz de usuario remotos y otros dispositivos periféricos.
1.4.1 Memoria
DRACMA
La memoria DRAM es volátil. Los contenidos de la memoria no retienen sus valores almacenados cuando se desconecta
la energía. La memoria DRAM también se conoce como memoria temporal (TEMP). El software del sistema se ejecuta en
la memoria DRAM. Los programas KAREL y la mayoría de las variables KAREL se cargan en DRAM y también se ejecutan
desde aquí.
NotaAunque las variables DRAM están en la memoria volátil, puede controlar su valor al inicio. Cada vez que se
carga un archivo .VR o .PC del programa, los valores en DRAM para ese programa se establecen en el valor del
archivo .VR. Esto significa que no es necesario volver a cargar el archivo VR en cada inicio para establecer los
valores iniciales. Si el valor de esa variable cambia durante el funcionamiento normal, volverá al valor que tenía
establecido la última vez que se cargó el archivo .VR o .PC.
1‒8
MARRC75KR07091E Rev H 1. VISIÓN GENERAL DEL LENGUAJE KAREL
Si desea que las variables DRAM no se inicialicen al inicio, puede usar la cláusula IN UNINIT_DRAM en cualquier
variable que desee asegurarse de que no se inicialice al inicio. Puede utilizar la directiva %UNINITDRAM para
especificar que todas las variables de un programa no deben inicializarse al inicio.
Si tiene variables SHADOW y variables DRAM en el mismo programa KAREL, existe la posibilidad de que la
configuración de encendido de las variables DRAM cambie sin cargar un archivo .PC/.VR. En este caso, el
programador debe prestar especial atención a la confianza del software KAREL en una configuración particular de
una variable DRAM al inicio. Específicamente, los valores de inicio de la DRAM siempreconservar los valores que
tenían al final del inicio controlado. Si la memoria SHADOW está llena, los valores de inicio de la DRAM podrían
establecerse durante el funcionamiento normal del sistema.
SRAM
La memoria SRAM es no volátil. Los contenidos de la memoria conservan sus valores almacenados cuando se desconecta la
alimentación. La memoria SRAM también se denomina CMOS o memoria permanente (PERM).
El grupo de memoria TPP (utilizado para programas de programación) se asigna desde PERM. Los programas KAREL pueden designar
variables para ser almacenadas en CMOS. Una parte de la memoria SRAM se puede definir como un dispositivo de almacenamiento de
usuario denominado Disco RAM (RD:).
La memoria FROM es no volátil. Los contenidos de la memoria conservan sus valores almacenados cuando se desconecta la alimentación. FROM se
utiliza para el almacenamiento permanente del software del sistema. FROM también está disponible para el almacenamiento del usuario como
dispositivo FROM (FR:).
SOMBRA
La memoria Shadow proporciona las mismas capacidades que SRAM. Cualquier valor establecido en la sombra no es volátil y
mantendrá su estado durante el ciclo de encendido. La memoria de sombra está diseñada para datos que tienden a ser estáticos.
El almacenamiento de variables dinámicas en la memoria oculta, como los índices de bucle FOR u otros datos que cambian
rápidamente, no es eficiente.
1‒9
1. VISIÓN GENERAL DEL LENGUAJE KAREL MARRC75KR07091E Rev H
DRACMA
(TEMPERATURA)
(PERMANENTE)
Programas TP cargados
Almacenamiento externo
Puede realizar copias de seguridad y almacenar archivos en dispositivos externos. Puede utilizar los siguientes dispositivos:
· Tarjeta de memoria
· Ethernet a través de FTP
· Dispositivo de memoria USB
El controlador puede admitir una estructura de E/S modular, lo que le permite agregar tarjetas de E/S según lo
requiera su aplicación. Se admiten módulos de entrada y salida digitales y analógicos. Además, puede agregar
tarjetas de E/S de proceso opcionales para E/S adicionales. El tipo y la cantidad de señales de E/S que tenga
dependerán de los requisitos de su aplicación.
1‒10
MARRC75KR07091E Rev H 1. VISIÓN GENERAL DEL LENGUAJE KAREL
Los dispositivos de interfaz de usuario le permiten programar y operar el sistema KAREL. Los dispositivos de interfaz de
usuario comunes admitidos por KAREL incluyen el panel del operador, la consola portátil o el CRT/KB.
Figura 1‒2ilustra estos dispositivos de interfaz de usuario. El panel del operador y la consola portátil tienen las mismas
funciones básicas para todos los modelos; sin embargo, también hay disponibles diferentes configuraciones.
El panel del operador, ubicado en la parte frontal del gabinete del controlador, proporciona botones para realizar
operaciones diarias como encender, ejecutar un programa y apagar. Las luces en el panel del operador indican
las condiciones de funcionamiento, como cuando está encendido y cuando el robot está en ciclo.
El sistema también admite señales de E/S para unpanel de operador de usuario (UOP),que es un dispositivo
proporcionado por el usuario, como un panel de control personalizado, un controlador programable o una computadora
host. Referirse a Capítulo 15SISTEMA DE ENTRADA/SALIDA.
enseñar colgante
Panel del operador
Cambio de modo
El CRT/KB es una opción de software en el controlador que permite que una terminal externa, como
una PC que ejecute TelNet, muestre un sistema de menús similar al que se ve en la consola portátil.
La botonera de enseñanza consta de una pantalla LCD, teclas de función controladas por menús, teclas de teclado y LED de
estado. Está conectado al gabinete del controlador a través de un cable, lo que le permite realizar operaciones lejos del
controlador.
1‒11
1. VISIÓN GENERAL DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Internamente, la botonera de aprendizaje se conecta a la placa de la CPU principal del controlador. Se utiliza para mover el
robot, enseñar datos de programas, probar y depurar programas y ajustar variables. También se puede usar para monitorear y
controlar E/S, para controlar herramientas de final de brazo y para mostrar información como la posición actual del robot o el
estado de un programa de aplicación.
1‒12
Capitulo 2
Contenido
2-1
2. ELEMENTOS DEL LENGUAJE MARRC75KR07091E Rev H
El lenguaje KAREL proporciona los elementos necesarios para programar aplicaciones robóticas efectivas.
Este capítulo enumera y describe cada uno de los componentes del lenguaje KAREL, las directivas de
traducción disponibles y los tipos de datos disponibles.
Esta sección describe los siguientes componentes básicos del lenguaje KAREL:
· Conjunto de caracteres
· Operadores
· Palabras reservadas
· Identificadores definidos por el usuario
· Etiquetas
· Identificadores predefinidos
· Variables del sistema
· Comentarios
El juego de caracteres ASCII está disponible en el idioma KAREL.Tabla 2‒1enumera los elementos en el conjunto de
caracteres ASCII. Hay tres conjuntos de caracteres disponibles en el idioma KAREL:
Todos los caracteres reconocidos por el idioma KAREL se enumeran enTabla 2‒1,Tabla 2‒2, y Tabla 2‒3. El
conjunto de caracteres predeterminado es ASCII. Los conjuntos de caracteres multinacionales y gráficos solo
se permiten en literales, datos y comentarios.
dígitos 0123456789
2‒2
MARRC75KR07091E Rev H 2. ELEMENTOS DEL LENGUAJE
— Permitido pero no requerido dentro de expresiones entre operadores simbólicos y sus operandos.
Por ejemplo, la declaraciónun = segundoes equivalente aa=b.
· Retorno de carro o un punto y coma (;) sentencias separadas. Los retornos de carro también pueden aparecer en
otros lugares.
simbolos ¡ ¢ £ ¥ § ¤
2
© a « О ±
3 1
µ ¶ · o
» ¼ ½ ¿
2‒3
2. ELEMENTOS DEL LENGUAJE MARRC75KR07091E Rev H
Caracteres especiales A A A A A A
Æ C MI MI MI MI
YO YO YO YO NORTE Ò
o Ô Õ o o Ø
Ù tu Û Ü Y ß
a a a a a a
æ C mi mi mi mi
i i i i norte
o o o õ o œ
ø tu tu û ü ÿ
dígitos 0123456789
L T
┘ ┐ ┌ └
Caracteres T
- -
+ - - _ ├ ┤ ┴ ┬ | ≤ ≥ Π
≠ £ .
Ver también:Apéndice Dpara obtener una lista de los códigos de caracteres para cada conjunto de caracteres
2‒4
MARRC75KR07091E Rev H 2. ELEMENTOS DEL LENGUAJE
2.1.2 Operadores
KAREL proporciona operadores para operaciones aritméticas estándar, operaciones relacionales y operaciones
booleanas (lógicas). KAREL también incluye operadores especiales que se pueden utilizar con tipos de datos
posicionales y VECTOR como operandos.
Tabla 2‒4enumera todos los operadores disponibles para usar con KAREL.
· Dentro del mismo nivel de paréntesis y precedencia de operadores, las operaciones se realizan de izquierda a
derecha.
NO Alto
:, @, # ↓
* , /, Y, DIV, MOD ↓
Unario + y -, O, +, - ↓
<, >, =, < >, < =, > =, > = < Bajo
Ver también:Capítulo 3USO DE OPERADORES,para descripciones de las funciones que realizan los operadores
Las palabras reservadas tienen un significado específico en KAREL. Sólo se pueden utilizar en sus contextos
prescritos. Todas las palabras reservadas de KAREL se enumeran enTabla 2‒6.
2‒5
2. ELEMENTOS DEL LENGUAJE MARRC75KR07091E Rev H
2‒6
MARRC75KR07091E Rev H 2. ELEMENTOS DEL LENGUAJE
Los identificadores definidos por el usuario representan constantes, tipos de datos, etiquetas de instrucciones, variables, nombres de rutinas y
Por ejemplo, el extracto del programa enDeclaración de identificadoresmuestra cómo declarar identificadores de programa,
variables y constantes.
Declaración de identificadores
2.1.5 Etiquetas
Las etiquetas son identificadores especiales que marcan lugares en el programa a los que se puede transferir el control
del programa mediante la instrucción GOTO.
· Van seguidos inmediatamente de dos puntos (::). Las sentencias ejecutables están permitidas en la misma línea y
en las líneas subsiguientes después de los dos puntos.
EnUso de etiquetas,soldar: :indica la sección del programa en la que se suelda una pieza. Cuando la
declaraciónir a soldarse ejecuta, el control del programa se transfiere alsoldarsección.
Uso de etiquetas
soldar:: - - etiqueta
. - - adicional programa declaraciones
.
.
IR soldar
2‒7
2. ELEMENTOS DEL LENGUAJE MARRC75KR07091E Rev H
Los identificadores predefinidos dentro del lenguaje KAREL tienen un significado predefinido. Estos pueden ser
constantes, tipos, variables o nombres de rutinas incorporadas.Tabla 2‒7yTabla 2‒8enumere los identificadores
predefinidos junto con sus valores correspondientes. El identificador o el valor se pueden especificar en la
declaración del programa. Por ejemplo, $MOTYPE = 7 es lo mismo que $MOTYPE = LINEAR. Sin embargo, el
identificador predefinido MININT es una excepción a esta regla. Este identificador siempre debe usarse en lugar de
su valor, -2147483648. El valor o número en sí no se puede utilizar.
CIERTO BOOLEANO EN
FALSO APAGADO
EN BOOLEANO EN
APAGADO APAGADO
2‒8
MARRC75KR07091E Rev H 2. ELEMENTOS DEL LENGUAJE
Las variables del sistema son variables que se declaran como parte del software del sistema KAREL. Tienen nombres de
variables definidos permanentemente, que comienzan con un signo de dólar ($). Muchos son específicos del robot, lo que
significa que sus valores dependen del tipo de robot que está conectado al sistema.
2‒9
2. ELEMENTOS DEL LENGUAJE MARRC75KR07091E Rev H
Algunas variables del sistema no son accesibles para los programas KAREL. Los derechos de acceso gobiernan si un
programa KAREL puede o no leer o escribir en las variables del sistema.
Ver también:Manual de referencia del software de FANUC America Corporationpara obtener una lista completa y una
descripción de todas las variables del sistema disponibles.
2.1.8 Comentarios
Los comentarios son líneas de texto dentro de un programa que se utilizan para hacer que el programa sea más
fácil de entender para usted u otro programador. Por ejemplo,Comentarios desde dentro de un programacontiene
algunos comentarios deDirectiva %INCLUDE en un programa KARELyIncluir archivo mover_decs para un programa
KAREL.
Un comentario está marcado por un par de guiones consecutivos (- -). En una línea de programa, cualquier cosa a la
derecha de estos guiones se trata como un comentario.
Los comentarios se pueden insertar en las líneas por sí mismos o al final de las líneas que contienen cualquier declaración
del programa. El traductor los ignora y no tienen absolutamente ningún efecto en un programa en ejecución.
Las directivas de traductor proporcionan un mecanismo para dirigir la traducción de un programa KAREL. Las directivas
traductoras son sentencias especiales que se utilizan dentro de un programa KAREL para
Todas las directivas excepto %INCLUDE deben estar después de la declaración del programa pero antes de cualquier otra
declaración.Tabla 2‒9enumera y describe brevemente cada directiva de traductor. Referirse aApéndice Apara obtener una
descripción completa de cada directiva de traductor.
2‒10
MARRC75KR07091E Rev H 2. ELEMENTOS DEL LENGUAJE
Directiva Descripción
%ALFABETIZAR Especifica que las variables se crearán en orden alfabético cuando se cargue el código
p.
%CMOSVARS Especifica que el almacenamiento predeterminado para las variables KAREL es CMOS RAM.
%CMOS2SOMBRA Indica al traductor que coloque todas las variables CMOS en la memoria SHADOW.
%COMENTARIO = 'comentario' Especifica un comentario de hasta 16 caracteres. Durante el tiempo de carga, el comentario se
almacena como un atributo del programa y se puede mostrar en la pantalla SELECCIONAR de la
consola portátil o CRT/KB.
%DISPOSITIVO CRT Especifica que la ventana de usuario CRT/KB será la predeterminada en las
sentencias READ y WRITE en lugar de la ventana TPDISPLAY.
%ENVIRONMENT nombre de archivo Utilizado por el traductor fuera de línea para especificar que se debe cargar un archivo de entorno
particular.
%INCLUDE nombre de archivo Especifica archivos para insertar en un programa en el momento de la traducción.
%BLOQUEO DE GRUPO =n,n Especifica los grupos de movimiento bloqueados por esta tarea.
%NOABORTAR = opción Especifica un conjunto de condiciones que evitarán que se cancele el programa.
%NOPAUSESHFT Especifica que la tarea no se detiene si se suelta la tecla shift de la consola portátil.
%VARIOS DE SOMBRA Especifica que todas las variables por defecto se crean en SHADOW.
%FRANJA DE TIEMPO = n Admite división de tiempo de tipo round-robin para tareas con la misma prioridad.
%TPMOVIMIENTO Especifica que el movimiento de la tarea se habilita solo cuando la consola portátil está habilitada.
%UNINIVARS Especifica que todas las variables no están inicializadas de forma predeterminada.
Programa motor
- - Este programa, llamado mover, recoge 10 objetos
- - desde una posición original y los baja
2‒11
2. ELEMENTOS DEL LENGUAJE MARRC75KR07091E Rev H
KAREL proporciona tres formas de tipos de datos para definir elementos de datos en un programa:
2‒12
MARRC75KR07091E Rev H 2. ELEMENTOS DEL LENGUAJE
— Pueden definirse como estructuras que constan de varios tipos de datos variables KAREL
Tabla 2‒10enumera los tipos de datos simples y estructurados disponibles en KAREL. Los tipos de datos definidos por el
usuario se describen enSección 2.4.
Simple Estructurado
CONJUNTOPOS4 VECTOR
CONJUNTOPOS5 VIS_PROCESO
CONJUNTOPOS6 XYZWPR
CONJUNTOPOS7 XYZWPREXT
Ver también:Apéndice Apara obtener una descripción detallada de cada tipo de datos.
Los tipos de datos definidos por el usuario son tipos de datos que usted define en términos de tipos de datos existentes. Las estructuras de datos
definidas por el usuario son estructuras de datos en las que usted define un nuevo tipo de datos como una estructura que consta de varios tipos de
datos variables de KAREL, incluidos los tipos de datos de usuario definidos anteriormente.
2‒13
2. ELEMENTOS DEL LENGUAJE MARRC75KR07091E Rev H
Los tipos de datos definidos por el usuario son tipos de datos que usted define en términos de tipos de datos existentes. Con los tipos de datos definidos por
el usuario, usted
Los tipos de datos definidos por el usuario se pueden definir como estructuras que constan de varios tipos de datos variables de KAREL.
El carácter de continuación, "&", se puede utilizar para continuar una declaración en una nueva línea.
Ejemplo de tipo de datos definido por el usuariomuestra un ejemplo de uso de tipos de datos definidos por el usuario y uso de caracteres
de continuación.
CONSTITUCIÓN
n_páginas = 20
n_líneas = 40
std_str_lng = 8
ESCRIBE
msg_table_1: std_table_t
msg_table_2: std_table_t
cadena_temp: std_string_t
costura_1_ruta: ruta_std_t
Uso
2‒14
MARRC75KR07091E Rev H 2. ELEMENTOS DEL LENGUAJE
No se permite la asignación entre variables de diferentes tipos de datos definidos por el usuario, incluso si se declaran
de forma idéntica. Además, el sistema brinda la capacidad de cargar y guardar variables de tipos de datos definidos por
el usuario, verificando la coherencia durante la carga con la declaración actual del tipo de datos.
Restricciones
· Incluirse a sí mismo
· Incluir cualquier tipo que lo incluya, ya sea directa o indirectamente
· Ser declarado dentro de una rutina
Una estructura se usa para almacenar una colección de información que generalmente se usa en conjunto. Las estructuras de datos
definidas por el usuario son estructuras de datos en las que usted define un nuevo tipo de datos como una estructura que consta de
varios tipos de datos variables de KAREL.
Cuando se carga un programa que contiene variables de tipos de datos definidos por el usuario, las definiciones de
estos tipos se comparan con una definición creada previamente. Si no existe una definición creada anteriormente, se
crea una nueva.
· Defina un tipo de datos como una estructura que consta de una lista de campos componentes, cada uno de los cuales puede ser
un tipo de datos estándar u otro tipo de datos de usuario previamente definido. VerDefinición de un tipo de datos como una
estructura definida por el usuario.
nuevo_tipo_nombre = ESTRUCTURA
campo_nombre_1: tipo_nombre_1
campo_nombre_2: tipo_nombre_2
..
ESTRUCTURA FINAL
2‒15
2. ELEMENTOS DEL LENGUAJE MARRC75KR07091E Rev H
· Acceder a elementos de un tipo de datos definido como estructura en un programa KAREL. El carácter de continuación,
"&", se puede utilizar para continuar el acceso a los elementos de la estructura. VerAcceso a elementos de una estructura
definida por el usuario en un programa KAREL.
var_name = new_type_name.field_nam_1
new_type_name.field_name_2 = expresión
external_struct_name.inner_struct_name&
. nombre_campo = expresión
· Acceda a elementos de un tipo de datos definido como una estructura desde el CRT/KB y en el dispositivo de enseñanza.
· Defina un rango de sentencias ejecutables en las que se pueda acceder a los campos de una variable de
tipo ESTRUCTURA sin repetir el nombre de la variable. VerDefinición de un rango de sentencias
ejecutables.
En el ejemplo anterior, struct_var y struct_var2 son los nombres de variables de tipo de estructura.
NotaSi el mismo nombre es un nombre de campo y un nombre de variable, se asume el nombre de campo. Si el mismo
nombre de campo aparece en más de una variable, se usa la variable más a la derecha en la instrucción USING.
Restricciones
Las estructuras de datos definidas por el usuario tienen las siguientes restricciones:
· Los siguientes tipos de datos sonno es válidocomo parte de una estructura de datos:
— definiciones de ESTRUCTURA; Se permiten los tipos que son estructuras declaradas. Ver
Definiciones válidas de ESTRUCTURA.
Lo siguiente es válido:
ESCRIBE
sub_struct = ESTRUCTURA
2‒16
MARRC75KR07091E Rev H 2. ELEMENTOS DEL LENGUAJE
subs_campo_1: ENTERO
subs_campo_2: BOOLEANO
ESTRUCTURA FINAL
estructura_grande = ESTRUCTURA
campo_grande_1: ENTERO
campo_grande_2: sub_estructura
ESTRUCTURA FINAL
Lo siguiente no es válido:
big_struct = ESTRUCTURA
campo_grande_1: ENTERO
campo_grande_2: ESTRUCTURA
subs_campo_1: ENTERO
subs_campo_2: BOOLEANO
ESTRUCTURA FINAL
ESTRUCTURA FINAL
— Tipos de RUTA
- Tipos de archivo
— Tipos de VISIÓN
— La propia estructura de datos, o cualquier tipo que la incluya, ya sea directa o indirectamente
· Una variable no se puede definir como una estructura, pero se puede definir como un tipo de dato previamente definido como
estructura. VerDefinición de una variable como un tipo previamente definido como una estructura.
Definición de una variable como un tipo previamente definido como una estructura
Lo siguiente es válido:
ESCRIBE
estructura_t = ESTRUCTURA
st_1: BOOLEANO
st_2: REAL
ESTRUCTURA FINAL
VAR
nombre_var: struct_t
Lo siguiente no es válido:
VAR
nombre_var: ESTRUCTURA
vn_1: BOOLEANO
vn_2: REAL
ESTRUCTURA FINAL
2‒17
2. ELEMENTOS DEL LENGUAJE MARRC75KR07091E Rev H
2.5 ARREGLOS
Puede acceder a los elementos de estas matrices en un programa KAREL, desde el CRT/KB y desde el dispositivo
de enseñanza.
· Matrices multidimensionales
· Matrices de tamaño variable
Los arreglos multidimensionales son arreglos de elementos con dos o tres dimensiones. Estas matrices le permiten
identificar un elemento usando dos o tres subíndices.
· Declare las variables como arreglos con dos o tres (pero no más) dimensiones. VerDeclarar variables
como matrices con dos o tres dimensiones.
VAR
nombre: ARRAY [tamaño_1] OF ARRAY [tamaño_2] .., OF tipo_elemento
O
VAR
nombre: ARRAY [tamaño_1, tamaño_2,...] OF tipo_elemento
2‒18
MARRC75KR07091E Rev H 2. ELEMENTOS DEL LENGUAJE
· Declare los parámetros de rutina como matrices multidimensionales. VerDeclaración de parámetros de rutina como
matrices multidimensionales.
Restricciones
· Un subarreglo puede pasarse como un parámetro o asignarse a otro arreglo omitiendo uno o más de los
subíndices más a la derecha solo si se definió como un tipo separado. VerUsar un subarreglo.
Usar un subarreglo
ESCRIBE
DE otro-prog
EMPEZAR
2‒19
2. ELEMENTOS DEL LENGUAJE MARRC75KR07091E Rev H
- Sendero
Las matrices de tamaño variable son matrices cuyo tamaño real no se conoce y que difieren de un uso del
programa a otro. Los arreglos de tamaño variable le permiten escribir programas KAREL sin establecer las
dimensiones de las variables del arreglo. En todos los casos, la dimensión de la variable debe establecerse antes
de cargar el archivo .PC.
· Declare un tamaño de matriz como "a determinar" (*). VerIndica que el tamaño de una matriz
está "por determinar".
VAR
una_matriz_d: GAMA DE escribe
dos_d_matriz: FORMACIÓN[*,*] tipo de
El tamaño real de una matriz de tamaño variable estará determinado por el tamaño real de la matriz si ya existe, el
tamaño de la matriz en un archivo variable si se carga primero o el tamaño especificado en un comando KCL CREATE VAR
ejecutado antes de que se cargue el programa. Las dimensiones especificadas explícitamente en un programa deben
coincidir con las especificadas en el archivo .VR o especificadas en el comando KCL CREATE VAR.
Restricciones
· La variable debe cargarse o crearse en la memoria (en un archivo .VR o usando KCL), con una longitud conocida,
antes de que pueda usarse.
2‒20
Traducido del inglés al español - www.onlinedoctranslator.com
• Las matrices de tamaño variable solo se permiten en la sección VAR y no en la sección TYPE de un programa.
2–21
Capítulo 3
USO DE OPERADORES
Contenido
3-1
3. USO DE OPERADORES MARRC75KR07091E Rev H
Este capítulo describe cómo se utilizan los operadores con otros elementos del lenguaje para realizar operaciones
dentro de un programa de aplicación KAREL. Primero se explican las expresiones y asignaciones, que son sentencias
de programa que incluyen operadores y operandos. A continuación, se analizan los tipos de operaciones que se
pueden realizar utilizando cada operador KAREL disponible.
Las expresiones son valores definidos por una serie de operandos, conectados por operadores y hacen que se
realicen los cálculos deseados. Por ejemplo,4 + 8es una expresión en la que4y8son losoperandosy el símbolo
más (+) es eloperador.
asignacionesson declaraciones que establecen el valor de las variables en el resultado de una expresión evaluada.
• Cada operando de una expresión tiene un tipo de dato determinado por la naturaleza del operador.
• Cada operador KAREL requiere un tipo de operando particular y provoca un cálculo que produce un tipo de
resultado particular.
• Ambos operandos en una expresión deben ser del mismo tipo de datos. Por ejemplo, el operador
AND requiere que ambos operandos sean valores INTEGER o que ambos sean valores BOOLEAN. La
expresionyo y b,dóndeies un ENTERO ybes un BOOLEAN, no es válido.
• Cinco casos especiales en los que se pueden mezclar los operandos proporcionan una excepción a esta regla. Estos
cinco casos incluyen lo siguiente:
Tabla 3–1resume los tipos de datos de los valores que resultan de la evaluación de expresiones que
contienen operadores y operandos KAREL.
3–2
MARRC75KR07091E Rev H 3. USO DE OPERADORES
ENTERO yo yo yo R yo B − yo − − −
REAL R R R R − B − − − − −
Mezclado** R R R R − B − − − − −
ENTERO-
REAL
BOOLEANO − − − − − B − B − − −
CUERDA S − − − − B − − − − −
Mezclado** − − V V − − − − − − −
ENTERO-
VECTOR
Mixto** REAL- − − V V − − − − − − −
VECTOR
VECTOR V V − − − B*** − − V R −
POSICIÓN − − − − − − B − − − PAGS
Mezclado** − − − − − − − − − − V
POSICIÓN-
VECTOR
− Operación no permitida
YO ENTERO
R REAL
B BOOLEANO
VECTOR
POSICIÓN P
3–3
3. USO DE OPERADORES MARRC75KR07091E Rev H
Las sentencias de asignación contienen variables y expresiones. Las variables pueden ser cualquier variable definida por el
usuario, una variable del sistema con acceso de escritura o una matriz de puertos de salida con acceso de escritura. La
expresión puede ser cualquier expresión KAREL válida. Los siguientes ejemplos son asignaciones aceptables:
• Las variables ENTERAS se pueden asignar a variables REALES. En este caso, el INTEGER se trata como un
número REAL durante la evaluación de la expresión. Sin embargo, no se puede usar un número REAL
donde se espera un valor INTEGER.
• Si es necesario, un número REAL se puede convertir en un número ENTERO utilizando las funciones integradas
ROUND o TRUNC.
• Los tipos INTEGER, BYTE y SHORT se pueden asignar entre sí, aunque se producirá un error de tiempo de
ejecución si el valor asignado está fuera de rango.
• Cualquier tipo de posición se puede asignar a cualquier otro tipo de posición. Se producirá un error de tiempo de
ejecución si se asigna un JOINTPOS de un grupo sin cinemática a un XYZWPR.
3.2 OPERACIONES
Las operaciones incluyen la manipulación de variables, constantes y literales para calcular valores utilizando los
operadores KAREL disponibles. Se discuten las siguientes operaciones:
• Operaciones aritmeticas
• Operaciones relacionales
• Operaciones booleanas
• Operaciones Especiales
Tabla 3–2enumera todos los operadores disponibles para usar con KAREL.
Operación Operador
3–4
MARRC75KR07091E Rev H 3. USO DE OPERADORES
Operación Operador
Los operadores de suma (+), resta (-) y multiplicación (*), junto con los operadores DIV y MOD, se
pueden usar para calcular valores dentro de expresiones aritméticas. Referirse aTabla 3–3.
EXPRESIÓN RESULTADO
3+2 5
3-2 1
3*2 6
• Los operadores DIV y MOD se utilizan para realizar divisiones ENTERAS. Referirse aTabla 3–4.
EXPRESIÓN RESULTADO
11 DIV 2 5
11 MODO 2 1
— El operador MOD devuelve el resto de una ecuación que resulta de dividir el operando del lado
izquierdo por el operando del lado derecho.
— Si el operando del lado derecho de una ecuación MOD es un número negativo, el resultado también es negativo.
— Si el divisor en una ecuación DIV o el operando del lado derecho de una ecuación MOD es cero, el
programa KAREL se cancela con el error "Dividir por cero".
• Los operadores INTEGER bit a bit AND, OR y NOT producen el resultado de una operación binaria
AND, OR o NOT en dos valores INTEGER. Referirse aTabla 3–5.
3–5
3. USO DE OPERADORES MARRC75KR07091E Rev H
* Debido a que los valores INTEGER negativos se representan en forma de complemento a dos, NOT i no es lo mismo
que -i.
• Si una ecuación INTEGER o REAL da como resultado un valor que excede el límite para las variables INTEGER o REAL, el
programa se cancela con un error. Si el resultado es demasiado pequeño para representarlo, se establece en cero.
NO Alto
:, @, # ↓
* , /, Y, DIV, MOD ↓
Unario + y -, O, +, - ↓
<, >, =, < >, < =, > =, > = < Bajo
Los operadores relacionales (< >, =, >, <, <=, >=) producen un resultado BOOLEANO (VERDADERO/FALSO)
correspondiente a si los valores de los operandos están o no en la relación especificada. En una expresión relacional,
ambos operandos deben ser del mismo tipo de datos simples. Existen dos excepciones a esta regla:
• Las expresiones REAL e INTEGER se pueden mezclar donde el operando INTEGER se convierte en un
número REAL.
Por ejemplo, en la expresión1 > .56,el número1se convierte en1.0y el resultado es VERDADERO.
• Los operandos VECTOR, que son un tipo de datos estructurados, se pueden comparar en una expresión relacional, pero
solo mediante el uso de los operadores de igualdad (=) o desigualdad (<>).
3–6
MARRC75KR07091E Rev H 3. USO DE OPERADORES
Los operadores relacionales funcionan con operandos INTEGER y REAL para evaluar ecuaciones
matemáticas estándar. Referirse aTabla 3–7.
NotaEs posible que realizar pruebas de igualdad (=) o desigualdad (<>) entre valores REALES no produzca los
resultados esperados. Debido a la forma en que se almacenan y manipulan los valores REALES, dos valores que
parecen ser iguales pueden no ser exactamente iguales. Esto también es cierto para los valores VECTORIALES que se
componen de valores REALES. Use >= o <= donde corresponda en lugar de =.
Los operadores relacionales también pueden tener valores de CADENA como operandos. Los valores de STRING se comparan
léxicamente carácter por carácter de izquierda a derecha hasta que ocurre uno de los siguientes. Referirse aTabla 3–7.
• El código de carácter para un carácter en una STRING es mayor que el código de carácter para el
carácter correspondiente en la otra STRING. El resultado en este caso es que la primera cadena es
mayor. Por ejemplo, el código ASCII para A es 65 y para a es 97. Por lo tanto, a > A = VERDADERO.
• Una STRING se agota mientras que quedan caracteres en la otra STRING. El resultado es que la primera
CADENA es menor que la otra CADENA.
• Ambas expresiones STRING se agotan sin encontrar una falta de coincidencia. El resultado es que las
CADENA son iguales.
EXPRESIÓN RESULTADO
4>2 CIERTO
Con los operandos BOOLEAN, VERDADERO > FALSO se define como una declaración verdadera. Por tanto, la expresión FALSO
>= VERDADERO es un enunciado falso. Las declaraciones FALSO >= FALSO y VERDADERO >= FALSO también son declaraciones
verdaderas.
Los operadores booleanos AND, OR y NOT, con operandos BOOLEAN, se pueden utilizar para realizar
evaluaciones matemáticas estándar.Tabla 3–8resume los resultados de la evaluación de expresiones
booleanas, y algunos ejemplos se enumeran enTabla 3–9.
3–7
3. USO DE OPERADORES MARRC75KR07091E Rev H
NO CIERTO − FALSO
FALSO − CIERTO
FALSO
FALSO CIERTO
FALSO FALSO
FALSO FALSO
FALSO CIERTO
FALSO
EXPRESIÓN RESULTADO
DIN[1] Y DIN[2] VERDADERO si tanto DIN[1] como DIN[2] son VERDADEROS; de lo contrario FALSO
El lenguaje KAREL proporciona operadores especiales para realizar funciones tales como probar el valor de
variables de POSICIÓN aproximadamente iguales, variables de POSICIÓN relativa, variables de VECTOR y
variables de CADENA. Esta sección describe sus operaciones y da ejemplos de su uso.
• El operador relacional (>=<) determina si dos operandos de POSICIÓN son aproximadamente iguales y produce
un resultado BOOLEAN. La comparación es similar a la relación de igualdad (=), excepto que los operandos
comparados no necesitan ser idénticos. Los valores del eje extendido no se consideran.
• Se deben usar operaciones aproximadamente iguales junto con las variables del sistema, $LOCTOL,
$ORIENTTOL y $CHECKCONFIG para determinar qué tan cerca deben estar dos posiciones. Referirse a
Manual de referencia del programapara una descripción de estas variables.
• El operador relacional (>=<) solo se permite en el uso normal del programa y no se puede usar como una condición
en una instrucción de controlador de condición.
3–8
MARRC75KR07091E Rev H 3. USO DE OPERADORES
En el siguiente ejemplo, el operador relacional (>=<) se utiliza para determinar si la posición actual del robot
(determinada mediante el procedimiento integrado CURPOS) está cerca de la posición de percha designada:
Operador relacional
Para ubicar una posición en el espacio, debe hacer referencia a un marco de coordenadas específico. En KAREL, los
marcos de referencia tienen el tipo de datos POSICIÓN. El operador de posición relativa (:) le permite hacer
referencia a una posición o vector con respecto al marco de coordenadas de otra posición (es decir, el marco de
coordenadas que tiene la otra posición como punto de origen).
El operador de posición relativa (:) se utiliza para transformar una posición de un marco de referencia a otro
marco.
En el ejemplo que se muestra enFigura 3–1, se usa un sistema de visión para ubicar un objetivo en un automóvil, como la
cabeza de un perno en un parachoques. El operador de posición relativa se utiliza para calcular la posición de la manija de la
puerta según los datos de los dibujos del automóvil. La ecuación que se muestra enFigura 3–1se utiliza para calcular la
posición dew_handleen el marco del MUNDO.
3–9
3. USO DE OPERADORES MARRC75KR07091E Rev H
z
X
z
y X
w_handle = perno : b_handle
(mundo (mundo (parachoque
cuadro) cuadro) cuadro) y
dónde:
tornilloes la posición del origen del marco BUMPER referenciado en el marco WORLD.
w_handle es la posición del mango a la que se hace referencia en el marco WORLD. es la posición
Por ejemplo, para determinar la posición del objetivo de la manija de la puerta(mango_b)en relación con la posición deltornillo
,utilice la ecuación que se muestra enFigura 3–2.
3–10
MARRC75KR07091E Rev H 3. USO DE OPERADORES
z
X
z
y
b_handle = INV(tornillo) : w_handle
X
(parachoques(parachoque (mundo
cuadro) cuadro) cuadro)
y
dónde:
INV(perno) es la posición del origen del marco WORLD referenciado en el marco BUMPER. es la
w_handle posición del mango a la que se hace referencia en el marco WORLD.
mango_b es la posición de la manija a la que se hace referencia en el marco del PARACHOQUES.
NotaEl orden del operador relativo (:) es importante.where:b_handle = bolt : w_handleNO es lo mismo que
b_handle = w_handle : perno
Operaciones vectoriales
• Una expresión VECTOR puede realizar ecuaciones de suma (+) y resta (-) en operandos VECTOR. El resultado
es un VECTOR cuyas componentes son la suma o diferencia de las correspondientes componentes de los
operandos. Por ejemplo, los componentes del VECTORvect_3 será igual a (5, 10, 9) como resultado de las
siguientes instrucciones del programa:
Operaciones vectoriales
3–11
3. USO DE OPERADORES MARRC75KR07091E Rev H
Por ejemplo, el VECTOR (8, 16, 10) se produce como resultado de la siguiente operación:
(4, 8, 5) * 2
Los componentes VECTOR pueden estar en el lado izquierdo o derecho del operador.
• Un VECTOR dividido por un ENTERO o un REAL hace que cada componente del VECTOR sea
dividido por el ENTERO (tratado como un número REAL) o REAL. Por ejemplo, (4, 8, 5) / 2 da como
resultado (2, 4, 2.5).
• Un ENTERO o REAL dividido por un VECTOR hace que el ENTERO (tratado como un número REAL) o
REAL sea multiplicado por el recíproco de cada elemento del VECTOR, produciendo así un nuevo
VECTOR. Por ejemplo, 3.5 / VEC(7.0,8.0,9.0) da como resultado (0.5,0.4375,0.38889).
Si alguno de los elementos del VECTOR es cero, el programa se aborta con el error “Dividir por
cero”.
• El operador de producto cruzado (#) produce un VECTOR que es normal a los dos operandos en la
dirección indicada por la regla de la mano derecha y con una magnitud igual al producto de las
magnitudes de los dos vectores y SIN(Θ), donde Θes el ángulo entre los dos vectores. Por ejemplo,
VEC(3.0,4.0,5.0) # VEC(6.0,7.0,8.0) da como resultado (-3.0, 6.0, -3.0).
Si alguno de los vectores es cero o los vectores son exactamente paralelos, se produce un error.
• El operador de producto interno (@) da como resultado un número REAL que es la suma de los productos de los
elementos correspondientes de los dos vectores. Por ejemplo, VEC(3.0,4.0,5.0) @ VEC(6.0,7.0,8.0) da como
resultado 86.0.
• Si el resultado de cualquiera de las operaciones anteriores es un componente de un VECTOR con una magnitud
demasiado grande para un número KAREL REAL, el programa se cancela con el error "Desbordamiento real".
EXPRESIÓN RESULTADO
3–12
MARRC75KR07091E Rev H 3. USO DE OPERADORES
EXPRESIÓN RESULTADO
VEC(17.3,1.5,0.23) /2 (8.65,0.75,0.115)
• Puede especificar que una rutina KAREL devuelva una CADENA como su valor. VerEspecificación de una rutina
KAREL para devolver un valor STRING.
• Se puede usar un operador entre cadenas para indicar la concatenación de las cadenas. VerUsar un
operador para concatenar cadenas.
• Las expresiones STRING se pueden usar en declaraciones WRITE. VerUso de una expresión STRING en una
instrucción WRITE.
• Durante la asignación de STRING, la cadena se truncará si la cadena de destino no es lo suficientemente grande para
contener la misma cadena.
3–13
3. USO DE OPERADORES MARRC75KR07091E Rev H
• Puede comparar o extraer un carácter de una cadena. por ejemplo sicadena_1 = 'ABCDE'.Su
salida sería'D'.VerComparación de cadenas.
Comparación de cadenas
• Puede construir una cadena a partir de otra cadena. VerConstruyendo una cadena a partir de otra cadena.
RETORNO (CHR(p_char))
FIN topper
EMPEZAR
ESCRIBIR SALIDA ('Ingresar cadena:') LEER
ENTRADA (cadena_1)
cadena_2 = ''
PARA idx = 1 PARA STR_LEN (cadena_1) HACER
cadena_2 = cadena_2 + superior(ORD(cadena_1, idx)) ENDFOR
3–14
Capítulo 4
CONTROL DE PROGRAMA
Contenido
4-1
4. CONTROL DE PROGRAMA MARRC75KR07091E Rev H
Las estructuras de control de programa definen el flujo de ejecución dentro de un programa o rutina e
incluyen alternancia, bucle y bifurcación incondicional, así como control de ejecución.
Las estructuras de control de programa se pueden utilizar para definir el flujo de ejecución dentro de un programa o rutina. De
forma predeterminada, la ejecución comienza con la primera instrucción que sigue a la instrucción BEGIN y continúa
secuencialmente hasta que se encuentra la instrucción END (o una instrucción RETURN). Las siguientes estructuras de control
están disponibles en KAREL:
• Alternancia
• Bucle
• Ramificación incondicional
• Control de ejecución
• Controladores de condiciones
Para obtener información detallada sobre cada tipo de estructura de control, consulte el Apéndice A, “Descripción
alfabética del lenguaje KAREL”.
Una estructura de control de alternancia le permite incluir secuencias alternativas de sentencias en un programa
o rutina. Cada alternativa puede constar de varios enunciados.
Durante la ejecución del programa, se selecciona una alternativa en función del valor de uno o más elementos de datos. La
ejecución del programa luego procede a través de la secuencia seleccionada de instrucciones.
• Declaración SI-proporciona un medio para especificar una de dos alternativas en función del valor de
una expresión BOOLEAN.
4–2
MARRC75KR07091E Rev H 4. CONTROL DE PROGRAMA
Una estructura de control de bucle le permite especificar que un conjunto de declaraciones se repita un número
arbitrario de veces, según el valor de los elementos de datos en el programa. KAREL admite tres estructuras de
control de bucle:
• losPARA declaración-Se utiliza cuando un conjunto de sentencias debe ejecutarse un número específico
de veces. El número de veces está determinado por elementos de datos INTEGER en la instrucción FOR. Al
comienzo del ciclo FOR, el valor inicial en el rango se asigna a una variable de contador INTEGER. Cada vez
que se repite el ciclo, se vuelve a evaluar el contador.
• losMIENTRAS declaración-se utiliza cuando se va a ejecutar una acción siempre que una expresión BOOLEAN
siga siendo VERDADERA. La expresión booleana se prueba al comienzo de cada iteración, por lo que es posible
que la acción se ejecute cero veces.
Advertencia
Nunca incluya una sentencia GO TO dentro o fuera de un bucle FOR. El programa podría
cancelarse con un error de "Desbordamiento de pila en tiempo de ejecución".
El lenguaje KAREL proporciona las siguientes sentencias de control de programa, que se utilizan para terminar o
suspender la ejecución del programa:
• ABORTAR-hace que finalice la ejecución del programa, incluido cualquier movimiento en curso. El
programa no puede continuar después de haber sido abortado.
4–3
4. CONTROL DE PROGRAMA MARRC75KR07091E Rev H
• PAUSA-hace que la ejecución se suspenda hasta que se ejecute una operación CONTINUAR.
• ESPERAR-hace que la ejecución se suspenda hasta que se cumpla una condición específica o una lista de
condiciones.
Ver también:Declaración ABORT, declaración DELAY, declaración PAUSE, declaración WAIT FOR, todo en
Apéndice A,Capítulo 6MANEJADORES DE CONDICIONES
Un controlador de condiciones define una serie de acciones que se realizarán siempre que se cumpla una
condición específica. Una vez definido, un manejador de condiciones se puede HABILITAR o DESHABILITAR.
4–4
Capítulo 5
RUTINAS
Contenido
5-1
5. RUTINAS MARRC75KR07091E Rev H
Las rutinas, de estructura similar a un programa, proporcionan un método para modularizar los programas KAREL.
Las rutinas pueden incluir declaraciones VAR y/o CONST y sentencias ejecutables. Sin embargo, a diferencia de los
programas, una rutina debe declararse dentro de un programa en mayúsculas y no puede incluir otras declaraciones
de rutina.
Las rutinas KAREL pueden ser rutinas predefinidas llamadas rutinas integradas o pueden ser definidas por el usuario.
• Los parámetros se pueden incluir en la declaración de una rutina. Esto le permite pasar datos a la rutina en el
momento en que se llama y devolver los resultados al programa que llama.
• Declaración de rutinas
• Rutinas de invocación
• Parámetros y Argumentos
• La sentencia ROUTINE se utiliza para declarar tanto rutinas de procedimiento como de función.
• Tanto las rutinas de procedimiento como las de función deben declararse antes de llamarlas.
5–2
MARRC75KR07091E Rev H 5. RUTINAS
• Las rutinas que son locales para el programa están completamente definidas en el programa. Las declaraciones de
rutinas locales incluyen:
— La declaración de RUTINA
— Cualquier declaración VAR y/o CONST para la rutina
• Aunque las secciones VAR y CONST de una rutina son idénticas en sintaxis a las de un programa, se aplican
las siguientes restricciones:
• Las rutinas que son locales para el programa se pueden definir después de la sección ejecutable si la rutina se
declara utilizando una cláusula FROM con el mismo nombre de programa. Los parámetros solo deben definirse
una vez. VerDefinición de rutinas locales usando una cláusula FROM.
--
FIN hecho_todavía
• Las rutinas que son externas al programa se declaran en un programa pero se definen en otro.
— Las declaraciones de rutinas externas incluyen solo la instrucción ROUTINE y una cláusula FROM.
• Puede incluir una lista de parámetros en la declaración de una rutina. Una lista de parámetros es una parte
opcional de la sentencia ROUTINE.
• Si una rutina es externa al programa, los nombres en la lista de parámetros no tienen importancia pero
deben incluirse para especificar los parámetros. Si no hay parámetros, los paréntesis utilizados para
encerrar la lista deben omitirse para las rutinas externas y locales.
5–3
5. RUTINAS MARRC75KR07091E Rev H
FIN procs_lib
Declaraciones de funciones
PROGRAMA funct_lib
RUTINA done_todavía(x: REAL; s1, s2 :STRING): BOOLEAN& DESDE bool_lib
- - rutina de función externa definida en bool_lib.kl
- - devuelve un valor BOOLEAN
RUTINA xy_dist(x1,y1,x2,y2: REAL): REAL
- - función local, devuelve un valor REAL VAR
EMPEZAR
FIN funct_lib
5–4
MARRC75KR07091E Rev H 5. RUTINAS
Las rutinas que se declaran en un programa se pueden llamar dentro de la sección ejecutable del programa, o
dentro de la sección ejecutable de cualquier rutina contenida en el programa. Llamar a una rutina hace que se
invoque la rutina. Se invoca una rutina de acuerdo con el siguiente procedimiento:
• Una vez finalizada la ejecución de un procedimiento, el control vuelve a la siguiente declaración después del punto
donde se llamó al procedimiento.
• Una vez finalizada la ejecución de una función, el control vuelve a la declaración de asignación donde se
llamó a la función.
• Tanto las rutinas de procedimiento como las de función se llaman con el nombre de la rutina seguido de un argumento
para cada parámetro que se ha declarado para la rutina.
• Un procedimiento se invoca como si fuera una sentencia. En consecuencia, una llamada a procedimiento constituye una
instrucción ejecutable completa.
Llamadas de procedimientomuestra las declaraciones de dos procedimientos seguidas de las llamadas a procedimientos para
invocarlos.
Llamadas de procedimiento
...
espera un poco - - invoca el procedimiento wait_a_bit
calc_dist (start_pos, end_pos, distancia)
- - invoca calc_dist usando tres argumentos para
- - los tres parámetros declarados
• Debido a que una función devuelve un valor, una llamada de función debe aparecer como parte o la totalidad de una expresión.
• Cuando el control regresa al programa o rutina que llama, la ejecución de la declaración que contiene la llamada
a la función se reanuda utilizando el valor devuelto.
Llamadas de funciónmuestra las declaraciones de dos funciones seguidas de las llamadas a funciones para invocarlas.
5–5
5. RUTINAS MARRC75KR07091E Rev H
Llamadas de función
RUTINA error_check : BOOLEAN DE error_prog
- - función externa sin parámetros devuelve un valor BOOLEAN RUTINA distancia
(p1, p2: POSICIÓN) : REAL &
DESDE fun_lib
- - función externa con dos parámetros devuelve un valor REAL BEGIN --
Programa principal
- - se invoca la función error_check y devuelve un BOOLEAN
- - expresión en la sentencia IF IF
error_check THEN
...
TERMINARA SI
• Las rutinas pueden llamar a otras rutinas siempre que la otra rutina esté declarada en el programa que contiene
la rutina inicial. Por ejemplo, si un programa llamadomaster_progcontiene una rutina llamada llamada_proc,esa
rutina puede llamar a cualquier rutina que esté declarada en el programa,master_prog.
• Se dice que una rutina que se llama a sí misma es recursiva y está permitida en KAREL. Por ejemplo, la rutina
factorial,se muestra en laFunción recursiva, se llama a sí mismo para calcular un valor factorial.
Función recursiva
RUTINA factorial(n: ENTERO) : ENTERO
- - calcula el valor factorial del entero n BEGIN
FIN factorial
• La única restricción en la profundidad de las llamadas de rutina es el uso de KARELpila,un área utilizada
para el almacenamiento de variables temporales y locales y para parámetros. Las llamadas de rutina hacen
que la información se coloque en la memoria de la pila. Cuando se ejecuta la declaración RETURN o END en
la rutina, esta información se quita de la pila. Si se realizan demasiadas llamadas de rutina sin que esta
información se elimine de la pila, el programa se quedará sin espacio en la pila.
Ver también:Sección 5.1.6para obtener información sobre cuánto espacio se usa en la pila para llamadas de rutina
5–6
MARRC75KR07091E Rev H 5. RUTINAS
La sentencia RETURN se utiliza en una rutina para restaurar el control de ejecución de una rutina a la
rutina o programa que llama.
• Si no se ejecuta ninguna sentencia RETURN, la sentencia END restaura el control al programa o rutina que
llama.
• En una función, la instrucción RETURN debe especificar un valor que se devolverá cuando se restablezca el control
a la rutina o programa que realiza la llamada.
- EXPEDIENTE
- SENDERO
— Tipos de visión
• Si el tipo de valor devuelto es ARRAY, no puede especificar un tamaño. Esto permite que la función
devuelva un ARRAY de cualquier longitud. El ARRAY devuelto, de una función valorada en ARRAY, puede
5–7
5. RUTINAS MARRC75KR07091E Rev H
utilizarse únicamente en una declaración de cesión directa. Las funciones con valores de ARRAY no se
pueden usar como parámetros para otras rutinas. Referirse aPaso correcto de un ARRAY, para ver un
ejemplo de un ARRAY pasado entre dos rutinas de función.
• Si no se proporciona ningún valor en la instrucción RETURN de una función, se genera un error de traductor.
• Si no se ejecuta ninguna sentencia RETURN en una función, la ejecución de la función termina cuando se
alcanza la sentencia END. No se puede devolver ningún valor a la rutina o programa que realiza la llamada, por
lo que el programa aborta con un error.
FOR i = 1 TO table_size DO
IF table[i] = 0 THEN RETURN (i) --retorna el índice ENDIF
ENDFOR
RETORNO (0) --devuelve 0 FIN
index_value
RUTINA comparar (test_var_1: INTEGER;
test_var_2: ENTERO): BOOLEANO
- - Devuelve el valor VERDADERO en los casos en que la prueba IF es
- - satisfecho. De lo contrario, devuelve el valor FALSO.
EMPEZAR
SI test_var_1 = test_var_2 ENTONCES
DEVOLVER (CIERTO) - - devoluciones CIERTO
MÁS
DEVOLVER (FALSO) - - devoluciones FALSO
TERMINARA SI
FIN comparar
• Global
5–8
MARRC75KR07091E Rev H 5. RUTINAS
• Local
• Las declaraciones globales se conocen comoestáticoporque se les da una ubicación de memoria que no cambia
durante la ejecución del programa, incluso si el programa se borra o se vuelve a cargar (a menos que se borren
las variables mismas).
• Las declaraciones realizadas en el programa principal, así como los identificadores predefinidos, son globales.
• Las reglas de alcance para rutinas, tipos, variables, constantes y etiquetas predefinidas y definidas por el usuario son
las siguientes:
— Las rutinas, los tipos, las variables y las constantes declaradas en la sección de declaración de un programa se
reconocen en todo el programa, incluidas las rutinas que se encuentran en el programa.
• Las declaraciones locales se reconocen solo dentro de las rutinas donde se declaran.
• Los datos locales se crean cuando se invoca una rutina. Los datos locales se destruyen cuando la rutina termina de
ejecutarse y regresa.
• Las reglas de alcance para rutinas, variables, constantes y etiquetas predefinidas y definidas por el usuario son las
siguientes:
— Las variables y constantes, declaradas en la sección de declaración de una rutina, y los parámetros,
declarados en la lista de parámetros de rutina, se reconocen solo en esa rutina.
— Las etiquetas definidas en un programa (no en una rutina del programa) son locales al cuerpo del
programa y no se reconocen dentro de ninguna rutina del programa.
— Las etiquetas definidas en una rutina son locales para la rutina y solo se reconocen en esa rutina.
• Los tipos no se pueden declarar en una rutina, por lo que nunca son locales.
Los identificadores que se utilizan en la lista de parámetros de una declaración de rutina se denominan parámetros. Se
puede hacer referencia a un parámetro declarado en una rutina a lo largo de la rutina. Los parámetros se utilizan para pasar
datos entre el programa que llama y la rutina. Los datos proporcionados en una llamada, denominados argumentos,
pueden afectar la forma en que se ejecuta la rutina.
5–9
5. RUTINAS MARRC75KR07091E Rev H
• Como parte de la llamada de rutina, debe proporcionar un elemento de datos, denominado argumento, para cada
parámetro en la declaración de rutina.
• Un argumento puede ser una variable, una constante o una expresión. Debe haber un argumento
correspondiente a cada parámetro.
• Los argumentos deben ser del mismo tipo de datos que los parámetros a los que corresponden, con tres
excepciones:
— Cualquier tipo posicional se puede pasar a cualquier otro tipo posicional. Si se pasan a una rutina
definida por el usuario, el tipo posicional del argumento se convierte y se pasa por valor al tipo de
parámetro.
— Los argumentos ARRAY o STRING de cualquier longitud se pueden pasar a parámetros del mismo tipo de
datos.
VAR
cadena_larga: CADENA[10]; cadena_corta: CADENA[5]
distancia_exacta: REAL; áspera_dist: ENTERO
RUTINA label_dist (strg: STRING; dist: REAL) &
DESDE procs_lib
EMPEZAR
...
dist_etiqueta(cadena_larga, dist_exacta)
- - long_string corresponde a strg;
- - dist_exacta corresponde a dist
dist_etiqueta(cadena_corta, dist_aproximada)
- - short_string, de diferente longitud,
- - corresponde a strg; rough_dist, un
- - ENTERO, corresponde a dist REAL
label_dist('nueva distancia', (exact_dist * .75))
- - constante literal y expresión REAL
- - los argumentos corresponden a los parámetros
FIN de parámetros
5–10
MARRC75KR07091E Rev H 5. RUTINAS
Si se pasa un argumento por valor, se pasa una copia temporal del argumento a la rutina. El
parámetro correspondiente utiliza esta copia temporal. Cambiar el parámetro no afecta el
argumento original.
• Los argumentos constantes y de expresión siempre se pasan a la rutina por valor. Las variables normalmente se
pasan por referencia. Sin embargo, los siguientes argumentos variables se pasan por valor:
• Si bien los argumentos de variables normalmente se pasan por referencia, puede pasarlos por valor encerrando
el identificador de variable entre paréntesis. Los paréntesis, en efecto, convierten la variable en una expresión.
• Las variables PATH, FILE y vision no se pueden pasar por valor. Los elementos ARRAY (forma indexada de
una variable ARRAY) se pueden pasar por valor, pero las variables ARRAY completas no.
Pasar argumentos variablesmuestra una rutina que afecta el argumento que se le pasa de manera diferente
dependiendo de cómo se pase el argumento variable.
parámetro = parámetro * 3
ESCRIBIR ('valor del parámetro:', parámetro, CR)
FIN prueba
EMPEZAR
argumento =5
prueba((argumento)) - - arg pasado a param por valor
ESCRIBIR('valor de arg:', arg, CR) test(arg)
- - arg pasado a param por referencia
WRITE('valor de arg:', arg, CR) END
referencia
5–11
5. RUTINAS MARRC75KR07091E Rev H
valor de argumento: 5
valor de param: 15 valor
de arg: 15
Si la rutina llama desdePasar argumentos variablesse hicieron en orden inverso, pasando primeroargumento por
referencia usando"prueba (argumento)"y luego pasarlo por valor usando"prueba ((argumento)),"la salida se vería
afectada de la siguiente manera:
valor de param: 15 valor
de arg: 15 valor de
param: 45 valor de arg:
15
• Para pasar una variable como parámetro a una rutina KAREL, puede usar uno de dos métodos:
— Puede usar BYNAME. La función BYNAME permite que un programa pase como parámetro a una rutina
una variable cuyo nombre está contenido en una cadena. Por ejemplo, si las variables de cadena
prog_nameynombre_varcontiene el nombre de un programa y la variable que el operador ha
ingresado, esta variable se pasa a una rutina usando esta sintaxis:
other_rtn(BYNAME(prog_name,var_name, entrada))
• Si una rutina de función devuelve un ARRAY, una llamada a esta función no se puede usar como argumento para
otra rutina. Si se intenta un pase incorrecto, se detecta un error de traducción.
Paso correcto de un ARRAYmuestra el uso correcto de un ARRAY pasado entre dos rutinas de
función.
un = rtn_ario
imprimir_ario(a)
5–12
MARRC75KR07091E Rev H 5. RUTINAS
FIN correcto
Paso incorrecto de un ARRAYmuestra el uso incorrecto de un ARRAY pasado entre dos rutinas de
funciones.
Cuando se ejecuta un programa, se asigna una pila de 300 palabras a menos que especifique un tamaño de pila. La pila se
asigna desde la RAM de usuario disponible.
• Además, para cada parámetro y variable local de la rutina, se utiliza espacio adicional en la pila,
según la variable o el tipo de parámetro, como se muestra enTabla 5–1.
BOOLEANO 1 2 1
MATRIZ DE BOOLEANO No permitido 1 + tamaño de matriz
5–13
5. RUTINAS MARRC75KR07091E Rev H
CONFIGURAR 1 2 1
ARRAY DE CONFIGURACIÓN No permitido 1 + tamaño de matriz
ENTERO 1 2 1
MATRIZ DE ENTEROS No permitido 1 + tamaño de matriz
POS CONJUNTO 2 12 10
ARRAY DE POS CONJUNTOS 1 No permitido 1 + 10 * tamaño de matriz
CONJUNTOPOS1 2 4 2
ARRAY DE JOINTPOS1 1 No permitido 1 + 2 * tamaño de matriz
CONJUNTOPOS2 2 5 3
ARRAY DE JOINTPOS2 1 No permitido 1 + 3 * tamaño de matriz
CONJUNTOPOS3 2 6 4
ARRAY DE JOINTPOS3 1 No permitido 1 + 4 * tamaño de matriz
CONJUNTOPOS4 2 7 5
ARRAY DE JOINTPOS4 1 No permitido 1 + 5 * tamaño de matriz
CONJUNTOPOS5 2 8 6
ARRAY DE JOINTPOS5 1 No permitido 1 + 6 * tamaño de matriz
CONJUNTOPOS6 2 9 7
ARRAY DE JOINTPOS6 1 No permitido 1 + 7 * tamaño de matriz
CONJUNTOPOS7 2 10 8
ARRAY DE JOINTPOS7 1 No permitido 1 + 8 * tamaño de matriz
CONJUNTOPOS8 2 11 9
ARRAY DE JOINTPOS8 1 No permitido 1 + 9 * tamaño de matriz
CONJUNTOPOS9 2 12 10
ARRAY DE JOINTPOS9 1 No permitido 1 + 10 * tamaño de matriz
POSICIÓN 2 dieciséis 14
ARRAY DE POSICIÓN 1 No permitido 1 + 14 * tamaño de matriz
REAL 1 2 1
MATRIZ DE REALES 1 No permitido 1 + tamaño de matriz
5–14
MARRC75KR07091E Rev H 5. RUTINAS
* tamaño de matriz)/4
VECTOR 1 4 3
MATRIZ DE VECTORES 1 No permitido 1 + 3 * tamaño de matriz
XYZWPR 2 10 8
MATRIZ DE XYZWPR 1 No permitido 1 + 8 * tamaño de matriz
XYZWPREXT 2 13 11
MATRIZ DE XYZWPREX 1 No permitido 1 + 11 * tamaño de matriz
El lenguaje KAREL incluye rutinas predefinidas denominadas rutinas incorporadas de KAREL o incorporados. Las
rutinas predefinidas pueden ser procedimientos o funciones incorporadas. Se proporcionan como una conveniencia
de programación y realizan servicios comúnmente necesarios.
Muchos de los integrados devuelven un parámetro de estado que significa un error si no es igual a 0. El error devuelto puede ser
cualquiera de los códigos de error definidos en el código específico de la aplicación.Manual de configuración y operaciones
. Estos errores pueden publicarse en el registro de errores y mostrarse en la línea de error llamando a la rutina
integrada POST_ERR con el parámetro de estado devuelto.
Tabla A–7es una lista resumida de todas las rutinas integradas predefinidas incluidas en el lenguaje KAREL. Se
proporciona una descripción detallada de todas las rutinas integradas de KAREL enApéndice A.
Ver también:Apéndice A, que enumera los integrados KAREL opcionales y dónde están documentados.
Categoría identificador
5–15
5. RUTINAS MARRC75KR07091E Rev H
Categoría identificador
Espejo ESPEJO
Control
5–16
MARRC75KR07091E Rev H 5. RUTINAS
Categoría identificador
5–17
5. RUTINAS MARRC75KR07091E Rev H
Categoría identificador
Traducir TRADUCIR
5–18
Capítulo 6
MANEJADORES DE CONDICIONES
Contenido
6-1
6. MANEJADORES DE CONDICIONES MARRC75KR07091E Rev H
La función de manejo de condiciones del lenguaje KAREL permite que un programa responda a condiciones externas de manera
más eficiente que lo que permiten las estructuras de control de programas convencionales.
Estos manejadores de condiciones, también conocidos como manejadores de condiciones globales, permiten monitorear
condiciones específicas en paralelo con la ejecución normal del programa y, si las condiciones ocurren, se toman las acciones
correspondientes en respuesta.
Para que un manejador de condiciones sea monitoreado, primero debe definirse y luego habilitarse. Deshabilitar un controlador
de condiciones lo elimina del grupo que se está analizando. Al purgar los controladores de condiciones, se elimina su definición.
Tabla 6–1enumera las condiciones que pueden ser monitoreadas por los manejadores de condiciones.
puerto_id[n] ERROR[n]
NO port_id[n] EVENTO[n]
puerto_id[n]+ ABORTAR
puerto_id[n]- PAUSA
DESMANEJAR DESPAUSAR
nombre_rutina ABORTAR
6–2
MARRC75KR07091E Rev H 6. MANEJADORES DE CONDICIONES
PAUSA
SEMÁFORO DE SEÑAL[n]
Los controladores de condiciones globales se definen mediante la ejecución de una instrucción CONDITION en la sección
ejecutable de un programa. La definición especifica pares de condiciones/acciones. Las siguientes reglas se aplican a los
controladores de condiciones globales.
• Se hace referencia a cada controlador de condición global en todo el programa mediante un número específico,
del 1 al 1000. Si se definió previamente un controlador de condición con el número especificado, se debe purgar
antes de que se reemplace por uno nuevo.
• Los pares de condiciones/acción de un controlador de condición global se especifican en las cláusulas WHEN de una
instrucción CONDITION. Todas las cláusulas WHEN para un controlador de condiciones se habilitan, deshabilitan y
purgan juntas.
• La lista de condiciones representa una lista de condiciones que se supervisarán cuando se escanee el controlador de
condiciones.
• De manera predeterminada, cada controlador de condición global se analiza a una velocidad basada en el valor de
$SCR.$cond_time. Si se usa la cláusula "WITH $SCAN_TIME = n" en una instrucción CONDITION, la condición se
escaneará aproximadamente cada "n" milisegundos. El intervalo real entre los escaneos se determina como se
muestra enTabla 6–4.
6–3
6. MANEJADORES DE CONDICIONES MARRC75KR07091E Rev H
• Las condiciones múltiples deben estar separadas por el operador AND o el operador OR. No se
permite mezclar AND y OR.
• Si se usa AND, todas las condiciones de una única cláusula WHEN deben cumplirse simultáneamente para que
se active el controlador de condiciones.
• Si se usa OR, las acciones se activan cuando alguna de las condiciones es VERDADERA.
• La lista de acciones representa una lista de acciones a realizar cuando se cumplen simultáneamente las
condiciones correspondientes de la cláusula WHEN.
• Las acciones múltiples deben estar separadas por una coma o una nueva línea.
Definiciones de manejadores de condiciones globalesmuestra tres ejemplos de definición de manejadores de condiciones globales.
Ver también:psSCR.$cond_time Variable del sistema,Manual de referencia del software de FANUC America
CorporationpsCalificador de controlador de condición SCAN_TIME,Manual de referencia del software de FANUC
America Corporation
6–4
MARRC75KR07091E Rev H 6. MANEJADORES DE CONDICIONES
• Puede habilitar, deshabilitar y purgar los controladores de condiciones globales según sea necesario en todo el programa. Cada
vez que se activa un controlador de condiciones, se desactiva automáticamente, a menos que se incluya una acción HABILITAR en
la lista de acciones. (Consulte el controlador de condiciones 2 enDefiniciones de manejadores de condiciones globales.)
— La declaración o acción DISABLE elimina el controlador de condición especificado del grupo de controladores
de condición escaneados. El controlador de condiciones permanece definido y se puede volver a habilitar
con la instrucción o acción ENABLE.
• ENABLE, DISABLE y PURGE no tienen efecto si el controlador de condición especificado no está definido. Si el
controlador de condiciones especificado ya está habilitado, ENABLE no tiene ningún efecto; si ya está
deshabilitado, DISABLE no tiene efecto.
6–5
6. MANEJADORES DE CONDICIONES MARRC75KR07091E Rev H
...
HABILITAR CONDICIÓN[1] --el manejador de condiciones 1 está
habilitado. . .
line_stop = VERDADERO - - activa (y desactiva) el controlador de condiciones 1
...
CONDICIÓN DE PURGA[2] - - se eliminó la definición del manejador de condiciones 2
HABILITAR CONDICIÓN[2] --ya no tiene ningún efecto line_go
= TRUE - - ya no es una condición monitoreada
6.2 CONDICIONES
Se especifican una o más condiciones en la lista de condiciones de una cláusula WHEN o UNTIL, que define la parte de
condiciones de un par de condiciones/acciones. Las condiciones pueden ser
• Estados, que quedan satisfechos mientras exista el Estado. Ejemplos de estados son DIN[1] y
(VAR1 > VAR2).
• Eventos: que se satisfacen solo en el instante en que ocurre el evento. Ejemplos de eventos
son ERROR[n], DIN[n]+ y PAUSE.
Las siguientes reglas se aplican a las condiciones de eventos del sistema y del programa:
— Si todas las condiciones de una cláusula AND, WHEN o UNTIL se cumplen simultáneamente, se activa el
controlador de condiciones y se realizan las acciones correspondientes.
— Si se cumplen todas las condiciones de una cláusula OR, WHEN o UNTIL, se activa el controlador de
condiciones y se realizan las acciones correspondientes.
• Las condiciones de evento raramente ocurren simultáneamente. Por lo tanto, nunca debe usar AND
entre dos condiciones de evento en una sola cláusula WHEN o UNTIL porque ambas condiciones no se
cumplirán simultáneamente.
• Si bien muchas condiciones tienen una forma similar a las expresiones booleanas en KAREL y tienen un
significado similar, solo se permiten las formas enumeradas en esta sección, no las expresiones booleanas
generales.
• Se permiten expresiones dentro de una cláusula EVAL. Se pueden usar expresiones más generales en el
lado derecho de las condiciones de comparación, encerrando la expresión en una cláusula EVAL: EVAL
(expresión). Sin embargo, las expresiones en una cláusula EVAL se evalúan cuando se define el controlador
de condiciones. No se evalúan dinámicamente.
• El valor de una expresión de cláusula EVAL debe ser INTEGER, REAL o BOOLEAN.
6–6
MARRC75KR07091E Rev H 6. MANEJADORES DE CONDICIONES
Las condiciones de Port_id se utilizan para monitorear señales de puertos digitales. Port_id debe ser uno de los identificadores
de matriz de puertos BOOLEAN predefinidos (DIN, DOUT, OPIN, OPOUT, TPIN, TPOUT, RDI, RDO, WDI o WDO). El valor de
norteespecifica la señal del conjunto de puertos que se va a monitorear.Tabla 6–5enumera las condiciones de port_id
disponibles.
• Por las condiciones del estado,puerto_id[n]yNO port_id[n],el puerto se prueba durante cada exploración. Las
siguientes condiciones se cumplirían si, durante un escaneo, DIN[1] fuera VERDADERO y DIN[2] fuera FALSO:
Tenga en cuenta que una señal de entrada debe permanecer ENCENDIDA o APAGADA durante el tiempo de exploración mínimo para garantizar
• Para la condición de eventopuerto_id[n]+,el valor del puerto inicial se prueba cuando el controlador de condiciones está
habilitado. Cada escaneo prueba el cambio especificado en la señal. El cambio debe ocurrir mientras el controlador de
condiciones está habilitado.
La siguiente condición solo se cumpliría si, mientras el controlador de condiciones estaba habilitado, DIN[1]
cambió de VERDADERO a FALSO desde el último escaneo.
CUANDO DIN[1]- DO . . .
Las condiciones relacionales se utilizan para probar la relación entre dos operandos. Se cumplen cuando la relación
especificada es VERDADERA. Las condiciones relacionales son condiciones de estado, lo que significa que la relación se
prueba durante cada exploración.Tabla 6–6enumera las condiciones relacionales.
6–7
6. MANEJADORES DE CONDICIONES MARRC75KR07091E Rev H
operando = operando La relación especificada es VERDADERA. Los operandos de la izquierda pueden ser un elemento de matriz
de puertos, al que se hace referencia como port_id[n], o una variable. Los operandos de la derecha
operando < > operando
pueden ser una variable, una constante o una cláusula EVAL. (estado)
operando < operando
• Ambos operandos deben ser del mismo tipo de datos y solo pueden ser de tipo INTEGER, REAL o BOOLEAN. (Al
igual que en otras situaciones, las constantes INTEGER se pueden usar cuando se requieren valores REALES y
se tratarán como valores REALES).
• El operando del lado izquierdo de la condición puede ser cualquiera de las señales de la matriz de puertos, una variable definida
por el usuario, una variable estática o una variable del sistema que pueda leer un programa KAREL.
• El operando en el lado derecho de la condición puede ser una variable definida por el usuario, una variable estática, una
variable del sistema que puede ser leída por un programa KAREL, cualquier constante o una cláusula EVAL. Por ejemplo:
• La cláusula EVAL le permite incluir expresiones en condiciones relacionales. Sin embargo, solo se evalúa
cuando se define el controlador de condiciones. La expresión de la cláusula EVAL no puede incluir ninguna
llamada de rutina.
Las condiciones de eventos del sistema y del programa se utilizan para monitorear los eventos generados por el sistema y el programa.
La condición especificada se cumple solo si el evento ocurre cuando el controlador de condiciones está habilitado.
6–8
MARRC75KR07091E Rev H 6. MANEJADORES DE CONDICIONES
Los controladores de condiciones habilitados que contienen condiciones de ERROR, EVENTO, PAUSA, ABORT, ENCENDIDO o
CONTINUAR se analizan solo si se produce el tipo de evento especificado. Por ejemplo, un controlador de condiciones
habilitado que contenga una condición de ERROR solo se analizará cuando se produzca un error. Tabla 6–7enumera las
condiciones de eventos disponibles del sistema y del programa.
ERROR [n] Se alcanza el error especificado por n o, si n = *, se produce cualquier error. (evento)
Condición de ERROR
ffccc (decimal)
dónde
Por ejemplo, 15018 es MOTN-018, que es "Posición no accesible". El código de instalación es 15 y el código de
error es 018. Consulte laManual de códigos de error de FANUC America Corporationpara obtener una lista
completa de los códigos de error.
• La condición de ERROR también se puede utilizar para supervisar la aparición de cualquier error especificando
un asterisco (*), el carácter comodín, en lugar de un código de error específico. Por ejemplo, ERROR[*] supervisa
la aparición de cualquier error.
• La condición de ERROR se cumple solo para el análisis realizado cuando se detectó el error. El error
no se recuerda en los análisis posteriores.
6–9
6. MANEJADORES DE CONDICIONES MARRC75KR07091E Rev H
EVENTO Condición
• La condición de EVENTO se cumple solo para el escaneo realizado cuando se señaló el evento. El evento no
se recuerda en los análisis posteriores.
ABORTAR Condición
Si se utiliza una condición ABORT en un controlador de condiciones, todas las acciones, excepto las llamadas de
rutina, se realizarán aunque el programa haya abortado.
PAUSA Condición
• La condición PAUSE monitorea la pausa de la ejecución del programa. Si una de las acciones correspondientes
es una llamada de rutina, también es necesario especificar una acción SIN PAUSA o SIN PAUSA.
CONTINUAR Condición
• La condición CONTINUAR supervisa la reanudación de la ejecución del programa. Si la ejecución del programa
está en pausa, la acción CONTINUAR, el comando KCL> CONTINUAR, un INICIO DE CICLO desde el panel del
operador o la tecla ADELANTE de la consola portátil continuarán la ejecución del programa y cumplirán la
condición CONTINUAR.
Condición de ENCENDIDO
• La condición POWERUP monitorea la reanudación de la ejecución del programa después de una recuperación de falla
de energía. El controlador debe poder recuperarse con éxito de un corte de energía antes de que se pueda reanudar el
programa.
SEMÁFORO Condición
• La condición SEMAPHORE supervisa el semáforo especificado. La función integrada CLEAR_SEMA se puede utilizar
para establecer el valor del semáforo en 0. La función integrada POST_SEMA o la acción SIGNAL SEMAPHORE se
pueden utilizar para incrementar el valor del semáforo y satisfacer la condición SEMAPHORE.
Ver también:EnApéndice A:
ABORTAR Condición
CONTINUAR Condición
Condición de ERROR
6–10
MARRC75KR07091E Rev H 6. MANEJADORES DE CONDICIONES
EVENTO Condición
PAUSA Condición
Condición de ENCENDIDO
SEMÁFORO Condición
6.3 COMPORTAMIENTO
Las acciones se especifican en la lista de acciones de una cláusula WHEN. Las acciones pueden ser
Cuando se cumplen las condiciones de un controlador de condiciones, se activa el controlador de condiciones. Las
acciones correspondientes a las condiciones satisfechas se realizan en la secuencia en que aparecen en la definición
del controlador de condiciones, excepto las llamadas de rutina. Las rutinas se ejecutan después de que se hayan
realizado todas las demás acciones.
Tenga en cuenta que, aunque muchas de las acciones tienen una forma similar a las sentencias KAREL y los efectos
son similares a las sentencias KAREL correspondientes, las acciones no son sentencias ejecutables. Sólo se permiten
los formularios indicados en este apartado.
ACCIÓN RESULTADO
variable = expresión El valor de la expresión se asigna a la variable. La expresión puede ser una
variable, una constante, un elemento de matriz de puertos o una cláusula
EVAL.
6–11
6. MANEJADORES DE CONDICIONES MARRC75KR07091E Rev H
• Las acciones de asignación, "variable = expresión" y "port_id[n] = expresión" se pueden utilizar para asignar
valores a variables y elementos de la matriz de puertos.
— La variable debe ser una variable definida por el usuario, una variable estática o una variable del
sistema sin un rango mínimo/máximo y que pueda ser escrita por un programa KAREL.
— La matriz de puertos, si está a la izquierda, debe ser una matriz de puertos de salida que pueda configurarse mediante un programa KAREL.
— La expresión puede ser una variable definida por el usuario, una variable estática. una variable del sistema que puede ser leída
por un programa KAREL, cualquier constante o una cláusula EVAL.
• Si una variable está en el lado izquierdo de la asignación, la expresión también puede ser un elemento de matriz de puertos. Sin embargo,
no puede asignar un elemento de matriz de puertos a un elemento de matriz de puertos directamente. Por ejemplo, la primera asignación
que se muestra no es válida, pero las dos siguientes son válidas:
• Si la expresión es una variable, debe ser una variable global. El valor utilizado es el valor actual de la
variable en el momento en que se realiza la acción, no cuando se define el controlador de condiciones. Si la
expresión es una cláusula EVAL, se evalúa cuando se define el controlador de condiciones y ese valor se
asigna cuando se realiza la acción.
• Ambos lados de la acción de asignación deben ser del mismo tipo de datos. Se permite una cláusula
INTEGER o EVAL en el lado derecho de la asignación con un INTEGER, REAL o BOOLEAN en el lado
izquierdo.
Las acciones relacionadas con el movimiento afectan el movimiento actual y pueden afectar los movimientos
posteriores. se dan enTabla 6–9.
ACCIÓN RESULTADO
6–12
MARRC75KR07091E Rev H 6. MANEJADORES DE CONDICIONES
• Si se emite un STOP, el movimiento actual y cualquier movimiento en cola se empujan como un conjunto en una pila de
movimiento detenido. Si no hay ningún movimiento en curso, se empuja una entrada vacía en la pila.
• Si se emite un RESUME, el conjunto de movimiento detenido más reciente en la pila de movimiento detenido se pone en cola para su
ejecución.
• Si se emite un CANCELAR, se cancela la moción actualmente en curso. Cualquier moción en cola para el mismo
grupo detrás de la moción actual también se cancela. Si no hay ningún movimiento en curso, la acción no tiene
efecto.
• Si se emite un RETENCIÓN, se retiene la moción actual y se evita que comiencen las mociones subsiguientes.
La acción UNHOLD libera el movimiento retenido.
Las siguientes restricciones se aplican a las acciones de llamada de rutina o rutinas de interrupción:
• La rutina de interrupción no puede tener parámetros y debe ser un procedimiento (no una función).
• Si el programa interrumpido utiliza sentencias READ, la rutina de interrupción no puede leer de la misma
variable de archivo. Si un programa interrumpido está leyendo y la rutina de interrupción intenta una lectura
desde la misma variable de archivo, el programa se cancela.
• Cuando se inicia una rutina de interrupción, el programa KAREL interrumpido se suspende hasta que
regresa la rutina.
• Las rutinas de interrupción, como los programas KAREL, pueden ser interrumpidas por otras rutinas. La profundidad máxima
de interrupción está limitada solo por el tamaño de la memoria de pila.
• Las rutinas se inician en la secuencia en la que aparecen en la definición del controlador de condiciones, pero
dado que se interrumpen entre sí, en realidad se ejecutarán en orden inverso.
• Las interrupciones se pueden priorizar para que ciertas rutinas de interrupción no puedan ser interrumpidas por otras. El
calificador de controlador de condición $PRIORITY se puede utilizar para establecer la prioridad de ejecución de una acción
de rutina indicada. Los valores de $PRIORITY deben estar entre 0 y 255, donde el valor más bajo representa una prioridad
más baja. Si se llama a una rutina de baja prioridad mientras se ejecuta una rutina con una prioridad más alta, se ejecutará
solo cuando se haya completado la rutina de prioridad más alta. Si no se especifica $PRIORITY, la prioridad de la rutina
será por defecto el valor actual de la variable de sistema $PRIORITY.
Ver también:Cláusula WITH, Apéndice A, "Descripción alfabética del lenguaje KAREL", para obtener más
información sobre $PRIORITY
6–13
6. MANEJADORES DE CONDICIONES MARRC75KR07091E Rev H
ACCIÓN RESULTADO
SIN PAUSA La ejecución del programa se reanuda si el programa se pausó o se impide que
se pause.
PULSO DOUT[n] PARA t El puerto n especificado se pulsa durante el intervalo de tiempo t (en milisegundos).
DESPAUSAR Si se especifica un nombre_de_rutina como una acción, pero la ejecución del programa está en
pausa, la ejecución se reanuda solo durante la duración de la rutina y luego se pausa
nuevamente.
Ver también:Apéndice Apara obtener más información sobre cada acción miscelánea.
6–14
Capítulo 7
Contenido
7-1
7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS MARRC75KR07091E Rev H
7–2
MARRC75KR07091E Rev H 7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS
Las funciones del lenguaje KAREL le permiten realizar las siguientes operaciones de entrada/salida (E/S)
en serie:
• Abra archivos de datos y puertos de comunicación serie utilizando la instrucción OPEN FILE
• Cierre los archivos de datos y los puertos de comunicación serie utilizando la instrucción CLOSE FILE
• Lea desde archivos, puertos de comunicación y dispositivos de interfaz de usuario utilizando la instrucción READ
• Escriba en archivos, puertos de comunicación y dispositivos de interfaz de usuario mediante la instrucción WRITE
Variables de archivose utilizan para indicar el archivo, el puerto de comunicación o el dispositivo en el que se realizará
una operación de E/S serie.
tamponesse utilizan para almacenar datos que aún no se han transmitido. El uso de elementos de datos en
instrucciones READ y WRITE y sus especificadores de formato dependen de si los datos son de texto (ASCII) o
binarios, y del tipo de datos.
Una variable de archivo se utiliza para indicar el archivo, el puerto de comunicación o el dispositivo en el que desea
realizar una operación de E/S serie particular.
Tabla 7–1enumera las variables de archivo predefinidas para los dispositivos de interfaz de usuario. Estas variables de archivo
ya están abiertas y se pueden usar en las declaraciones READ o WRITE.
7–3
7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS MARRC75KR07091E Rev H
Una variable de archivo se puede especificar en una instrucción KAREL como una variable de ARCHIVO.Uso de ARCHIVO en un
programa KARELmuestra un ejemplo de declaración de una variable FILE y de uso de FILE en la sección ejecutable de un
programa.
PROGRAMA lun_prog
VAR
archivo_actual: ARCHIVO
ROUTINE input_data(file_spec:FILE) DESDE util_prog COMENZAR
Se permite compartir variables de ARCHIVO entre programas siempre que una sola tarea esté ejecutando los
programas. No se permite compartir variables de archivo entre tareas.
La instrucción OPEN FILE asocia la variable de archivo con un archivo de datos o puerto de comunicación en
particular.
La asociación permanece vigente hasta que se cierra el archivo, ya sea explícitamente mediante una instrucción CLOSE FILE o
implícitamente cuando la ejecución del programa finaliza o se cancela.
La instrucción OPEN FILE especifica cómo se va a usar el archivo (cadena de uso) y qué archivo o puerto (cadena de
archivo) se usa.
7–4
MARRC75KR07091E Rev H 7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS
Los atributos especifican los detalles de funcionamiento de un puerto serie o la variable ARCHIVO KAREL. Los
incorporados SET_PORT_ATR y SET_FILE_ATR se utilizan para establecer estos atributos. Se debe llamar a
SET_FILE_ATR antes de abrir el ARCHIVO. SET_PORT_ATR se puede llamar antes o después de que se abra el ARCHIVO
que está usando un puerto serie.
Tabla 7–2enumera cada tipo de atributo, su función y si el atributo está diseñado para usarse con dispositivos de
enseñanza colgante y CRT/KB, puertos seriales, archivos de datos o conductos. Referirse aApéndice Apara más
información.
usó usó
ATR_DBITS Longitud de datos SET_PORT_ATR no utilizado válido no no no utilizado
usó usó
ATR_EOL Fin de la línea SET_FILE_ATR no utilizado válido no válido válido
usó
ATR_FIELD Campo SET_FILE_ATR válido válido válido válido válido
usó usó
ATR_PARIDAD Paridad SET_PORT_ATR no utilizado válido no no no utilizado
usó usó
ATR_PASSALL pasall SET_FILE_ATR válido válido no válido válido
usó
ATR_READAHD Leer por adelantado SET_PORT_ATR no utilizado válido no no no utilizado
transferir
usó usó
ATR_TIMEOUT Se acabó el tiempo SET_FILE_ATR válido válido no válido válido
usó
ATR_UF sin formato SET_FILE_ATR no utilizado válido válido válido válido
transferir
7–5
7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS MARRC75KR07091E Rev H
usó usó
ATR_PIPOVADV Tubo SET_FILE_ATR no utilizado no no válido válido
Desbordamiento usó usó
ATR_PIPWAIT Esperar datos SET_FILE_ATR no utilizado no no válido válido
usó usó
Tipo de atributo Descripción Dispositivo válido Modo de uso Valores válidos Valor por defecto
BAUD_2400:
2400 baudios
BAUD_1200:
1200 baudios
ATR_EOL Si se especifica, el puerto serie se PUERTO Leer escribir Cualquier ASCII 13 (retorno de carro)
Fin de la línea cambia para terminar de leer código de carácter
cuando el valor del atributo
especificado. Referirse a Apéndice
D, para obtener una lista de
valores de atributo válidos.
ATR_FIELD Si se especifica, la cantidad de TP/TRC, Solo lectura ignorado Leer datos hasta
Campo datos leídos depende del PUERTO, ARCHIVO carácter terminador
especificador de formato en la (EOL) aparece
instrucción READ o del valor
predeterminado del tipo de
datos que se lee. Si no se
especifica, los datos se leen
hasta que aparece el carácter
de terminación (EOL).
7–6
MARRC75KR07091E Rev H 7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS
Tipo de atributo Descripción Dispositivo válido Modo de uso Valores válidos Valor por defecto
obtener información.
PARIDAD_EVEN:
Incluso la paridad
ATR_PASSALL Si se especifica, la entrada TP/CRT, PUERTO Solo lectura ignorado Leer solo el
pasall se lee sin interpretación teclas visualizables
o transacción. Ya que hasta que se presione la
Al más cercano
registro binario.
7–7
7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS MARRC75KR07091E Rev H
Tipo de atributo Descripción Dispositivo válido Modo de uso Valores válidos Valor por defecto
ATR_PIPWAIT La operación de lectura espera que TUBO Leer WAIT_USED o El valor predeterminado es
ATR_READAHD El valor del atributo se PUERTO Leer escribir cualquier positivo 1 (búfer de 128 bytes)
Búfer de lectura anticipada especifica en unidades de 128 entero
bytes y asigna un búfer de 1=128 bytes
lectura anticipada del tamaño 2=256 bytes
indicado. 0=deshabilitar bytes
ATR_REVERSE Los bytes se PUERTO, ARCHIVO Leer escribir ignorado No transferencia inversa
transferencia inversa intercambiarán.
ATR_SBITS Esto especifica el número de PUERTO Leer escribir SBITS_1:1 bit SBITS_1
Bits de parada bits de parada para el puerto SBITS_15: 1,5
serie. pedacitos
SBITS_2: 2 bits
ATR_TIMEOUT Si se especifica, IO_STATUS TP/CRT, PUERTO Solo lectura Cualquier número entero 0 (externo)
Se acabó el tiempo devolverá un error valor (las unidades son
ATR_UF Si se especifica, se realiza PUERTO, ARCHIVO Leer escribir ignorado transferencia ASCII
el carácter de terminación
(EOL) no terminará la
lectura y, por lo tanto,
asume automáticamente
la opción "campo". Si no se
especifica, se realiza la
transferencia ASCII.
línea de módem
7–8
MARRC75KR07091E Rev H 7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS
— RTS (solicitud de envío) y DTR (terminal de datos lista) son ambas salidas.
— Para indicar que se usa RTS (ALTO/ENCENDIDO): estado = SET_PORT_ATR (port_name, ATR_MODEM,
MD_USE_RTS)
— Para indicar que se usa RTS (ALTO/ENCENDIDO) y no se usa DTR (BAJO/APAGADO): estado =
SET_PORT_ATR (nombre_puerto, ATR_MODEM, MD_USE_RTSoMD_NOUSE_DTR)
• Los siguientes ejemplos demuestran cómo usar el valor de atributo devuelto desde el
GET_PORT_ATR integrado.
7–9
7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS MARRC75KR07091E Rev H
La cadena de archivo en una instrucción OPEN FILE especifica un nombre y tipo de archivo de datos, o un puerto de comunicación.
• La sentencia OPEN FILE asocia el archivo de datos o el puerto especificado por la cadena de archivo con la
variable de archivo. Por ejemplo, OPEN FILE file_var ('RO', 'data_file.dt') asocia el archivo de datos denominado
'data_file.dt' con el archivo file_var.
• Si la cadena del archivo está entre comillas simples, se trata como un literal. De lo contrario, se trata como
una variable STRING o un identificador constante.
• Al especificar un archivo de datos, debe incluir un nombre de archivo y un tipo de archivo KAREL válido (cualquiera).
extensión de archivo de 1, 2 o 3 caracteres).
• Los siguientes valores STRING se pueden utilizar para asociar variables de archivo con puertos de comunicación serie en el
controlador KAREL. Los valores predeterminados para son:
Ver también:Capítulo 9SISTEMA DE ARCHIVOS,para obtener una descripción de los nombres y tipos de archivo.
7–10
MARRC75KR07091E Rev H 7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS
La cadena de uso en una instrucción OPEN FILE indica cómo se utilizará el archivo.
• Se aplica solo al archivo especificado por la declaración OPEN FILE y no tiene efecto en otros FILE.
Tabla 7–4enumera cada especificador de uso, su función y los dispositivos o puertos para los que está destinado.
— Permite solo
operaciones de lectura
existentes
— Permite operaciones de
lectura y escritura
— El archivo se creará si
no existe
7–11
7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS MARRC75KR07091E Rev H
— El archivo se creará si
no existe
datos. (Número de
personajes para ser
escrito debe ser igual
número de caracteres
ser remplazado.)
— Sobrescribe el
datos existentes con
los nuevos datos
— Permite leer y
escribir
expediente
* Los especificadores AP y UD solo se pueden usar con archivos sin comprimir en el disco RAM. Referirse aCapítulo 9SISTEMA
DE ARCHIVOS,para obtener más información sobre el disco RAM y los dispositivos Pipe.
Ejemplos de cadenas de archivomuestra un programa que incluye ejemplos de varias cadenas de archivo en
sentencias OPEN FILE. Las secciones CONST y VAR se incluyen para ilustrar cómo se declaran las cadenas de archivos
y puertos.
PROGRAMA open_luns
CONSTITUCIÓN
7–12
MARRC75KR07091E Rev H 7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS
VAR
archivo_var1 : EXPEDIENTE
archivo_var2 : EXPEDIENTE
archivo_var3 : EXPEDIENTE
archivo_var4 : EXPEDIENTE
archivo_var5 : EXPEDIENTE
archivo_var12 : EXPEDIENTE
archivo_temp : CADENA[19]
- - un tamaño STRING de 19 admite nombres de dispositivos de 4 caracteres,
- - Nombres de archivo de 12 caracteres, el punto y 2 caracteres,
- - tipos de archivo.
var_puerto : CADENA[3]
EMPEZAR
Ver también:Capítulo 9SISTEMA DE ARCHIVOS,para obtener más información sobre los dispositivos de almacenamiento disponibles
Capítulo 15SISTEMA DE ENTRADA/SALIDA,para obtener más información sobre los puertos C0: y C3:
La sentencia CLOSE FILE se utiliza para romper la asociación entre una variable de archivo especificada y su
archivo de datos o puerto de comunicación. Cumple dos objetivos:
CERRAR ARCHIVO Ejemplomuestra un programa que incluye un ejemplo del uso de la instrucción CLOSE FILE en un
bucle FOR, donde se abren, leen y luego se cierran varios archivos. Se utiliza la misma variable de archivo para cada
archivo.
7–13
7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS MARRC75KR07091E Rev H
PROGRAMA leer_archivos
VAR
archivo_var : EXPEDIENTE
La instrucción READ se usa para leer uno o más elementos de datos específicos del dispositivo indicado. Los elementos
de datos se enumeran como parte de la instrucción READ. Las siguientes reglas se aplican a la instrucción READ:
• La declaración OPEN FILE debe usarse para asociar la variable de archivo con el archivo abierto en la
declaración antes de que se puedan realizar operaciones de lectura a menos que se use uno de los archivos
predefinidos (consulteTabla 7–1).
• Si la variable de archivo se omite de la instrucción READ, se utiliza TPDISPLAY como valor predeterminado.
• El uso de la directiva %CRTDEVICE cambiará el valor predeterminado a INPUT (ventana de entrada de CRT).
• Los especificadores de formato se pueden utilizar para controlar la cantidad de datos que se leen para cada elemento de
datos. El efecto de los especificadores de formato depende del tipo de datos del elemento que se lee y de si los datos están
en formato de texto (ASCII) o binario (sin formato).
• Cuando se ejecuta la instrucción READ (para archivos ASCII), los datos se leen comenzando con el siguiente carácter de entrada
que no esté en blanco y terminando con el último carácter antes del siguiente espacio en blanco, final de línea o final de archivo
para todos los tipos de entrada excepto STRING.
7–14
MARRC75KR07091E Rev H 7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS
• Con valores STRING, el campo de entrada comienza con el siguiente carácter y continúa hasta el final de la línea o el final
del archivo. Si se lee una CADENA desde la misma línea que sigue a un campo que no es una cadena, los espacios en
blanco de separación se incluyen en la CADENA.
• Las variables ARRAY deben leerse elemento por elemento; no se pueden leer en forma no suscrita. Con
frecuencia, se leen mediante una sentencia READ en un bucle FOR.
• Las variables PATH se pueden especificar de la siguiente manera en una instrucción READ, donde "path_name" es una
variable PATH y "n" y "m" son índices de nodos PATH:
— path_name : especifica que se debe leer la ruta completa, comenzando con un encabezado e
incluyendo todos los nodos y sus datos asociados. El encabezado consta de la longitud de la ruta y la
descripción de los datos asociados vigentes cuando se escribió la RUTA.
— path_name [0]: especifica que solo se debe leer el encabezado. El encabezado de la ruta consta de la longitud de la ruta
y la descripción de los datos asociados vigentes cuando se escribió la RUTA. Los nodos se eliminan o crean para que
la ruta tenga la longitud correcta, y todos los nodos nuevos se configuran como no inicializados.
— ruta_nombre [n]: especifica que los datos se leerán en el nodo [n] desde la posición actual del archivo.
El valor de n debe estar en el rango de 0 a la longitud de la RUTA.
— path_name [n .. m]: especifica que los datos se leerán en los nodos n a m. El valor de n debe
estar en el rango de 0 a la longitud de la RUTA y puede ser menor, igual o mayor que el valor
de m. El valor de m debe estar en el rango de 1 a la longitud de la RUTA.
Si ocurre un error al leer el nodo n (donde n es mayor que 0), se maneja de la siguiente manera:
Si n>longitud de ruta original(antes de la operación de lectura), los nodos desde n hasta la nueva longitud de ruta se configuran
como no inicializados.
Si n<=longitud de ruta original,los nodos desde n hasta la longitud de la ruta original permanecen como estaban antes de la
operación de lectura y cualquier nodo nuevo (mayor que la longitud de la ruta original) se configura como no inicializado.
• Si la descripción de los datos asociados que se lee de la RUTA no concuerda con los datos asociados del
usuario actual, la operación de lectura finaliza y la ruta permanecerá como estaba antes de la operación de
lectura. La función integrada IO_STATUS devolverá un error si esto ocurre.
Ejemplos de sentencias READmuestra varios ejemplos de la declaración READ utilizando una variedad de variables de
archivo y listas de datos.
7–15
7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS MARRC75KR07091E Rev H
Si se produce algún error durante la entrada, la variable que se lee y todas las variables subsiguientes hasta CR en la lista de datos se configuran
como no inicializadas a menos que la variable de archivo esté abierta en un dispositivo de ventana.
Si lee desde un dispositivo de ventana, se muestra un mensaje de error que indica el elemento de datos incorrecto y se le solicita que
ingrese un reemplazo para el elemento de datos no válido y que vuelva a ingresar todos los elementos posteriores.
La función integrada IO_STATUS se puede utilizar para determinar el éxito o el fracaso (y el motivo del error)
de una operación de LECTURA.
Funciones integradas de IO_STATUS,Apéndice Apara obtener una lista de mensajes de error de E/S
La instrucción WRITE se utiliza para escribir uno o más elementos de datos específicos en el dispositivo indicado. Los
elementos de datos se enumeran como parte de la instrucción WRITE. Las siguientes reglas se aplican a la sentencia WRITE:
• La declaración OPEN FILE debe usarse para asociar la variable de archivo con el archivo abierto en la declaración antes
de que se pueda realizar cualquier operación de escritura, a menos que se use uno de los archivos predefinidos (consulte
Tabla 7–1).
• Si la variable de archivo se omite de la sentencia WRITE, se utiliza TPDISPLAY como valor predeterminado.
• El uso de la directiva %CRTDEVICE cambiará el valor predeterminado a OUTPUT (ventana de salida CRT).
• Los especificadores de formato se pueden usar para controlar el formato de los datos que se escriben para cada elemento de
datos. El efecto de los especificadores de formato depende del tipo de datos del elemento que se escribe y de si los datos están en
formato de texto (ASCII) o binario (sin formato).
• Las variables ARRAY deben escribirse elemento por elemento; no pueden escribirse en forma no suscrita.
Con frecuencia, se escriben utilizando una sentencia WRITE en un bucle FOR.
• Las variables PATH se pueden especificar de la siguiente manera en una instrucción WRITE, donde "path_name" es una
variable PATH y "n" y "m" son índices de nodos PATH:
— path_name : especifica que se debe escribir la ruta completa, comenzando con un encabezado que proporciona
la longitud de la ruta y la tabla de datos asociada, y seguido por todos los nodos, incluidos sus datos
asociados.
— path_name [0]: especifica que solo se debe escribir el encabezado. El encabezado de la ruta consta de la
longitud de la ruta y una copia de la tabla de datos asociada.
7–16
MARRC75KR07091E Rev H 7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS
Ejemplos de sentencias WRITEmuestra varios ejemplos de la declaración WRITE usando una variedad de variables
de archivo y listas de datos.
Un área de RAM, llamadabuffer,se utiliza para almacenar hasta 256 bytes de datos que aún no se han
transmitido durante una operación de lectura o escritura.
• Durante la ejecución de una instrucción READ, si se leyeron más datos del archivo que los requeridos por la instrucción
READ, los datos restantes se guardan en un búfer para operaciones de lectura posteriores. Por ejemplo, si ingresa más
datos en una línea de entrada de teclado de los necesarios para cumplir con la instrucción READ, los datos adicionales se
guardan en un búfer.
• Si se ejecuta una instrucción WRITE en un archivo no interactivo y el último elemento de datos no era un CR, los
datos se dejan en un búfer hasta que un WRITE posterior especifique un CR o se llene el búfer.
• El total de datos que se pueden procesar en una sola declaración de LECTURA o ESCRITURA está limitado a 127 bytes.
7–17
7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS MARRC75KR07091E Rev H
Esta sección explica los especificadores de formato utilizados para leer y escribir texto ASCII (formateado) para cada tipo
de datos.
• Para los archivos de texto, los elementos de datos en las sentencias READ y WRITE pueden ser de cualquiera de los tipos
de datos simples (INTEGER, REAL, BOOLEAN y STRING).
• Las variables posicionales y VECTOR no se pueden leer de archivos de texto, pero se pueden usar en instrucciones
WRITE.
• Las variables ARRAY no se pueden leer ni escribir en formato sin suscripción. Los elementos de un ARRAY
se leen o escriben en el formato que corresponde al tipo de datos del ARRAY.
La cantidad de datos que se leen o escriben se puede controlar utilizando cero, uno o dos especificadores de formato
para cada elemento de datos en una instrucción READ o WRITE. Cada especificador de formato, representado como un
literal INTEGER, está precedido por dos puntos dobles (::).
Tabla 7–5resume los especificadores de formato de entrada que se pueden usar con los elementos de datos en una
instrucción READ. El formato predeterminado de cada tipo de datos y los especificadores de formato que pueden afectar a
cada tipo de datos se explican enSección 7.8.1, medianteSección 7.8.6.
Tabla 7–6resume los especificadores de formato de salida que se pueden usar con los elementos de datos en una instrucción
WRITE. El formato predeterminado de cada tipo de datos y los especificadores de formato que pueden afectar a cada tipo de
datos se explican enSección 7.8.1medianteSección 7.8.6.
7–18
Traducido del inglés al español - www.onlinedoctranslator.com
REAL Número total de caracteres escritos Número de dígitos a la derecha del punto
decimal a escribir
Si es negativo, usa notación científica.
- Justificado a la derecha
- Justificado a la derecha
VECTOR Utiliza formato REAL para cada componente Utiliza formato REAL para cada componente
POSICIÓN Utiliza formato REAL para cada componente Utiliza formato REAL para cada componente
XYZWPR Utiliza formato REAL para cada componente Utiliza formato REAL para cada componente
XYZWPREXT Utiliza formato REAL para cada componente Utiliza formato REAL para cada componente
JOINTPOSn Utiliza formato REAL para cada componente Utiliza formato REAL para cada componente
Los elementos de datos INTEGER en una instrucción READ se procesan de la siguiente manera:
Defecto:Se lee como un INTEGER decimal (base 10), comenzando con el siguiente carácter que no esté en blanco en la
línea de entrada y continuando hasta que se encuentre un espacio en blanco o el final de la línea. Si los caracteres leídos no
forman un INTEGER válido, la operación de lectura falla.
Primer especificador de formato:Indica el número total de caracteres a leer. El campo de entrada debe estar
completamente en la línea de entrada actual y puede incluir espacios en blanco al principio, pero no al final.
Segundo especificador de formato:Indica la base numérica utilizada para la entrada y debe estar en el rango de 2
(binario) a 16 (hexadecimal).
Para bases superiores a 10, las letras A, B, C, D, E y F se utilizan como entrada para los dígitos con valores 10,
11, 12, 13, 14 y 15, respectivamente. Se aceptan letras minúsculas.
Tabla 7–7enumera ejemplos de elementos de datos de entrada INTEGER y sus especificadores de formato. Los datos de
entrada y el valor resultante de los elementos de datos INTEGER se incluyen en la tabla. (El símbolo [eol] indica el final de la
línea).
7–19
7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS MARRC75KR07091E Rev H
(ENTERO no válido)
Los elementos de datos INTEGER en una instrucción WRITE tienen el siguiente formato:
Defecto:Escrito como un entero decimal (base 10) usando el número requerido de dígitos y un espacio en
blanco inicial. Un signo menos precede a los dígitos si el INTEGER es un valor negativo.
Primer especificador de formato:Indica el número total de caracteres que se escribirán, incluidos los espacios en blanco y el signo
menos. Si el especificador de formato es más grande que lo requerido para los datos, se agregan espacios en blanco iniciales. Si es más
pequeño que el requerido, el campo se amplía según sea necesario.
El especificador debe estar en el rango de 1 a 127 para un archivo o de 1 a 126 para otros dispositivos de salida.
Segundo especificador de formato:Indica la base numérica utilizada para la salida y debe estar en el rango de
2 (binario) a 16 (hexadecimal).
Si se especifica una base numérica distinta de 10 (decimal), se escribe la cantidad de caracteres especificados en el primer
especificador de formato (menos uno para el espacio en blanco inicial), y se agregan ceros iniciales si es necesario.
Para bases superiores a 10, las letras A, B, C, D, E y F se utilizan como entrada para los dígitos con valores 10, 11,
12, 13, 14 y 15, respectivamente.
Tabla 7–8enumera ejemplos de elementos de datos de salida INTEGER y sus especificadores de formato. Los valores de salida
de los elementos de datos INTEGER también se incluyen en la tabla. Las comillas dobles se utilizan en la tabla como
delimitadores para mostrar espacios en blanco iniciales; sin embargo, los programas KAREL no escriben comillas dobles.
7–20
MARRC75KR07091E Rev H 7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS
"
123
"
-5 blanco principal
"
-5
"
"
123
"
"
- 123
"
"
400
"
"
00101
"
"
7–21
7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS MARRC75KR07091E Rev H
FFFFFFFF
"
Los elementos de datos REAL en una instrucción READ se procesan de la siguiente manera:
Defecto:Lea comenzando con el siguiente carácter que no esté en blanco en la línea de entrada y continúe hasta que se
encuentre un espacio en blanco o el final de la línea.
Los datos pueden suministrarse con o sin parte fraccionaria. La E utilizada para la notación científica puede estar en
mayúsculas o minúsculas. Si los caracteres no forman un REAL válido, la operación de lectura falla.
Primer especificador de formato:Indica el número total de caracteres a leer. El campo de entrada debe estar
completamente en la línea de entrada actual y puede incluir espacios en blanco al principio, pero no al final.
Tabla 7–9enumera ejemplos de elementos de datos de entrada REAL y sus especificadores de formato. Los datos de
entrada y el valor resultante de los elementos de datos REALES se incluyen en la tabla. El símbolo [eol] indica el final de
la línea y X indica datos extraños en la línea de entrada.
real_var 1 1.0
real_var 1.000[eol] 1.0
real_var 2.5XX 2.50
real_var 1E5XX 100000.0
Los elementos de datos REAL en una instrucción WRITE tienen el siguiente formato:
(en blanco)(msign)(d).(d)(d)(d)(d)(d)E(esign)(d)(d)
7–22
MARRC75KR07091E Rev H 7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS
dónde:
(d) es un dígito
Primer especificador de formato:Indica el número total de caracteres que se escribirán, incluidos todos los dígitos, espacios en blanco,
signos y un punto decimal. Si el especificador de formato es más grande que lo requerido para los datos, se agregan espacios en blanco
iniciales. Si es más pequeño que el requerido, el campo se amplía según sea necesario.
En el caso de la notación científica, la longitud de los caracteres debe ser mayor que (8 + 2.º especificador de formato) para escribir
los datos de forma completa.
El especificador debe estar en el rango de 1 a 127 para un archivo o de 1 a 126 para otros dispositivos de salida.
El valor absoluto del segundo especificador de formato indica el número de dígitos que se generarán a la
derecha del punto decimal.
Si el especificador de formato es positivo, los datos se muestran en formato fijo (es decir, sin exponente). Si es
negativo, se utiliza la notación científica.
Tabla 7–10enumera ejemplos de elementos de datos de salida REAL y sus especificadores de formato. Los valores de salida de los
elementos de datos REAL también se incluyen en la tabla. Las comillas dobles se utilizan en la tabla como delimitadores para mostrar
espacios en blanco iniciales; sin embargo, los programas KAREL no escriben comillas dobles.
"
1.23000E+02
"
"
1.23457E+02
"
7–23
7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS MARRC75KR07091E Rev H
"
1.23000E-03
"
"
- 1.00000E+00
"
"
- 1.234560E+02
"
"
1.234560E+02
"
"
123.46
"
"
1.230E+02
"
7–24
MARRC75KR07091E Rev H 7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS
Los elementos de datos BOOLEAN en una instrucción READ tienen el siguiente formato:
Defecto:Lea comenzando con el siguiente carácter que no esté en blanco en la línea de entrada y continúe hasta que se
encuentre un espacio en blanco o el final de la línea.
Los valores de entrada válidos para VERDADERO incluyen VERDADERO, VERDADERO, TR, T y ENCENDIDO. Los valores de
entrada válidos para FALSO incluyen FALSO, FALS, FAL, FA, F, OFF y OF. Si los caracteres leídos no forman un BOOLEAN
válido, la operación de lectura falla.
Primer especificador de formato:Indica el número total de caracteres a leer. El campo de entrada debe estar
completamente en la línea de entrada actual y puede incluir espacios en blanco al principio, pero no al final.
Tabla 7–11enumera ejemplos de elementos de datos de entrada BOOLEAN y sus especificadores de formato. Los
datos de entrada y el valor resultante de los elementos de datos BOOLEAN se incluyen en la tabla. (El símbolo [eol]
indica el final de la línea y la X indica datos superfluos en la línea de entrada).
Los elementos de datos BOOLEAN en una instrucción WRITE tienen el siguiente formato:
Defecto:Escrito como "VERDADERO" o "FALSO". (Las comillas dobles se utilizan en la tabla como delimitadores para mostrar los
espacios en blanco iniciales; sin embargo, los programas KAREL no escriben comillas dobles).
Primer especificador de formato:Indica el número total de caracteres que se escribirán, incluidos los espacios en blanco (siempre se
incluye un espacio en blanco inicial). Si el especificador de formato es más grande que lo requerido para los datos, se agregan
espacios en blanco al final. Si es más pequeño de lo requerido, el campo se trunca a la derecha.
El especificador debe estar en el rango de 1 a 127 para un archivo o de 1 a 126 para otros dispositivos de salida.
7–25
7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS MARRC75KR07091E Rev H
Segundo especificador de formato:Indica si los datos están justificados a la izquierda o a la derecha. Si el especificador de formato es igual a 0,
la palabra de salida se justifica a la izquierda en el campo de salida con un espacio en blanco al principio y espacios en blanco al final según sea
necesario. Si es igual a 1, la palabra de salida se justifica a la derecha en el campo de salida, con espacios en blanco iniciales según sea necesario.
Tabla 7–12enumera ejemplos de elementos de datos de salida BOOLEAN y sus especificadores de formato. Los valores de salida
de los elementos de datos BOOLEAN también se incluyen en la tabla. Las comillas dobles se utilizan en la tabla como
delimitadores para mostrar espacios en blanco iniciales; sin embargo, los programas KAREL no escriben comillas dobles.
"
FALSO
"
"
CIERTO
"
"
FALSO
"
"
FALSO
"
VERDADERO::2 Truncado
"
T
"
7–26
MARRC75KR07091E Rev H 7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS
Los elementos de datos STRING en una instrucción READ tienen el siguiente formato:
Defecto:Lea comenzando en la posición actual y continuando hasta el final de la línea. Si la longitud de los datos
obtenidos es mayor que la longitud declarada de STRING, los datos se truncan a la derecha. Si es más corta, la
longitud actual de STRING se establece en la longitud real.
Primer especificador de formato:Indica la longitud total del campo de los datos de entrada. Si la longitud del campo es
mayor que la longitud declarada de STRING, los datos de entrada se truncan a la derecha. Si es más corto, la longitud actual
de STRING se establece en la longitud de campo especificada.
Segundo especificador de formato:Indica si la CADENA de entrada está entre comillas simples o no. Si el
especificador de formato es igual a 0, la entrada no se incluye entre comillas.
Si es igual a 2, la entrada debe estar entre comillas. La entrada se explora en busca del siguiente carácter que no
esté en blanco. Si el carácter no es una comilla, la CADENA no es válida y la operación de lectura falla.
Si el carácter es una comilla, los caracteres restantes se escanean hasta que se encuentra otra comilla o el final de la
línea. Si no se encuentra otra cotización, la CADENA no es válida y la operación de lectura falla.
Si se encuentran ambas comillas, todos los caracteres entre ellas se leen en la variable STRING, a menos que la
longitud declarada de STRING sea demasiado corta, en cuyo caso los datos se truncan a la derecha.
Tabla 7–13enumera ejemplos de elementos de datos de entrada STRING y sus especificadores de formato, donde
str_var se ha declarado como STRING[5]. Los datos de entrada y el valor resultante de los elementos de datos
STRING se incluyen en la tabla. El símbolo [eol] indica el final de la línea y X indica datos extraños en la línea de
entrada.
str_var
" "
ABC ABC
" "
str_var
" "
ABCDEFG[eol] ABCDE
" "
7–27
7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS MARRC75KR07091E Rev H
str_var
" "
'ABC'XX AB
" "
str_var::0::2
" "
'ABC'XX 'A B C'
" "
Los elementos de datos STRING en una instrucción WRITE tienen el siguiente formato:
Defecto:El contenido de STRING está escrito sin espacios en blanco ni comillas al final o al principio.
La CADENA no debe tener más de 127 bytes de longitud para archivos o 126 bytes de longitud para otros
dispositivos de salida. De lo contrario, el programa se cancelará con el error "CADENA DEMASIADO LARGA".
Primer especificador de formato:Indica el número total de caracteres a escribir, incluidos los espacios en blanco. Si el especificador de
formato es más grande que lo requerido para los datos, los datos se justifican a la izquierda y se agregan espacios en blanco al final. Si
el especificador de formato es más pequeño que el requerido, la CADENA se trunca a la derecha.
El especificador debe estar en el rango de 1 a 127 para un archivo o de 1 a 126 para otros dispositivos de salida.
Los valores STRING citados, incluso si están justificados a la izquierda, van precedidos de un espacio en blanco. Los valores STRING sin comillas no van
7–28
MARRC75KR07091E Rev H 7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS
Tabla 7–14enumera ejemplos de elementos de datos de salida STRING y sus especificadores de formato. Los valores de salida
de los elementos de datos STRING también se incluyen en la tabla. Las comillas dobles se utilizan en la tabla como
delimitadores para mostrar espacios en blanco iniciales; sin embargo, los programas KAREL no escriben comillas dobles.
"
ABC
"
"
AB
"
"
ABC
"
"
ABC
"
"
ABC
"
"
'A B C'
"
7–29
7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS MARRC75KR07091E Rev H
"
'A B C'
"
'ABC'::4::2 Truncado
"
'A'
"
Los especificadores de formato para los elementos de datos STRING pueden provocar el truncamiento de los valores STRING
originales o la adición de espacios en blanco al final cuando los valores se vuelven a leer.
Si los valores STRING deben escribirse y leerse sucesivamente, las siguientes pautas lo ayudarán a garantizar que
los valores STRING de diferentes longitudes se puedan leer de manera idéntica:
• La variable en la que se lee la CADENA debe tener una longitud declarada al menos tan larga como la
CADENA real que se lee, o se producirá un truncamiento.
• Se deben hacer algunas provisiones para separar los valores STRING de las variables anteriores en la
misma línea de datos. Una posibilidad es escribir un ' ' (en blanco) entre una CADENA y la variable que
la precede.
• Si no se utilizan especificadores de formato en la operación de lectura, escriba valores STRING al final de sus
respectivas líneas de datos (es decir, seguidos en la lista de salida por un CR) porque las variables STRING sin
especificadores de formato se leen hasta el final de la línea. alcanzó.
• La forma más general de escribir valores de cadena en un archivo y volver a leerlos es usar el formato ::0::2 tanto
para lectura como para escritura.
Los elementos de datos VECTOR no se pueden leer de archivos de texto (ASCII). Sin embargo, puede leer tres valores
REALES y asignarlos a los elementos de una variable VECTORIAL. Los elementos de datos VECTOR en una declaración de
ESCRITURA tienen el formato de tres valores REALES en la misma línea.
Tabla 7–15enumera ejemplos de elementos de datos de salida VECTOR y sus especificadores de formato, donde vect.x = 1.0,
vect.y= 2.0, vect.z = 3.0. Los valores de salida de los elementos de datos VECTOR también se incluyen en la tabla. Las comillas
dobles se utilizan en la tabla como delimitadores para mostrar espacios en blanco iniciales; sin embargo, los programas
KAREL no escriben comillas dobles.
7–30
MARRC75KR07091E Rev H 7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS
Ver también:Sección 7.8.2, "Formato de elementos de datos REALES", para obtener información sobre el formato de salida predeterminado
vector
"
1. 2. 3.
"
vect::6::2
"
1.00 2.00 3.00
"
vect::12::-3
"
1.000E+00 2.000E+00 3.000E+00
"
Los elementos de datos posicionales no se pueden leer desde archivos de texto (ASCII). Sin embargo, puede leer seis
valores REALES y un valor de CADENA y asignarlos a los elementos de una variable XYZWPR o usar la función integrada
POS para componer una POSICIÓN. El CNV_STR_CONF incorporado se puede usar para convertir una STRING en un tipo
de datos CONFIG.
Los elementos de datos POSITION y XYZWPR en una instrucción WRITE se formatean en tres líneas de salida.
La primera línea contiene el componente de ubicación (x,y,z) de la POSICIÓN, la segunda línea contiene la
orientación (w,p,r) y la tercera línea contiene la cadena de configuración.
Los componentes de ubicación y orientación tienen el formato de seis valores REALES. El formato predeterminado para los
valores REALES en una POSICIÓN es el formato predeterminado para REAL(es). Referirse aSección 7.8.2.
La cadena de configuración no termina con un CR, lo que significa que puede seguirla con otros datos en
la misma línea.
Tabla 7–16enumera ejemplos de elementos de datos de salida POSITION y sus especificadores de formato, donde p =
POS(2.0,-4.0,8.0,0.0,90.0,0.0,config_var). Los valores de salida de los elementos de datos de POSICIÓN también se
7–31
7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS MARRC75KR07091E Rev H
incluido en la tabla. Las comillas dobles se utilizan en la tabla como delimitadores para mostrar espacios en blanco
iniciales; sin embargo, los programas KAREL no escriben comillas dobles.
pags
"
2. - 4. 8.
"
"
0. 9. 0.
"
"
N, 127, , -1
"
p::7::2
"
2.00-4.00 8.00
"
"
0.0090.00 0.00
"
"
N, 127, , -1
"
Los elementos de datos JOINTPOS en una instrucción WRITE tienen un formato similar a los tipos POSITION con tres
valores en una línea.
Ver también:Sección 7.8.2, para obtener información sobre los especificadores de formato utilizados con elementos de datos REALES
7–32
MARRC75KR07091E Rev H 7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS
Esta sección explica el especificador de formato utilizado en las declaraciones READ y WRITE para leer y escribir datos binarios
(sin formato) para cada elemento de datos. Las operaciones binarias de entrada/salida a veces se denominan sin formato, a
diferencia de las operaciones de entrada/salida de texto (ASCII) que se denominan formateadas.
El SET_FILE_ATR incorporado con el atributo ATR_UF se usa para designar una variable de archivo para operaciones
binarias. Si no se especifica, se utilizarán operaciones de texto ASCII.
Los elementos de datos en las sentencias READ y WRITE pueden ser cualquiera de los siguientes tipos de datos para archivos binarios:
ENTERO
REAL
BOOLEANO
CUERDA
VECTOR
POSICIÓN
XYZWPR
XYZWPREXT
POS CONJUNTO
Las variables de matriz y de visión no se pueden leer ni escribir en forma sin suscripción. Los elementos de
un ARRAY se leen o escriben en el formato que corresponde al tipo de datos del ARRAY.
Se pueden leer o escribir variables PATH completas, o puede especificar que solo se lea o escriba el nodo[0] (que contiene el
encabezado PATH), un nodo específico o un rango de nodos. Los especificadores de formato no tienen efecto en los datos
de PATH. Los datos de la RUTA se pueden leer o escribir solo en un archivo y no en un puerto serie, CRT/KB o consola
portátil.
Se prefiere la E/S binaria a la E/S de texto cuando se crean archivos que solo deben leer los programas KAREL por las
siguientes razones:
• Las variables posicionales, VECTOR y PATH no se pueden leer directamente desde la entrada de texto.
• Algunos formatos y combinaciones de datos no se leen de la misma manera que se escribieron en archivos de
texto o se vuelven inválidos si se leen con el mismo formato.
• Los datos binarios suelen ser más compactos, lo que reduce tanto el tamaño del archivo como el tiempo de E/S.
Generalmente, no es necesario utilizar especificadores de formato con E/S binaria. Si se sigue esta regla, todos los datos de entrada se
pueden leer exactamente como estaban antes de escribirse.
Sin embargo, si se va a escribir una gran cantidad de valores INTEGER y se sabe que sus valores son pequeños, escribirlos
con especificadores de formato reduce tanto el espacio de almacenamiento como el tiempo de E/S.
7–33
7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS MARRC75KR07091E Rev H
Por ejemplo, los valores INTEGER en el rango de -128 a +127 requieren solo un byte de espacio de almacenamiento y los
valores INTEGER en el rango de -32768 a +32767 requieren dos bytes de espacio de almacenamiento. Escribir valores
INTEGER en estos rangos con un primer especificador de formato de 1 y 2, respectivamente, da como resultado requisitos
reducidos de espacio de almacenamiento y tiempo de E/S, sin pérdida de dígitos significativos.
Tabla 7–17resume los especificadores de formato de entrada y salida que se pueden usar con los elementos de datos en las
instrucciones READ y WRITE. También se incluye el formato predeterminado de cada tipo de datos.Sección 7.8.1 mediante
Sección 7.8.6explicar los efectos de los especificadores de formato en cada tipo de datos con más detalle.
ENTERO Cuatro bytes leídos o escritos Número especificado de bytes menos ignorado
BOOLEANO Cuatro bytes leídos o escritos Número especificado de bytes menos ignorado
significativos leídos o escritos, comenzando
con el más significativo (1-4)
leídos o escritos
Los elementos de datos INTEGER en una instrucción READ o WRITE tienen el formato siguiente:
Defecto:Se leen o escriben cuatro bytes de datos comenzando con el byte más significativo.
Primer especificador de formato:Indica el número de bytes menos significativos de INTEGER para leer o escribir, con
los más significativos de estos leídos o escritos primero. El signo del byte más significativo leído se extiende a los bytes
no leídos. El especificador de formato debe estar en el rango de 1 a 4.
7–34
MARRC75KR07091E Rev H 7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS
Por ejemplo, si se escribe un INTEGER con un especificador de formato de 2, se escribirán los bytes 3 y 4 (donde el byte
1 es el byte más significativo). No se verifica la pérdida de bytes significativos cuando los valores INTEGER se formatean
en operaciones de E/S binarias.
NotaEl formateo de valores INTEGER puede provocar la pérdida no detectada de dígitos de alto orden.
Los elementos de datos REALES en una instrucción READ o WRITE tienen el siguiente formato:
Defecto:Se leen o escriben cuatro bytes de datos comenzando con el byte más significativo.
Los elementos de datos BOOLEAN en una instrucción READ o WRITE tienen el siguiente formato:
Defecto:Se leen o escriben cuatro bytes de datos. En una operación de lectura, el resto de la palabra, que
nunca se usa, se establece en 0.
Primer especificador de formato:Indica el número de bytes menos significativos del BOOLEAN a leer o escribir, el
más significativo de estos primero. El especificador de formato debe estar en el rango de 1 a 4. Dado que los valores
BOOLEAN siempre son 0 o 1, siempre es seguro usar un ancho de campo de 1.
Los elementos de datos STRING en una instrucción READ o WRITE tienen el formato siguiente:
Defecto:La longitud actual de STRING (no la longitud declarada) se lee o escribe como un solo byte, seguido del
contenido de STRING. Los valores STRING escritos sin especificadores de formato tienen sus longitudes como parte de
la salida, mientras que los valores STRING escritos con especificadores de formato no. Asimismo, si se lee una CADENA
sin un especificador de formato, se espera la longitud en los datos, mientras que si se lee una CADENA con un
especificador de formato, no se espera la longitud.
Esto significa que, si escribe y luego lee datos STRING, debe asegurarse de que el uso de los especificadores de
formato sea coherente.
7–35
7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS MARRC75KR07091E Rev H
En una operación de lectura, si el primer especificador de formato es mayor que la longitud declarada de
STRING, los datos se truncan a la derecha. Si es menor que la longitud declarada de STRING, la longitud actual
de STRING se establece en el número de bytes leídos.
En una operación de escritura, si el primer especificador de formato indica un campo más corto que la longitud actual
de STRING, los datos de STRING se truncan a la derecha. Si es más larga que la longitud actual de STRING, la salida se
rellena a la derecha con espacios en blanco.
Escribir valores STRING con especificadores de formato puede causar el truncamiento de los valores STRING originales o
espacios en blanco al final de los valores STRING cuando se vuelven a leer.
Los elementos de datos VECTOR en una instrucción READ o WRITE tienen el siguiente formato:
Defecto:Los datos se leen o escriben como tres números REALES binarios de 4 bytes.
Los elementos de datos POSITION en una instrucción READ o WRITE tienen el siguiente formato:
Defecto:Leer o escribir en el formato interno del controlador, que tiene una longitud de 56 bytes.
Los elementos de datos XYZWPR en una instrucción READ o WRITE tienen el formato siguiente:
Defecto:Leer o escribir en el formato interno del controlador, que tiene una longitud de 32 bytes.
Los elementos de datos XYZWPREXT en una instrucción READ o WRITE tienen el siguiente formato:
7–36
MARRC75KR07091E Rev H 7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS
Defecto:Leer o escribir en el formato interno del controlador, que tiene una longitud de 44 bytes.
Los elementos de datos JOINTPOS en una instrucción READ o WRITE tienen el formato siguiente:
Defecto:Leer o escribir en el formato interno del controlador, que es de 4 bytes más 4 bytes para cada
eje.
La pantalla que se activa cuando se selecciona el menú USUARIO desde la consola portátil se llama "t_sc". Las
ventanas enumeradas enTabla 7–18se definen para "t_sc".
"errar" 1 TPERROR no 1
"estadística" 1 no 2
"completo" 2 no 3-4
"motón" 1 no 3
De forma predeterminada, el menú USUARIO adjuntará las ventanas "err", "stat", "full", "motn", "t_fu",
"t_pr" y "t_fk" a la pantalla "t_sc". VerFigura 7–1.
7–37
7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS MARRC75KR07091E Rev H
error (TPERROR)
estadística
completo mesón
completo superposiciones motn
columna 18
t_pr (TPPROMPT)
t_fk (TPFUNC)
Las siguientes variables del sistema afectan el menú USUARIO de la consola portátil:
• $TP_USESTAT: BOOLEANO-Hace que la ventana de estado del usuario "t_st" (TPSTATUS) se adjunte a
la pantalla del usuario mientras que $TP_USESTAT es TRUE. Mientras se adjunta "t_st", las ventanas
"stat", "motn" y "full" se separarán. VerFigura 7–2.
error (TPERROR)
t_st (ESTADOTP)
t_st (ESTADOTP)
t_st (ESTADOTP)
t_fu (PANTALLA TP)
t_pr (TPPROMPT)
t_fk (TPFUNC)
La pantalla que se activa cuando se selecciona el menú USUARIO desde el CRT se denomina "c_sc". Las
ventanas enumeradas enTabla 7–19se definen para "c_sc".
7–38
MARRC75KR07091E Rev H 7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS
"errar" 1 CRERROR no 1
"ct01" 1 no 2
"uful" 2 no 3-4
"motón" 1 no 3
De forma predeterminada, el menú USUARIO adjuntará las ventanas "err", "ct01", "uful", "motn", "c_fu",
"c_fk" y "uftn" a la pantalla "c_sc". La ventana "c_fk" etiquetará las teclas de función y mostrará FCTN y
MENÚS para F9 y F10. VerFigura 7–3.
error (CRTERROR)
ct01
útil mesón
útil uful y motn
c_fu (ENTRADA y SALIDA) superposición; mesón
empieza a
columna 18
c_pr (CRTPROMPT)
c_fk (CRTFUNC)
c_fk
7–39
7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS MARRC75KR07091E Rev H
error (CRTERROR)
c_st (ESTADOCRT)
c_st (ESTADOCRT)
c_st (ESTADOCRT)
c_fu (ENTRADA y SALIDA)
c_pr (CRTPROMPT)
c_fk (CRTFUNC)
c_fk
7–40
Capítulo 8
DATOS DE POSICIÓN
Contenido
8–1
8. DATOS DE POSICIÓN MARRC75KR07091E Rev H
En aplicaciones robóticas, el movimiento de un solo segmento es el movimiento del punto central de la herramienta (TCP)
desde una posición inicial hasta una posición de destino deseada. El sistema KAREL representa datos posicionales en
términos de ubicación (x, y, z), orientación (w, p, r) y configuración. La ubicación y la orientación se definen en relación con
un sistema de coordenadas cartesianas (marco de usuario), lo que las hace independientes de los ángulos de articulación del
robot. La configuración representa el conjunto único de ángulos de articulación en una ubicación y orientación particulares.
NotaEl sistema KAREL proporciona una forma de crear y manipular datos de posición, pero no admite instrucciones de movimiento.
Todo movimiento debe iniciarse desde un programa de control remoto. Las instrucciones y los elementos incorporados están
disponibles para configurar los datos de posición de KAREL en los programas de la consola portátil.
El lenguaje KAREL utiliza los tipos de datos POSITION, XYZWPR, XYZWPREXT, JOINTPOS y PATH para
representar datos posicionales. El tipo de datos POSITION se compone de lo siguiente:
• Un tipo de datos CONFIG, que consta de 4 booleanos y 3 enteros, que representan la configuración en términos de
ubicación conjunta y número de giro. Antes de especificar el tipo de datos de configuración, asegúrese de que sea
válido para el robot que se está utilizando. Los valores válidos de colocación conjunta incluyen:
Un número de giro es el número de giros completos que realiza una articulación de múltiples giros más allá de la
rotación requerida para alcanzar una posición.Tabla 8–1enumera las definiciones válidas de número de giro.
-8 - 2700 a -3059
-7 - 2340 a -2699
-6 - 1980 a -2339
8–2
MARRC75KR07091E Rev H 8. DATOS DE POSICIÓN
-5 - 1620 a -1979
-4 - 1260 a -1619
-3 - 900 a -1259
-2 - 540 a -899
-1 - 180 a -539
0 - 179 a 179
1 180 a 539
2 540 a 899
3 900 a 1259
4 1260 a 1619
5 1620 a 1979
6 1980 a 2339
7 2340 a 2699
El tipo de datos PATH consiste en una lista de elementos de longitud variable llamados nodos de ruta.
El sistema KAREL define la ubicación y orientación de los datos posicionales en relación con un marco de referencia definido
por el usuario, llamado marco de usuario, como se muestra enFigura 8–1.
8–3
8. DATOS DE POSICIÓN MARRC75KR07091E Rev H
PLACA FRONTAL
$ UTOOL
ROBOT
TCP
POSICIÓN
$UFRAME
MUNDO USUARIO
COORDINAR CUADRO
SISTEMA
ROBOT = $UFRAME:POSICIÓN:INV($UTOOL)
• MUNDO - predefinido
Mediante ecuaciones cinemáticas, el controlador calcula su información de posición en función del marco mundial conocido
y los datos almacenados en las variables del sistema $UFRAME (para el marco del usuario) y $UTOOL (para el marco de la
herramienta).
El marco mundial está predefinido para cada robot. Se utiliza como marco de referencia predeterminado. La ubicación del
marco mundial difiere para cada modelo de robot.
8–4
MARRC75KR07091E Rev H 8. DATOS DE POSICIÓN
El programador define el marco de usuario relativo al marco mundial asignando un valor a la variable de
sistema $UFRAME.
Advertencia
Asegúrese de que $UFRAME esté configurado en el mismo valor, ya sea que esté
enseñando datos posicionales o ejecutando un programa con esos datos, o podría
dañar la herramienta.
La ubicación de UFRAME representa las distancias a lo largo del eje x, el eje y y el eje z del sistema de
coordenadas mundial; la orientación representa rotaciones alrededor de esos ejes.
De forma predeterminada, el sistema asigna un valor de ubicación (0,0,0) y un valor de orientación (0,0,0) a $UFRAME, lo que
significa que el marco de usuario es idéntico al del sistema de coordenadas mundiales. Todas las posiciones se registran en
relación con UFRAME.
lospunto central de la herramienta (TCP)es el origen del marco de referencia UTOOL. El programador define la posición
del TCP en relación con la placa frontal del robot asignando un valor a la variable del sistema $UTOOL. De forma
predeterminada, el sistema asigna una ubicación (0,0,0) y una orientación (0,0,0) a $UTOOL, lo que significa que
$UTOOL es idéntico al sistema de coordenadas de la placa frontal. El eje z positivo de UTOOL define elvector de
acercamientode la herramienta
Advertencia
Asegúrese de que $UTOOL defina correctamente la posición del TCP para la herramienta
que está utilizando, o la herramienta podría dañarse.
El sistema de coordenadas de la placa frontal tiene su origen en el centro de la superficie de la placa frontal.
Su orientación se define con el plano del eje x y el eje y en la placa frontal y el eje z positivo apuntando hacia
afuera de la placa frontal.
8–5
8. DATOS DE POSICIÓN MARRC75KR07091E Rev H
Cuando se registra una posición en el editor de la consola portátil, el valor del marco de herramienta de la posición
siempre será igual al valor de $MNUTOOLNUM[group_no] en el momento en que se registró la posición. Cuando se
ejecuta un programa de Teach Pendant, debe asegurarse de que el marco de usuario y el marco de herramienta de la
posición sean iguales a los valores de $MNUFRAMENUM[group_no] y $MNUTOOLNUM[group_no]; de lo contrario, se
producirá un error. Establezca los valores de $MNUFRAMENUM[1] y $MNUTOOLNUM[1] utilizando las instrucciones
UFRAME_NUM = n y UTOOL_NUM = n en el editor de la consola portátil antes de registrar la posición para garantizar
que los números de marco del usuario y de la herramienta coincidan durante la ejecución del programa.
• ARTICULACIÓN-un sistema de coordenadas conjuntas en el que se mueven los ejes individuales del robot. El movimiento es conjunto
interpolado.
• MUNDO-un sistema de coordenadas cartesianas en el que el TCP se mueve en paralelo o gira alrededor de
los ejes x, y y z del marco WORLD predefinido. El movimiento se interpola linealmente.
• MARCO DE HERRAMIENTAS-un sistema de coordenadas cartesianas en el que el TCP se mueve en paralelo o gira
alrededor de los ejes x, y y z del marco de herramienta seleccionado actualmente. El movimiento se interpola
linealmente. El marco de la herramienta normalmente se selecciona usando el menú SETUP Frames. Para correr
usando $GROUP[group_no].$utool, configure $MNUTOOLNUM[group_no] = 30.
• MARCO DE USUARIO-un sistema de coordenadas cartesianas en el que el TCP se mueve en paralelo o gira
alrededor de los ejes x, y y z del marco de usuario seleccionado actualmente. El movimiento se interpola
linealmente. El marco de usuario normalmente se selecciona usando el menú SETUP Frames. Para correr usando
$GROUP[group_no].$uframe, configure $MNUFRAMENUM[group_no] = 62.
El robot se puede desplazar en cualquiera de estos sistemas de coordenadas de desplazamiento para alcanzar una posición de
destino. Sin embargo, una vez que se alcanza esa posición, los datos posicionales se registran con referencia al marco de usuario
como se explica enSección 8.3.
8–6
Capítulo 9
SISTEMA DE ARCHIVOS
Contenido
9-1
9. SISTEMA DE ARCHIVOS MARRC75KR07091E Rev H
El sistema de archivos proporciona un medio para almacenar datos en CMOS RAM, FROM o dispositivos de
almacenamiento externos. Los datos se agrupan en unidades, y cada unidad representa un archivo. Por ejemplo, un
archivo puede contener lo siguiente:
El sistema KAREL incluye cinco tipos de dispositivos de almacenamiento donde se pueden almacenar archivos:
• Disco RAM
• DESDE disco
• PC IBM
• Tarjeta de memoria
Disco RAMes una porción de SRAM (antes CMOS RAM) o memoria DRAM que funciona como un dispositivo de almacenamiento
separado. Cualquier archivo se puede almacenar en el disco RAM. Los archivos del disco RAM deben copiarse en discos para
almacenamiento permanente.
DESDE discoes una porción de la memoria FROM que funciona como un dispositivo de almacenamiento separado. Cualquier archivo se
puede almacenar en el disco F-ROM. Sin embargo, el hardware admite un número limitado de ciclos de lectura y escritura. Por lo tanto, si
un archivo necesita almacenar datos que cambian dinámicamente, se debe usar el disco RAM en su lugar.
IBM PC o computadoras compatiblesse puede utilizar para almacenar archivos fuera de línea. Puede usar el servidor FTP o la
función PC SHARE de la opción Conexión y personalización del protocolo de Internet para que la PC almacene archivos en un
dispositivo de almacenamiento externo. Se puede acceder a los archivos en estos dispositivos de almacenamiento de las siguientes
maneras:
Tarjeta de memoriase refiere al almacenamiento de archivos flash ATA. La interfaz de la tarjeta de memoria se encuentra en la
CPU PRINCIPAL.
9–2
MARRC75KR07091E Rev H 9. SISTEMA DE ARCHIVOS
Para obtener más información sobre los dispositivos de almacenamiento y la memoria, consulteSección 9.3.1.
Dispositivo de memoria USBadmite una interfaz USB 1.1. La Organización USB especifica estándares para USB 1.1 y
2.0. La mayoría de los dispositivos Memory Stick cumplen con la especificación USB 2.0 para los estándares eléctricos y
de funcionamiento. Los dispositivos USB 2.0 definidos por la especificación USB deben ser compatibles con dispositivos
USB 1.1.
Sin embargo, FANUC America Corporation no admite ninguna función de seguridad o cifrado en dispositivos de
memoria USB. El controlador es compatible con la mayoría de las memorias USB Flash disponibles desde 32 MB hasta 1
GB de tamaño. La interfaz USB se encuentra en el panel del operador del controlador.
nombre_dispositivo:nombre_archivo.tipo_archivo
Un nombre de dispositivo consta de al menos dos caracteres que indican el dispositivo en el que se almacena un archivo. Los archivos
se pueden almacenar en disco RAM, disco F-ROM, unidades de disco, fuera de línea en una PC, tarjeta de memoria o dispositivo
compuesto PATH. El nombre del dispositivo siempre termina con dos puntos (:). La siguiente es una lista de dispositivos de
almacenamiento válidos.
El RD: nombre del dispositivo se refiere a los archivos almacenados en el disco RAM del controlador. RD: se utiliza como nombre de
dispositivo predeterminado.
El nombre del dispositivo FR: hace referencia a los archivos almacenados en el disco F-ROM del controlador.
La tarjeta de memoria se puede formatear y utilizar como un sistema de archivos MS-DOS. Se puede leer y
escribir en el controlador y en una PC IBM equipada con el hardware y el software adecuados. Si la tarjeta
de memoria se usa como un sistema de archivos MS-DOS, debe formatearse solo en el controlador.
9–3
9. SISTEMA DE ARCHIVOS MARRC75KR07091E Rev H
La memoria USB se puede formatear y utilizar como un sistema de archivos MS-DOS. Se puede leer y
escribir en el controlador y en una PC IBM equipada con el hardware y el software adecuados. Si la memoria
USB se utiliza como un sistema de archivos MS-DOS, debe formatearse solo en el controlador. Consulte la
aplicación específicaManual de operaciones y configuración de FANUC America Corporationpara obtener
información sobre cómo formatear la memoria USB en el controlador.
El dispositivo de memoria trata la memoria del programa del controlador como si fuera un dispositivo de archivo. Puede acceder
a todos los programas de la consola portátil, los programas KAREL, las variables KAREL, las variables del sistema y los registros
de errores que están cargados en el controlador. VerSección 9.6para mas detalles.
El dispositivo de copia de seguridad del dispositivo de memoria (MDB:) permite al usuario copiar los mismos archivos proporcionados por la función de
copia de seguridad en el menú Archivo. Esto permite al usuario hacer una copia de seguridad del controlador de forma remota.
El dispositivo de la consola proporciona acceso a los archivos de texto de registro de la consola CONSLOG.LS y
CONSTAIL.LS. Se utiliza con fines de diagnóstico y depuración y no como dispositivo de almacenamiento.
El nombre del dispositivo MF: hace referencia a los archivos almacenados en los discos RAM y F-ROM. Dado que un archivo
no puede estar en ambos discos al mismo tiempo, no habrá nombres de archivos duplicados.
El dispositivo PATH: es un dispositivo de solo lectura que busca en el disco F-ROM (FD:), la tarjeta de memoria (MC:0 y el
disquete (FLPY:) en ese orden, un archivo específico. El dispositivo PATH: elimina la necesidad del usuario de saber en
qué dispositivo de almacenamiento existe el archivo especificado.
El dispositivo PIP: proporciona una forma de escribir datos desde una aplicación y, al mismo tiempo, leerlos desde otra aplicación.
El dispositivo PIP: también permite retener el último conjunto de datos escritos para su análisis. El dispositivo PIP: le permite
acceder a cualquier cantidad de archivos de tubería. Este acceso es a archivos que están en la memoria del controlador. Esto
significa que el acceso a estos archivos es muy eficiente. El tamaño de los archivos y la cantidad de archivos están limitados por la
memoria disponible del controlador. Esto significa que el mejor uso de una canalización de archivos es almacenar datos en el búfer
o retenerlos temporalmente.
9–4
MARRC75KR07091E Rev H 9. SISTEMA DE ARCHIVOS
• Se pueden utilizar subdirectorios. Estos también se denominan "camino". Estos comienzan y terminan con el carácter "\". Las reglas para
los nombres de archivo también se aplican a las rutas. A continuación se muestra un ejemplo de un nombre de archivo con un dispositivo
y una ruta:
MC:\miruta\miarchivo.txt
Un tipo de archivo consta de dos o tres caracteres que indican qué tipo de datos contiene un archivo. Un tipo de
archivo siempre comienza con un punto (.).Tabla 9–1es una lista alfabética de cada tipo de archivo disponible y su
función.
. BMP Archivos de mapa de bitscontienen imágenes de mapa de bits utilizadas en los sistemas de visión de robots.
estado.
9–5
9. SISTEMA DE ARCHIVOS MARRC75KR07091E Rev H
KAREL.
. ML Archivos de modelos de piezascontienen información del modelo de pieza que se utiliza en los sistemas de visión
de robots.
. SV archivos del sistemason archivos binarios que contienen datos para marcos de
herramientas y usuarios (SYSFRAME.SV), variables del sistema (SYSVARS.SV),
masterización (SYSMAST.SV), parámetros de servo (SYSSERVO.SV) y macros
(SYSMACRO.SV).
. Texas archivos de textoson archivos ASCII que pueden contener texto definido por el sistema o texto
. realidad virtual Archivos de variables de programason archivos binarios que contienen datos variables para
un programa KAREL.
El sistema KAREL solo puede acceder a aquellos dispositivos de almacenamiento que hayan sido formateados y montados.
Estos procedimientos se realizan cuando los dispositivos se instalan por primera vez en el sistema KAREL.
• Formatear un dispositivo
— Elimina cualquier dato existente en el dispositivo. Por ejemplo, si formatea RD2:, también
reformateará cualquier dato existente en RD: hasta RD7:.
9–6
MARRC75KR07091E Rev H 9. SISTEMA DE ARCHIVOS
Para obtener más información sobre cómo formatear un dispositivo, consulte FORMAT_DEV Built-in
Apéndice A, "Descripción alfabética del idioma KAREL" o el comando FORMAT enApéndice C,
"Descripción alfabética del comando KCL".
Los siguientes tipos de dispositivos de almacenamiento se pueden utilizar para almacenar programas y archivos:
NotaPuede realizar una copia de seguridad en el dispositivo UT1: pero no puede utilizar UT1: para realizar una carga
completa o una actualización automática.
Esta sección describe cómo configurar los dispositivos de almacenamiento para su uso. Dependiendo del dispositivo de almacenamiento, esto
puede incluir
• Formatear un dispositivo
El R-30iEl controlador B incluye una interfaz de tarjeta de memoria. Las tarjetas de memoria están disponibles en varios tamaños. Las
tarjetas de PC Compact Flash también son compatibles si se utilizan con un adaptador compacto adecuado. La tarjeta de memoria
requiere una interfaz de tarjeta de memoria que es estándar en la CPU principal dentro del controlador. El controlador también admite la
carga de software desde tarjetas de memoria.
9–7
9. SISTEMA DE ARCHIVOS MARRC75KR07091E Rev H
Advertencia
Hay voltaje letal en el controlador SIEMPRE QUE ESTÁ CONECTADO a una fuente de
alimentación. Tenga mucho cuidado para evitar descargas eléctricas. HAY ALTO VOLTAJE en
el lado de entrada siempre que el controlador esté conectado a una fuente de
alimentación. Al colocar el interruptor de desconexión o el disyuntor en la posición
APAGADO, se elimina la energía del lado de salida del dispositivo únicamente.
Advertencia
Precaución
La tarjeta de memoria se puede formatear en el controlador y se puede usar como un dispositivo de carga para instalar el
software.
NotaLos datos de todos los dispositivos de archivo internos, como FR:, RD: y MD: deben respaldarse en un dispositivo de archivo
externo, como una tarjeta ATA Flash PC.
La tarjeta de memoria se puede formatear y utilizar como un sistema de archivos MS-DOS. Puede leerse y
escribirse en el controlador y en una PC IBM equipada con el hardware y el software adecuados. Si la tarjeta de
memoria se utiliza como un sistema de archivos MS-DOS, debe formatearse en el controlador.
El controlador puede leer y escribir tarjetas de memoria formateadas con el tipo de formato FAT o FAT32
(tablas de acceso a archivos). Cuando se formatea una tarjeta de memoria en el controlador, se puede
formatear como tipo FAT o FAT32.
El formato FAT32 (FAT de 32 bits) elimina algunas limitaciones que se incluyen con FAT. Una de ellas es la limitación de
que solo se pueden crear 512 archivos en el directorio raíz. Otra es que el tipo de formato FAT solo admite tarjetas de
memoria de hasta 2 GB de tamaño. Esta función se incluye en el controlador para aumentar la compatibilidad del
controlador del robot con otros sistemas informáticos.
9–8
MARRC75KR07091E Rev H 9. SISTEMA DE ARCHIVOS
El controlador admite dispositivos de memoria flash USB de hasta 2 GB de tamaño si está formateado como FAT. FAT es mucho
más rápido para el acceso. No se admiten dispositivos de memoria USB con características de seguridad o cifrado. Las tarjetas
de memoria de más de 2 GB no se pueden formatear en FAT, deben formatearse en FAT32.
NotaLas memorias USB no se pueden formatear cuando se conectan al conector USB en eliColgante (UT1:)
Deben formatearse en una PC o cuando se conectan al conector USB del panel frontal del controlador.
NotaLas tarjetas de memoria de más de 2 GB no se pueden formatear en FAT, deben formatearse en FAT32.
NotaEn general, cuanto mayor sea el tamaño del dispositivo, como una memoria USB, menor será la velocidad de acceso y el
rendimiento del dispositivo. Una memoria USB debe tener el formato FAT si es posible. Las tarjetas de memoria más grandes
formateadas como FAT32 funcionarán, pero serán más lentas para las operaciones de archivo y el inicio de la tarjeta de
memoria cuando se inserta por primera vez.
NotaPara utilizar el UT: dispositivo en elicolgante, debe tener el puerto USB encendidoiOpción
colgante (J957) instalada.
NotaPuede realizar una copia de seguridad en el dispositivo UT1: pero no puede utilizar UT1: para realizar una carga completa o
una actualización automática.
NotaDado que USB es una especificación bien establecida, FANUC America Corporation no califica dispositivos
de memoria USB específicos para su uso con el robot. FANUC America Corporation utiliza unidades flash USB
fabricadas por SanDisk® (CRUZER Mini y Micro) para calificar el funcionamiento de la interfaz USB. Por lo
tanto, FANUC America Corporation recomienda que utilice unidades flash USB SanDisk®, sin funciones de
seguridad o cifrado. Otras unidades pueden funcionar correctamente, pero no están calificadas
específicamente por FANUC America Corporation.
El dispositivo de memoria USB requiere una interfaz USB que es estándar en el controlador.
Precaución
El disco de almacenamiento de archivos Flash es una parte de la memoria FROM que funciona como un dispositivo de almacenamiento
independiente. El disco de almacenamiento de archivos flash (FR:) no requiere respaldo de batería para conservar la información. Puede
9–9
9. SISTEMA DE ARCHIVOS MARRC75KR07091E Rev H
• Programas
Puede formatear el disco de almacenamiento de archivos Flash. El sistema establece el tamaño del disco de almacenamiento de archivos
Flash durante la instalación del software. Debido a la naturaleza de FROM, cada vez que copie o guarde un archivo en FR: habrá una
caída en la memoria FR: disponible, incluso si está trabajando con el mismo archivo.
El disco RAM es una porción de RAM estática (SRAM) o memoria DRAM que funciona como un dispositivo de almacenamiento
independiente. Cualquier archivo se puede almacenar en el disco RAM. Los archivos del disco RAM deben copiarse en un
dispositivo externo para almacenamiento permanente.
La ubicación y el tamaño del disco RAM (RD:) depende del valor de la variable del sistema $FILE_MAXSEC. El
valor predeterminado de $FILE_MAXSEC depende de las opciones y paquetes de herramientas que estén
instalados.
El valor en $FILE_MAXSEC representa el tamaño de memoria asignado para RD: en sectores de 512 bytes. Por
ejemplo, un valor de -128 significa que se asignan 64 K de memoria en DRAM para RD:.
• SipsARCHIVO_MAXSEC > 0,entonces el disco RAM se define para estar en el grupo PERM de SRAM. Debido a que el disco RAM es
una parte de SRAM, copie todos los archivos del disco RAM a un dispositivo externo para almacenamiento permanente para evitar
la pérdida de información debido a la pérdida de energía de la batería o la carga del software del sistema.
SRAM es una memoria volátil respaldada por batería. Esto significa que toda la información en SRAM, incluidos los
programas, requiere respaldo de batería para que la información se conserve cuando el controlador se apaga y se
vuelve a encender. Los programas del Teach Pendant se almacenan automáticamente en el grupo TPP de SRAM cuando
escribe un programa.
Precaución
Los datos en SRAM se pueden perder si se quita la batería o se descarga, o si se carga un nuevo
software del sistema en el controlador. Para evitar la pérdida de datos, realice una copia de seguridad o
copie todos los archivos en dispositivos de almacenamiento permanente, como tarjetas de memoria FR:
o ATA Flash PC.
DRAM es una memoria volátil sin respaldo de batería. Esto significa que toda la información en DRAM desaparece
entre ciclos de energía. En efecto, DRAM es un dispositivo temporal. La información almacenada en DRAM se
pierde cuando apaga el controlador.
9–10
MARRC75KR07091E Rev H 9. SISTEMA DE ARCHIVOS
Precaución
NotaVolátil significa que la memoria se pierde cuando se desconecta la alimentación. La memoria no volátil no requiere
energía de la batería para retener.
Puede almacenar cualquier cosa que sea un archivo en el disco RAM. El disco RAM ya está formateado para usted.
La información almacenada en el disco RAM se puede almacenar comprimida o sin comprimir. Por defecto, la
información está comprimida. Si desea que la información permanezca sin comprimir, debe utilizar elRDU: designación
del dispositivo para indicar que la información se guardará en ese dispositivo en un formato de archivo sin comprimir.
Los dispositivos FTP Ethernet se utilizan para copiar archivos desde el controlador a la PC o estación de trabajo de la red si la
opción FTP está instalada. Los dispositivos cliente que se muestran son los dispositivos cliente que se han definido e iniciado.
Referirse aManual de operaciones y configuración de opciones de Internetpara más información.
El dispositivo de memoria (MD:) trata la memoria del programa del controlador como si fuera un dispositivo de archivo. Puede acceder a
todos los programas de la consola portátil, los programas KAREL y las variables KAREL cargadas en el controlador.
El dispositivo de memoria es un grupo de dispositivos (MD:, MDB: y, opcionalmente, FMD:) que proporcionan lo
siguiente:
• MD: proporciona acceso a ASCII y versiones binarias de la configuración y los programas del usuario
• MDB: brinda acceso a versiones binarias de la configuración y los programas del usuario (similar a "copia de seguridad: todo lo anterior" en
• FMD: brinda acceso a las versiones ASCII de la configuración del usuario y los programas filtrados para incluir solo información configurable
por el usuario (por ejemplo, los temporizadores internos o las variables del sistema de tiempo modificadas por el sistema no están
incluidas), lo que hace que estos archivos sean útiles para detectar cambios de usuario.
El dispositivo binario del dispositivo de memoria (MDB:) le permite copiar los mismos archivos proporcionados por la función de copia de
seguridad en el menú Archivo. Esto le permite hacer una copia de seguridad del controlador de forma remota, como desde
9–11
9. SISTEMA DE ARCHIVOS MARRC75KR07091E Rev H
SMON, FTP o KCL. Por ejemplo, podría usar el dispositivo MDB: para copiar todos los archivos del colgante de enseñanza
(incluidos los archivos invisibles) a la tarjeta de memoria (KCL>copiar MDB:*.tp TO mc:).
La opción Dispositivo de memoria filtrada genera versiones de texto de todos los archivos de copia de seguridad de los
programas de usuario y las variables que se han cambiado manualmente. Se incluyen variables de sistema y KAREL, registros
de posición y datos, programas de consola portátil y datos de configuración de E/S.
Al iniciar sesión en el servidor FTP del robot desde un cliente remoto, está predeterminado en el dispositivo MD:. Puede navegar
a otros dispositivos de archivo de robot (FR:, RD:, MC:, MDB:, FMD:) usando el servicio de cambio de directorio en su cliente FTP
remoto. En una línea de comando usando eldiscos compactoscomando donde en este ejemplo fmd: se está utilizando el
dispositivo, esto podría verse así:
D:\temp>ftp pderob029
Conectado a pderob029.frc.com
220 servidor FTP listo. [Herramienta de pintura Vx.xxP/01]
Usuario <pderob029.frc.com:<ninguno>>:
230 Usuario conectado [NORM]. ftp>cd
encontrar:
250 Comando CWD exitoso. ftp>
Puede comparar estos archivos con versiones anteriores para determinar qué usuarios u operadores han cambiado. Las
variables y los programas que cambian sin la intervención del usuario se filtran y aparecerán en los archivos de exclusión del
filtro.
Después de instalar la opción, se ejecutará automáticamente cada vez que realice una copia de seguridad de Ethernet del
controlador desde el dispositivo FMD:. Después de instalar la opción Dispositivo de memoria filtrada, cualquiera de los
siguientes archivos de exclusión de filtros podría aparecer en el dispositivo FR:.
Precaución
• FR:SVAREEG.DT
• FR:KVAREEG.DT
• FR:POSREEG.DT
• FR:REGEEG.DT
• FR:TPLINEEG.DT
Puede ver archivos de programas, variables o filtros de exclusión a través de KCL. Por ejemplo:
9–12
MARRC75KR07091E Rev H 9. SISTEMA DE ARCHIVOS
NotaLos sistemas informáticos que realizan copias de seguridad periódicas podrían modificarse para utilizar el dispositivo FMD: en
lugar del dispositivo MD: para algunas operaciones de comparación, por ejemplo. Comuníquese con FANUC America Corporation
para obtener más información.
FR:
Hay un área especial para la copia de seguridad automática en el controlador F-ROM (FRA:). No necesita un dispositivo
externo para usar la copia de seguridad automática, pero también se puede usar una tarjeta de memoria. Consulte su
Manual de configuración y operaciones específico de la aplicaciónpara más información.
Los discos RAM y F-ROM asignan archivos usando bloques. Cada bloque tiene 512 bytes.
La variable del sistema $FILE_MAXSEC especifica la cantidad de bloques que se asignarán al disco RAM. Si el
número especificado es menor que cero, el disco RAM se asigna desde DRAM. Si es mayor que cero, el disco RAM
se asigna desde la RAM CMOS. Para cambiar la cantidad de bloques para asignar al disco RAM, realice los
siguientes pasos desde el indicador de KCL:
1. Haga una copia de seguridad de todos los archivos en el disco RAM. Para obtener más información sobre cómo realizar una copia de seguridad de los
archivos, consulte el Capítulo 8, "Manipulación de programas y archivos" en el manual específico de la aplicación correspondiente.Manual de
configuración y operaciones.
KCL>DESMONTAR RD:
KCL>FIJAR VAR
$FILE_MAXSEC = <nuevo valor>
KCL>FORMATO RD:
9–13
9. SISTEMA DE ARCHIVOS MARRC75KR07091E Rev H
Todos los archivos se eliminarán del disco RAM cuando se realice el formateo.
KCL>MONTAJE RD:
El disco F-ROM solo se puede formatear desde BootROM porque el software del sistema también reside en F-
ROM. El sistema establece el número de bloques disponibles. El hardware admite una cantidad limitada de
ciclos de lectura y escritura, por lo que, si bien el disco F-ROM funcionará de manera similar al disco RAM, no
borrará los archivos que se hayan eliminado o sobrescrito.
Después de algún uso, el disco F-ROM habrá agotado todos los bloques. En ese momento, se requiere una
purga para borrar los bloques F-ROM que ya no se necesitan. Para obtener más información sobre la
depuración, consulte la Guía integrada de PURGE_DEV.Apéndice A, "Descripciones alfabéticas del idioma
KAREL" o el comando PURGAR enApéndice C, "Descripción alfabética del comando KCL".
Los dispositivos virtuales KAREL son similares a los subdirectorios de DOS. Por ejemplo
El controlador admite 7 dispositivos virtuales. Se adjunta un número, que identifica el dispositivo virtual, al nombre
del dispositivo (FR1:).Tabla 9–2muestra algunos de los dispositivos virtuales válidos disponibles.
MF1: - MF7: Hace referencia a archivos tanto en el disco RAM como en el disco F-ROM del dispositivo
virtual respectivo
9–14
MARRC75KR07091E Rev H 9. SISTEMA DE ARCHIVOS
• Un nombre de archivo en un dispositivo virtual es único. Un archivo podría existir en los discos RAM o F-ROM,
pero no en ambos. Por ejemplo: RD:test.kl y FR:test.kl no podrían existir ambos.
• Un nombre de archivo podría duplicarse en dispositivos virtuales. Por ejemplo: RD:test.kl, RD1:test.kl y
FR2:test.kl podrían existir.
• El nombre del dispositivo MF: podría usarse en cualquier operación de archivo para encontrar un archivo en un dispositivo virtual,
cuando se desconoce el dispositivo de almacenamiento real. Por ejemplo: MF:test.kl encuentra RD:test.kl o FR:test.kl.
• Cuando usa el dispositivo MF: como dispositivo de almacenamiento, el disco RAM se usa de manera
predeterminada cuando RD: está en CMOS y $FILE_MAXSEC > 0. El disco F-ROM se usa de manera
predeterminada cuando RD: está en DRAM y $FILE_MAXSEC < 0. Por ejemplo: KCL>COPIAR ARCHIVO FLPY:test.kl
a MF2: El archivo realmente existirá en RD2:
• Al enumerar el directorio de dispositivos MF:, se enumeran todos los archivos en los discos RAM y F-ROM. Sin
embargo, solo se muestran los archivos del dispositivo virtual especificado.
• Si se especifica el directorio RD5: en lugar de MF5:, solo se enumeran los archivos del disco RAM en el
dispositivo virtual 5. Si se especifica el directorio FR3:, solo se enumeran los archivos del disco F-ROM en el
dispositivo virtual 3. Por ejemplo: KCL>DIR RD5:
• Un archivo se puede copiar de un dispositivo virtual a otro dispositivo virtual. También se podría
copiar un archivo del disco RAM al disco F-ROM y viceversa, si el dispositivo virtual es diferente. Por
ejemplo: KCL>COPIAR RD1:test.kl a FR3:
• Se puede cambiar el nombre de un archivo solo dentro de un dispositivo virtual y solo en el mismo dispositivo. Por
ejemplo: KCL>RENOMBRAR FR2:prueba.kl FR2:ejemplo.kl
• Se puede mover un archivo dentro de un dispositivo virtual desde el disco RAM al disco F-ROM y
viceversa, usando un comando especial que es diferente de copiar. Por ejemplo: KCL>MOVE
MF1:test.kl mueve test.kl del disco F-ROM al disco RAM. KCL>COPY FR1:test.kl TO RD1:test.kl también
moverá el archivo del disco F-ROM al disco RAM. Esto se debe a que los nombres de archivo únicos
solo pueden existir en un dispositivo. Para obtener más información sobre cómo mover archivos,
consulte MOVE_FILE Built-inApéndice A, "Descripciones alfabéticas del idioma KAREL" o el comando
MOVER ARCHIVO enApéndice C, "Descripción alfabética del comando KCL".
• Al formatear el disco RAM, RD: o MF:, se borran todos los archivos del disco RAM en todos los dispositivos virtuales.
Los archivos del disco F-ROM permanecen intactos. Por ejemplo:KCL>FORMATO RD1:reformatea todos los
dispositivos virtuales de disco RAM (RD: a RD7:). El reformateo hará que se eliminen los datos existentes.
• Purge borra todos los bloques que ya no son necesarios para todos los dispositivos virtuales. Para obtener más
información sobre la depuración, consulte la Guía integrada de PURGE_DEV.Apéndice A, "Descripción alfabética del
idioma KAREL" o el comando PURGAR enApéndice C, "Descripción alfabética del comando KCL".
9–15
9. SISTEMA DE ARCHIVOS MARRC75KR07091E Rev H
El dispositivo PIP: le permite acceder a cualquier cantidad de archivos de tubería. Este acceso es a archivos que están en la memoria
del controlador. Esto significa que el acceso a estos archivos es muy eficiente. El tamaño de los archivos y la cantidad de archivos
están limitados por la memoria disponible del controlador. Esto significa que el mejor uso de una canalización de archivos es
almacenar datos en el búfer o retenerlos temporalmente.
El archivo se asemeja a una tubería de agua donde la tarea de escritura vierte datos en un extremo y los datos fluyen por el
otro extremo hacia la tarea de lectura. Esta es la razón por la cual el término utilizado es un tubo. Este concepto es muy similar
a los dispositivos de tubería implementados en UNIX, Windows y Linux.
Los archivos en el dispositivo de tubería tienen un tamaño limitado, pero los datos se organizan en un búfer circular. Esto también se
llama cola circular. Esto significa que una canalización de archivos de 8kbytes de tamaño (este es el tamaño predeterminado) contendrá
los últimos 8k de datos escritos en la canalización. Cuando el usuario escribe el noveno kilobyte de datos en la tubería, se sobrescribirá el
primer kilobyte.
Dado que una tubería se usa realmente para transferir datos de un lugar a otro, alguna aplicación leerá los datos
de la tubería. En el modo predeterminado, el lector ESPERARÁ hasta que se haya escrito la información. Una vez
que los datos estén disponibles en la tubería, la lectura se completará. Una aplicación KAREL podría usar
BYTES_AHEAD para consultar la canalización sobre la cantidad de datos disponibles para leer. Este es el modo de
lectura predeterminado.
Se proporciona un segundo modo de lectura que se denomina "instantánea". En este modo, el lector leerá el contenido actual
de la tubería. Una vez que se lee el contenido actual, el lector recibe el final del archivo. Esto se puede aplicar en una
aplicación como un "registrador de vuelo". Esto le permite registrar información que conduce a un evento (como un error) y
luego recuperar el último conjunto de información de depuración escrita en la canalización. El modo de instantánea es un
atributo de lectura. Se configura usando SET_FILE_ATTR integrado. De forma predeterminada, la operación de lectura no está
en modo de instantánea.
Las aplicaciones típicas de tuberías involucran un proceso que escribe datos en una tubería. Los datos pueden
depurar información, procesar parámetros o posiciones del robot. Luego, otra aplicación puede leer los datos de
la tubería. La aplicación de lectura puede ser un programa KAREL que analiza los datos que salen de la tubería o
puede ser KCL o el servidor web que lee los datos y los muestra al usuario en formato ASCII.
Ejemplos de CAREL
• Dos tareas de KAREL pueden compartir datos a través de una tubería. Una tarea KAREL puede escribir datos en la tubería
mientras que una segunda tarea KAREL lee desde la tubería. En este caso, el atributo de archivo ATR_PIPWAIT se puede
usar para la tarea que lee desde la tubería. En este caso, la tarea de lectura KAREL esperará a la función de lectura hasta
que la tarea de escritura haya terminado de escribir los datos. La operación predeterminada de la tubería es devolver un
final de archivo cuando no hay datos para leer de la tubería.
• Una aplicación KAREL podría estar ejecutando controladores de condiciones a una velocidad de datos muy rápida. En este
caso, podría no ser factible que la rutina del controlador de condiciones escriba datos en la pantalla de visualización de la
consola portátil porque esto interferiría con el rendimiento del controlador de condiciones. En este caso, podría escribir los
datos en el PIP: dispositivo desde la rutina del controlador de condiciones. Otro CAREL
9–16
MARRC75KR07091E Rev H 9. SISTEMA DE ARCHIVOS
La tarea podría leer los datos del dispositivo PIP: y mostrarlos en el dispositivo de enseñanza. En este caso, la pantalla
colgante de enseñanza no sería estrictamente en tiempo real. El dispositivo PIP: actúa como un búfer en este caso para
que el controlador de condiciones pueda pasar a su función principal sin esperar a que se complete la visualización.
También puede escribir el archivo desde KCL al mismo tiempo que la aplicación lo está escribiendo.
PIP: los dispositivos son similares a otros dispositivos de las siguientes maneras:
• El dispositivo de tubería es similar en algunos aspectos al dispositivo RD:. El dispositivo RD: también coloca el contenido del
archivo en la memoria del sistema. El dispositivo PIP es diferente principalmente porque el archivo de tubería se puede abrir
simultáneamente para lectura y escritura.
• De manera similar a los dispositivos MC: y FR:, el dispositivo PIP: se usa cuando desea depurar o diagnosticar
software en tiempo real. Esto le permite generar información de depuración que puede ver fácilmente sin
interferir con la operación que está escribiendo los datos de depuración. Esto también permite que una tarea
escriba información que otra tarea puede leer.
• La función del dispositivo PIP: es similar a todos los demás dispositivos del controlador. Esto significa que todas las
operaciones de E/S de archivos son compatibles con este dispositivo. Todas las funciones de E/S son compatibles y
funcionan igual, excepto las siguientes: Chdir, Mkdir y Rmdir.
• El dispositivo PIP: es similar a escribir directamente en una tarjeta de memoria. Sin embargo, escribir en una tarjeta de memoria
retrasará la tarea de escritura mientras que el retraso en el dispositivo PIP: es mucho menor. Esto significa que cualquier código
en el controlador puede usar este dispositivo. También tiene la capacidad de retener datos a través de un ciclo de energía.
• El dispositivo PIP: puede ser utilizado por cualquier aplicación o puede especificar una opción común asociada,
como KAREL.
En general, el dispositivo PIP: funciona como cualquier otro dispositivo. Una secuencia de operación típica incluye:
Si desea poder acceder a myfile.dat desde el servidor web, coloque un enlace en la página web de
diagnóstico.
9–17
9. SISTEMA DE ARCHIVOS MARRC75KR07091E Rev H
Los archivos en el dispositivo PIP: son configurables. De forma predeterminada, la configuración de la tubería se especifica
en la variable de sistema $PIPE_CONFIG. Los campos enumerados enTabla 9–3tienen los siguientes significados:
$palabra auxiliar 0 Elemento de diccionario si tiene formato de diccionario o escribe suma de comprobación.
Cada archivo de tubería se puede configurar a través de pipe_config incorporado. Se llamará al integrado pipe_config antes
de que se abra el archivo de tubería para escribir. Referirse aSección A.17, "pipe_config incorporado" para obtener más
detalles.
Ejemplos operativos
El siguiente ejemplo escribe datos de una rutina KAREL en una tubería y luego los lee de otra rutina.
Estas rutinas se pueden llamar desde tareas separadas para que una tarea escriba los datos y otra
tarea pueda leer los datos.
Programa
programa pipuform
%nolockgroup
variable
9–18
MARRC75KR07091E Rev H 9. SISTEMA DE ARCHIVOS
empezar
set_file_atr(att_file, ATR_IA) set_file_atr(att_file,
- - ATR_FIELD)
forzar lecturas hasta el final
set_file_atr(att_file, ATR_PASSALL) --ignorar cr - - forzar la escritura hasta el final
set_file_atr(att_file,
ATR_UF) - - binario
final archivo_init
rutina escribir_tubo
empezar
es abrió
- - expediente
archivo_init (tubo)
canal de archivo abierto ('rw', 'pip: ejemplo.dat')
estado = io_status (tubo)
consola de escritura ('Estado de tubería abierta:', estado, cr)
- - escribir parámetros adicionales para escribir en
tubería canalización (mensaje::8)
estado = io_status(tubería)
terminar write_pipe
rutina read_pipe
variable
registro: cadena[128]
estado: entero
entrada: entero
núm_bytes: entero
empezar
file_init (en_archivo)
abrir archivo en_archivo ('ro', 'pip:ejemplo.dat')
BYTES_AHEAD(en_archivo, entrada, estado)
estado = 0
leer en_archivo (parm1::4) estado =
IO_STATUS(en_archivo)
consola de escritura ('parm1 lectura', estado, cr)
escrituraconsola ('parm1',parm1,cr)
leer en archivo (parm2::4)
estado = IO_STATUS(en_archivo)
consola de escritura ('parm2 read',parm2,status,cr) end
read_pipe
empezar
SET_FILE_ATR(console, atr_ia, 0) --ATR_IA se define en flbt.ke consola OPEN FILE
('RW','CONS:')
si (uninit (mensaje)) después
mensaje = 'Ejemplo'
terminara si
if(uninit(n_sectores)) después
bandera_cmos = verdadero
n_sectores = dieciséis
record_size = 128
form_dict = 'prueba'
9–19
9. SISTEMA DE ARCHIVOS MARRC75KR07091E Rev H
form_ele = 1
terminara si
read_pipe
cerca expediente tubo
cerca expediente en archivo
final pipuforma
Puede acceder a los archivos usando las pantallas ARCHIVO y SELECCIONAR en el CRT/KB o el dispositivo de enseñanza, o usando las
instrucciones del lenguaje KAREL. Durante las operaciones normales, los archivos se cargarán automáticamente en el controlador. Sin
embargo, es posible que sea necesario realizar otras funciones.
Esta característica permite que los programas KAREL ingresen datos a través de un archivo de texto con formato XML (lenguaje de
marcado extendido). El formato XML en lugar del binario permite que el archivo se manipule fácilmente en una PC.
Los archivos XML deben seguir los requisitos de sintaxis XML más básicos. Estos requisitos son:
9–20
MARRC75KR07091E Rev H 9. SISTEMA DE ARCHIVOS
NotaLos archivos XML solo pueden tener un elemento de nivel superior. Por ejemplo,
<CUADRO>
<TPPROG>
</TPPROG>
</GRID>
<CUADRO>
</GRID>
<TPPROG>
</TPPROG>
no es legal La etiqueta maestra se puede utilizar para distinguir un archivo GRID de un archivo de configuración de
contraseña, por ejemplo.
Esta característica consta de funciones integradas de KAREL que brindan acceso a esta biblioteca a los usuarios de
KAREL. El archivo de entorno xml.ev debe estar en la ruta del traductor para traducir los programas KAREL que hacen
referencia a estos integrados. Estos integrados son XML_ADDTAG, XML_GETDATA, XML_REMTAG, XML_SCAN y
XML_SETVAR. Referirse aApéndice Apara obtener más información sobre estos integrados.
• Analice el archivo XML al que hace referencia xml_name y devuelva la configuración de ese archivo a xmlstruct.
9–21
9. SISTEMA DE ARCHIVOS MARRC75KR07091E Rev H
• Los pares de nombre y valor del atributo se devuelven como cadenas en attrnames y attrvalues. No es necesario que
los datos en el archivo XML se establezcan en una estructura en algunas aplicaciones. Los pares de nombre y valor se
usan directamente.
• La implementación XML más eficaz utiliza muchos pares de nombre y valor y solo unas pocas etiquetas. Se necesita la
misma cantidad de tiempo para devolver un par de nombre-valor de una etiqueta que para 32 pares. Treinta y dos
etiquetas tardarán 32 veces más.
• Hay dos tipos diferentes de archivos XML. La Figura 1–1 y la Figura 1–2 ilustran los dos tipos de construcciones
de etiquetas
• Para etiquetas de inicio y fin separadas (Figura 1–1), el procesamiento de la etiqueta debe realizarse en el
código de retorno XML_START.
• Para las etiquetas de inicio y finalización combinadas (Figura 1–2), no puede proporcionar ningún texto dentro de la etiqueta. El
procesamiento XML de KAREL proporciona los medios para extraer este texto cuando sea necesario.
• Para las etiquetas de inicio y finalización combinadas (Figura 1–2), el procesamiento de la etiqueta debe realizarse en el código de retorno
XML_END.
• El código de retorno XML_START debe establecer una marca que indique que la etiqueta se procesó.
La etiqueta GRID puede estar en el archivo XML pero no ser procesada por este programa de ejemplo. En general, las
etiquetas XML pueden ser procesadas por diferentes programas. La información solo se devuelve al programa KAREL para las
etiquetas registradas por el programa KAREL.
9–22
MARRC75KR07091E Rev H 9. SISTEMA DE ARCHIVOS
PROGRAMA xmlparse
%COMENTARIO = 'Análisis XML'
%NOPAUSESHFT
%NOPAUSE = ERROR + TPENABLE + COMANDO
%NOABORT = ERROR + COMANDO
%NOLOCKGROUP
%NOBUSYLAMP
%ENTORNO xml
%incluir klerxmlf
CONSTITUCIÓN
MYXML_CONST =3
ESCRIBE
xmlstrct_t = ESTRUCTURA
primero: ENTERO
segundo: REAL
tercera: BOOLEANO
cuatro: CADENA[20]
ESTRUCTURA FINAL
VAR
nombre_xml : cadena[20]
etiqueta_nombre : cadena[32]
texto : matriz[32] de cadena[128] :
atributos matriz[32] de cadena[32] :
atributos matriz[32] de cadena[64] :
archivo_xml EXPEDIENTE
estado : ENTERO
xmlstrct: xmlstrct_t
etiqueta_ident: entero
func_code: entero
texto_idx: entero
número: entero
texto terminado: BOOLEANO
hecho: BOOLEANO
consola: EXPEDIENTE
9–23
9. SISTEMA DE ARCHIVOS MARRC75KR07091E Rev H
- - Etiqueta final
- - Procesado en la etiqueta de inicio...
- - Escaneado (Rev D) xmlstrct_t 0 101 0
--
- - Para el caso en que la etiqueta final y la etiqueta inicial estén juntas (Figura 1.2)
– – las siguientes escrituras muestran las secuencias de retornos:
- - Escaneado (Rev D) xmlstrct_t 3 101 129015
- - Final Etiqueta
- - FinalEtiqueta Procesando...
nombre_xml = 'mc:kl16004.xml'
TERMINARA SI
TERMINARA SI
hecho = FALSO
datos de inicio=FALSO
MIENTRAS (hecho = FALSO) HACER
xml_scan(xml_file, tag_name, tag_ident, func_code, status) if(status = 0)
ENTONCES
hecho = VERDADERO
TERMINARA SI
ESCRIBIR consola ('Escaneado (Rev D)', tag_name,' ', identificador_etiqueta, ' ',
codigo_funcion, ' ',ESTADO,' ', CR)
SI (estado = XML_FUNCTION) ENTONCES
estado = 0
SELECCIONE etiqueta_ident OF
CASO (MYXML_CONST) :
SELECCIONE código_función DE
CASO (XML_START) :
ESCRIBIR consola ('Iniciar procesamiento de etiquetas...', CR)
texto_idx = 1
xml_setvar(xml_file, 'kl16004', 'xmlstrct', estado)
- - Ya miró los atributos, obtenga el texto xml_getdata (xml_file, numattr,
attrnames, attrvalues,
9–24
MARRC75KR07091E Rev H 9. SISTEMA DE ARCHIVOS
CASO (XML_TXCONT):
- - Por lo general, el usuario hará una u otra, pero no ambas
– – estas llamadas
texto_idx = texto_idx + 1
xml_getdata(xml_file, numattr, nombres de atributos, valores de atributos,
texto[texto_idx], texto terminado, estado)
MÁS:
ENDSELECT
MÁS:
ENDSELECT
MÁS
SI (estado <> XML_SCANLIM) ENTONCES
POST_ERR(estado, '', 0, 0) hecho
= VERDADERO
TERMINARA SI
FIN xmlparse
9–25
9. SISTEMA DE ARCHIVOS MARRC75KR07091E Rev H
La ejecución de este programa extraerá los atributos primero, segundo, tercero y cuarto, y sus valores del archivo XML.
Estos valores se establecerán en la variable xmlstruct que tiene los campos primero, segundo, tercero y cuarto. Las
variables de cadena también se establecerán en variables de cadena KAREL.
NotaXML_SCANLIM significa que el archivo es demasiado largo para ser procesado en una sola solicitud. El remedio para este
error es volver a llamar a la rutina de escaneo XML como se ilustra en el ejemplo.
El dispositivo de memoria (MD: ) trata los programas de memoria del controlador y la memoria variable como si fuera un dispositivo
de archivo. Los programas del Teach Pendant, los programas KAREL, las variables del programa, las variables del SISTEMA y los
registros de errores se tratan como archivos individuales. Esto proporciona funciones ampliadas a los dispositivos de comunicación,
así como a los dispositivos de archivo normales. Por ejemplo:
9–26
MARRC75KR07091E Rev H 9. SISTEMA DE ARCHIVOS
2. El registro de errores se puede recuperar y analizar de forma remota copiándolo desde el dispositivo MD:.
3. Se puede obtener una lista ASCII de los programas de la consola portátil copiando ***.LS del
dispositivo MD:.
4. Se puede obtener una lista ASCII de las variables del sistema copiando SYSVARS.VA del
dispositivo MD:.
Referirse aTabla 9–4para obtener listas y descripciones de los archivos disponibles en el dispositivo MD.
ACCNTG.DG Este archivo muestra la contabilidad del sistema de las tareas del sistema operativo.
ACCOFF.DG Este archivo muestra que la contabilidad del sistema está desactivada.
CONSLOG.DG Este archivo es una lista ASCII del registro de la consola del sistema.
CONSTAIL.DG Este archivo es una lista ASCII de las últimas líneas del registro de la consola del sistema.
FRAMEVAR.VR Este archivo contiene información de variables de herramientas y estructuras del sistema en forma binaria.
9–27
9. SISTEMA DE ARCHIVOS MARRC75KR07091E Rev H
IOSTATE.DG Este archivo es una lista ASCII del estado de los puntos de E/S.
IOSTATUS.CM Este archivo es un archivo de comandos del sistema que se utiliza para restaurar E/S.
ESTADOPRG.DG Este archivo es una lista ASCII del estado de los programas.
RIPELOG.DG Este archivo contiene información de estado detallada, como las horas en que los robots se encienden y
apagan, y otros datos de diagnóstico. Referirse amanual de opciones de internetpara más información .
RIPESTAT.DG Este archivo contiene datos de rendimiento para que pueda determinar el rendimiento de la red.
Referirse amanual de opciones de internetpara más información .
SFTYSIG.DG Este archivo es un listado ASCII del estado de las señales de seguridad.
SYCLDINT.VA Este archivo es una lista ASCII de variables del sistema inicializadas en un arranque en frío.
SYMOTN.VA Este archivo es una lista ASCII de variables del sistema de movimiento.
SYNOSAVE.VA Este archivo es una lista ASCII de variables del sistema no guardadas.
9–28
MARRC75KR07091E Rev H 9. SISTEMA DE ARCHIVOS
SYSSERVO.SV Este archivo es una lista de los parámetros del servo del sistema.
SISTEMA.VA Este archivo es una lista ASCII de variables del sistema sin movimiento.
TIMERS.DG Este archivo muestra el estado del temporizador del programa y del sistema.
VERSIÓN.DG Este archivo muestra información sobre la versión del sistema, el software y el servo.
* * * . STM Este archivo es una página web HTML que utiliza uniControl colgante o lado del servidor incluido.
Referirse aTabla 9–5para obtener una lista de restricciones al usar el dispositivo MD:.
9–29
9. SISTEMA DE ARCHIVOS MARRC75KR07091E Rev H
* * * . ordenador personal NO SÍ SÍ
* * * . realidad virtual SÍ SÍ SÍ Con restricción de no referencias.
* * * . LS SÍ NO NO
* * * . TP SÍ SÍ SÍ
* * * . LS SÍ NO NO
FFF.DF SÍ SÍ NO
SIS***.SV SÍ SÍ NO Escriba solo en CTRL INICIO.
SIS***.VA SÍ NO NO
ERR***.LS SÍ NO NO
HISTX.LS SÍ NO NO
* * * REG.VR SÍ SÍ NO
* * * REG.VA SÍ NO NO
DIOCFGSV.IO SÍ SÍ NO Escriba solo en CTRL INICIO.
DIOCFGSV.VA SÍ NO NO
9–30
Capítulo 10
DICCIONARIOS Y FORMULARIOS
Contenido
10-1
10. DICCIONARIOS Y FORMULARIOS MARRC75KR07091E Rev H
10–2
MARRC75KR07091E Rev H 10. DICCIONARIOS Y FORMULARIOS
Los diccionarios y formularios se utilizan para crear interfaces de operador en las pantallas colgantes y
CRT/KB con programas KAREL.
En ambos casos, el texto y el formato de una pantalla existen fuera del programa KAREL. Esto permite modificar
fácilmente las pantallas sin alterar los programas de KAREL.
Aarchivo de diccionarioproporciona un método para personalizar el texto que se muestra, incluidos los atributos
del texto (parpadeo, subrayado, ancho doble, etc.) y la ubicación del texto en la pantalla, sin tener que volver a
traducir el programa.
1. Cree un archivo de texto de diccionario ASCII formateado con una extensión de archivo .UTX.
2. Comprima el archivo de diccionario mediante el comando KCL COMPRESS DICT. Esto crea un archivo de
diccionario cargable con una extensión .TX. Una vez comprimido, el archivo .UTX se puede eliminar del
sistema.Solo se carga el archivo de diccionario comprimido (.TX).
3. Cargue el archivo de diccionario comprimido usando el comando KCL LOAD DICT o el KAREL
ADD_DICT incorporado.
4. Utilice las funciones integradas del diccionario KAREL para mostrar el texto del diccionario. Referirse aSección 10.2.12, "Acceder
a los elementos del diccionario desde un programa KAREL", para obtener más información.
Los archivos de diccionario son útiles para ejecutar el mismo programa en diferentes robots, cuando el texto que se muestra
en cada robot es ligeramente diferente. Por ejemplo, si un programa se ejecuta en un solo robot, es aceptable usar
declaraciones KAREL WRITE. Sin embargo, el uso de archivos de diccionario simplifica la visualización de texto en muchos
robots, al permitir la creación de varios archivos de diccionario que utilizan el mismo programa para mostrar el texto.
La sintaxis de un diccionario de usuario consta de uno o más elementos de diccionario. Los elementos del diccionario
tienen las siguientes características:
10–3
10. DICCIONARIOS Y FORMULARIOS MARRC75KR07091E Rev H
• Un elemento de diccionario puede contener varias líneas de información.,hasta una pantalla completa de
información. Un archivo de diccionario de usuario tiene la siguiente sintaxis:
<*comentario>
$n<,ele_name><@cursor_pos><&res_word><#chr_code><"Ele_text"><&res_wor d>
<#chr_code><+nest_ele>
<*comentario>
<$n+1>
— * comentario es cualquier elemento que comience con *. Se ignora todo el texto hasta el final de la línea. Referirse
aSección 10.2.9.
— , ele_name especifica una coma seguida del nombre del elemento. Referirse aSección 10.2.3.
— @cursor_pos especifica la posición del cursor (dos números enteros separados por una coma). Las posiciones
del cursor comienzan en @1,1. Referirse aSección 10.2.4.
— &res_word especifica una palabra de reserva del diccionario. Referirse aSección 10.2.6.
— "Ele_text" especifica el texto del elemento que se mostrará. Referirse aSección 10.2.5.
• Un elemento de diccionario no tiene que residir todo en una línea.Inserte un retorno de carro en cualquier lugar
donde se permita un espacio, excepto dentro del texto citado. El texto citado debe comenzar y terminar en la misma
línea.
• Los elementos del diccionario pueden contener texto, posición e información de atributos de visualización.Tabla 10–2
enumera los atributos de un elemento de diccionario.
Un número de elemento de diccionario identifica un elemento de diccionario. Un elemento de diccionario comienza con un "$"
seguido del número de elemento. Los números de elementos tienen las siguientes características:
• Si se omiten los números de elementos, el compresor del diccionario agregará una sobrecarga adicional de 5
bytes por cada número omitido. Por lo tanto, no debe saltarse una gran cantidad de números.
• Si desea que el compresor del diccionario genere automáticamente los números de los elementos de forma
secuencial, utilice un "-" en lugar del número. En el siguiente ejemplo, el "-" se equipara al elemento número 7.
$1
$2
$3
10–4
MARRC75KR07091E Rev H 10. DICCIONARIOS Y FORMULARIOS
$6
ps
Cada elemento del diccionario puede tener un nombre de elemento opcional. El nombre está separado del número de elemento por
una coma y cero o más espacios. Los nombres de los elementos distinguen entre mayúsculas y minúsculas. Solo los primeros 12
caracteres se utilizan para distinguir los nombres de los elementos.
$1, KCMN_SH_LANG
$2, KCMN_SH_DICT
Los elementos del diccionario pueden hacer referencia a otros elementos por su nombre en lugar de por número. Además, los nombres de los
Los elementos del diccionario se muestran en la ventana especificada a partir de la posición actual del cursor. En la
mayoría de los casos, mueva el cursor a una posición particular y comience a mostrar el elemento del diccionario
allí.
• El atributo de posición del cursor "@" se utiliza para mover el cursor en la pantalla dentro de la ventana.
• El signo “@” va seguido de dos números separados por una coma. El primer número es la fila de la ventana
y el segundo número es la columna de la ventana.
Por ejemplo, en el colgante de aprendizaje,la ventana "t_fu" comienza en la fila 5 de la pantalla "t_sc" y tiene 10
filas de alto y 40 columnas de ancho.
— La posición del cursor “@1,1” es la posición superior izquierda de la ventana "t_fu" y se encuentra en la columna 1
de la fila 5 de la pantalla "t_sc".
Referirse aSección 7.10.1para obtener más información sobre las pantallas y ventanas colgantes de aprendizaje.
Por ejemplo, en el CRT/KB,la ventana "c_fu" comienza en la fila 5 de la pantalla "c_sc" y tiene 17
filas de alto y 80 columnas de ancho.
— La posición del cursor “@1,1” es la posición superior izquierda de la ventana "c_fu" y está ubicada en la columna
de la fila 5 de la pantalla "c_sc".
10–5
10. DICCIONARIOS Y FORMULARIOS MARRC75KR07091E Rev H
Referirse aSección 7.10.2para obtener más información sobre las pantallas y ventanas CRT/KB.
El tamaño de la ventana define los límites de visualización de los elementos del diccionario.
El texto del elemento, o texto entre comillas, es la información (texto) que desea que se muestre en la pantalla.
• Para insertar una comilla doble dentro del texto, use \" (barra invertida, comilla).
• Más de una cadena de texto de elemento puede residir en un elemento de diccionario, separados por palabras de
reserva. Referirse aSección 10.2.6para más información.
• Para incluir los valores de las variables de KAREL en el texto del elemento, utilice las funciones integradas
de KAREL. WRITE_DICT_V y READ_DICT_V, para pasar los valores de las variables.
• Para identificar el lugar donde desea que se inserten las variables KAREL, utiliceespecificadores de formato en el
texto.
• Un especificador de formato es el carácter "%" seguido de algunos campos opcionales y luego un carácter de
conversión. Un especificador de formato tiene la siguiente sintaxis:
%<-><+><ancho><.precisión>conversion_character<^argument_numbe r>
Especificador de formato
• El ancho del campo es un número que indica el número mínimo de caracteres que debe ocupar el
campo.
• .la precisión es la . carácter seguido de un número. Tiene un significado específico dependiendo del
carácter de conversión:
10–6
MARRC75KR07091E Rev H 10. DICCIONARIOS Y FORMULARIOS
Carácter de conversión
El carácter de conversión se utiliza para identificar el tipo de datos de la variable KAREL que se pasó. Tabla
10–1enumera los caracteres de conversión:
s CUERDA; imprime caracteres desde la cadena hasta el final de la cadena o el número de caracteres dado
por la precisión.
F REAL; notación decimal de la forma <->mmm.dddddd, donde el número de d viene dado por la precisión.
La precisión predeterminada es 6; una precisión de 0 suprime el punto decimal.
mi, mi REAL; notación decimal de la forma <->mmm.dddddd, donde el número de d viene dado por la precisión.
La precisión predeterminada es 6; una precisión de 0 suprime el punto decimal.
• Los caracteresd,o,X,X,ytu,se puede utilizar con los tipos de datos INTEGER, SHORT, BYTE y
BOOLEAN. Un tipo de datos BOOLEAN se muestra como 0 para FALSO y 1 para VERDADERO.
Precaución
Ancho y Precisión
El campo de ancho opcional se utiliza para fijar el número mínimo de caracteres que ocupa la variable
mostrada. Esto es útil para mostrar columnas de números.
Establecer un ancho mayor que el número más grande alinea los números.
10–7
10. DICCIONARIOS Y FORMULARIOS MARRC75KR07091E Rev H
• Si el número mostrado tiene menos caracteres que el ancho, el número se rellenará a la izquierda (oa la
derecha si se usa el carácter "-") con espacios.
• d,o,X,X,ytu-El número mínimo de dígitos a imprimir. Si el número entero mostrado es menor que
la precisión, se rellenan los ceros iniciales. Esto es lo mismo que usar un cero inicial en el ancho
del campo.
• s-El número máximo de caracteres que se imprimirán. Si la cadena es más larga que la precisión, los
caracteres restantes se ignoran.
Ordenación de argumentos
Una cadena de texto de elemento puede contener más de un especificador de formato. Cuando se muestra un
elemento de diccionario, el primer especificador de formato se aplica al primer argumento, el segundo
especificador al segundo argumento, y así sucesivamente. En algunos casos, es posible que deba aplicar un
especificador de formato fuera de secuencia. Esto puede suceder si desarrolla su programa para un idioma y luego
traduce el diccionario a otro idioma.
Para reorganizar el orden de los especificadores de formato, siga el carácter de conversión con el carácter “̂ ” y el
número de argumento. Como ejemplo,
$20, file_message "Archivo %s^2 en el dispositivo %s^1 no encontrado" &nueva_línea
significa usar el segundo argumento para el primer especificador y el primer argumento para el segundo especificador.
Precaución
No puede reorganizar los argumentos que son de tipo SHORT o BYTE porque estos
argumentos se pasan de manera diferente a otros tipos de datos. Reorganizar los
argumentos de tipo SHORT o BYTE podría generar resultados inesperados.
Las palabras reservadas comienzan con el carácter “&” y se utilizan para controlar la pantalla. Afectan cómo y, en
algunos casos, dónde se mostrará el texto. Proporcionan una manera fácil y autodocumentada de agregar
información de control al diccionario. Referirse aTabla 10–2para obtener una lista de las palabras reservadas
disponibles.
10–8
MARRC75KR07091E Rev H 10. DICCIONARIOS Y FORMULARIOS
&doble de ancho Tamaño de video ancho (#142) (consulte la descripción a continuación para ver el uso)
10–9
10. DICCIONARIOS Y FORMULARIOS MARRC75KR07091E Rev H
&doble_alto Tamaño de video alto (# 148) (consulte la descripción a continuación para ver el uso)
Los atributos &normal_size, &double_high y &double_wide se utilizan para borrar datos de una línea en una pantalla.
Sin embargo, solo son efectivos para la línea en la que se encuentra actualmente el cursor. Para usar estos atributos,
primero coloque el cursor en la línea que desea cambiar de tamaño. Luego escribe el atributo y el texto.
• Para el colgante de enseñanza,&double_high significa que tanto el doble alto como el doble ancho están
activos, y &double_wide es lo mismo que &normal_size.
• Para el CRT/KB,&double_high significa que tanto el doble de alto como el doble de ancho están activos, y
&double_wide significa el doble de ancho pero el alto normal.
Un código de carácter es el carácter “#” seguido de un número entre 0 y 255. Proporciona un método para
insertar caracteres imprimibles especiales, que no están representados en su teclado, en su diccionario.
Referirse aApéndice D, para obtener una lista de los códigos de caracteres ASCII.
El atributo más “+” permite que un elemento de diccionario haga referencia a otro elemento de diccionario del mismo
diccionario, hasta un máximo de cinco niveles. Se puede hacer referencia a estos elementos anidados por nombre de elemento
o número de elemento y pueden estar antes o después del elemento actual. Cuando se muestran elementos anidados, todos
los elementos se muestran en su orden de anidamiento como si fueran un solo elemento.
El carácter de asterisco (*) indica que todo el texto, hasta el final de la línea, es un comentario. Todos los comentarios se
ignoran cuando se comprime el diccionario. Un comentario se puede colocar en cualquier lugar donde se permita un
espacio, excepto dentro del texto del elemento.
10–10
MARRC75KR07091E Rev H 10. DICCIONARIOS Y FORMULARIOS
Los números de elementos a los que se asigna un nombre de elemento en el diccionario se pueden generar en un
archivo de inclusión KAREL para la programación KAREL. El archivo de inclusión contendrá el declarador CONST y una
declaración constante para cada elemento nombrado.
nombre_elemento = número_elemento
Su programa KAREL puede incluir este archivo y hacer referencia a cada elemento del diccionario por nombre en lugar de
número.
Para generar un archivo de inclusión de KAREL, especifique “.kl”, seguido del nombre del archivo, en la primera línea del archivo
del diccionario. El archivo de inclusión de KAREL se genera automáticamente cuando se comprime el diccionario.
NotaSi realiza un cambio en su diccionario que hace que se reordenen los números de elementos, debe volver a
traducir su programa KAREL para asegurarse de que se utilizan los números de elementos correctos.
El editor KAREL se puede utilizar para crear y modificar el diccionario del usuario. Cuando haya terminado de
editar el archivo, comprímalo desde el símbolo del sistema de KCL.
KCL> COMPRESS DICT nombre de archivo
No incluya el tipo de archivo .UTX con el nombre del archivo. Si el compresor detecta algún error, señalará la
palabra ofensiva con una breve explicación de lo que está mal. Edite el diccionario del usuario y corrija el
problema antes de continuar.
Se creará un diccionario cargable con el nombre nombre de archivo pero con un tipo de archivo .TX. Si usaste el .
kl, también se creará un archivo de inclusión KAREL.Figura 10–1ilustra el proceso de compresión.
10–11
10. DICCIONARIOS Y FORMULARIOS MARRC75KR07091E Rev H
. archivo UTX
Compresor de diccionario
. Texas . KL
Antes de que el programa KAREL pueda usar un diccionario, el diccionario debe cargarse en el controlador y debe
asignarse un nombre de diccionario. El nombre del diccionario es una palabra de uno a cuatro caracteres que se asigna
al diccionario cuando se carga. Utilice el comando KCL LOAD DICT para cargar el diccionario.
KCL> LOAD DICT nombre de archivo dictname <lang_name>
El lang_name opcional permite cargar varios diccionarios con el mismo nombre de diccionario. El
diccionario real que utilizará su programa está determinado por el valor actual de $LANGUAGE.
Esta variable del sistema se establece mediante el comando KCL SET LANGUAGE o el SET_LANG
KAREL incorporado. Los idiomas permitidos son INGLÉS, JAPONÉS, FRANCÉS, ALEMÁN, ESPAÑOL o
POR DEFECTO.
El programa KAREL también puede cargar un diccionario. El ADD_DICT incorporado de KAREL se utiliza para cargar un
diccionario en un idioma específico y asignar un nombre de diccionario.
Su programa KAREL usa el nombre del diccionario y un número de elemento, o el nombre del elemento para acceder a un elemento del
diccionario. Los siguientes elementos incorporados de KAREL se utilizan para acceder a los elementos del diccionario:
• WRITE_DICT_V: escribe un elemento de diccionario que tiene especificadores de formato para una variable KAREL en una
ventana.
10–12
Traducido del inglés al español - www.onlinedoctranslator.com
• READ_DICT_V: lee un elemento de diccionario que tiene especificadores de formato en una variable STRING.
Aformaes un tipo de archivo de diccionario necesario para crear interfaces de menú que tengan el mismo "aspecto y funcionamiento"
que la interfaz de menú del controlador.
2. Comprima el archivo de formulario con el comando KCL COMPRESS FORM. Esto crea un archivo de
diccionario cargable con una extensión .TX y un archivo variable asociado (.VR).
3. Cargue el formulario.
• Desde KCL,use el comando KCL LOAD FORM. Esto cargará el archivo de diccionario
(.TX) y el archivo de variable asociado (.VR).
4. Use el KAREL DISCTRL_FORM incorporado para mostrar el texto del formulario. El DISCTRL_FORM incorporado maneja
todas las operaciones de entrada, incluida la posición del cursor, el desplazamiento, la paginación, la validación de
entrada y las selecciones de opciones. Consulte el DISCTRL_FORM incorporado,Apéndice A, "Descripción alfabética del
lenguaje KAREL".
Los formularios son útiles para programas que requieren que el usuario ingrese datos. Por ejemplo, una vez que el usuario ingresa los
datos, el programa debe probar estos datos para asegurarse de que estén en una forma aceptable. Los números deben ingresarse con
el formato de carácter correcto y dentro de un rango específico, las cadenas de texto no deben exceder una cierta longitud y deben ser
una selección válida. Si se ingresa un valor incorrecto, el programa debe notificar al usuario y solicitar una nueva entrada. Los
formularios proporcionan una manera de validar automáticamente los datos ingresados. Los formularios también permiten que el
programa se vea como si estuviera integrado en el resto de los menús del sistema, al brindarle al operador una interfaz familiar.
Los formularios deben tener seleccionado el menú USER2. Los formularios utilizan las pantallas "t_sc" y "c_sc" para la
consola portátil y CRT/KB respectivamente. Las ventanas predefinidas por el sistema se utilizan para mostrar el texto del
formulario. Para ambas pantallas, esta ventana tiene 10 filas de alto y 40 columnas de ancho. Esto significa que los
atributos &double_high y &double_wide se usan en CRT/KB y no se pueden cambiar.
10–13
10. DICCIONARIOS Y FORMULARIOS MARRC75KR07091E Rev H
Un formulario define una interfaz de operador que aparece en la consola portátil o en las pantallas CRT/KB. Un formulario es un
elemento especial del diccionario. Muchos formularios pueden residir en el mismo diccionario junto con otros elementos del
diccionario (que no son formularios).
NotaSi su programa requiere un archivo de diccionario de formularios (.FTX), no es necesario que cree un archivo de diccionario de
usuario (.UTX). Puede colocar los elementos de su diccionario de usuario en el mismo archivo que sus formularios.
Para distinguir un formulario de otros elementos en el diccionario, el símbolo “.form” se coloca antes del
elemento y el símbolo “.endform” se coloca después del elemento. Los símbolos deben residir en sus propias
líneas. Los símbolos de formulario se omiten del diccionario comprimido.
Sintaxis de formulario
. formulario <atributos_formulario>
$n, form_name<@cursor_pos><&res_word>"Menu_title"<&res_work>&new_line
<@cursor_pos><&res_word>"Menu_label"<&res_word>&new_line
<@cursor_pos><&res_word><"-Elemento_seleccionable"<&res_word>&new_line>
<@cursor_pos><&res_word><"-%Edit_item"<&res_word>&new_line> <
@cursor_pos><&res_word><"Non_selectable_text"<&res_word>&new_line>
<@cursor_pos><&res_word><"Display_only_item"<&res_word>&new_line> <^function_key
&nueva_línea>
<?menú_ayuda &nueva_línea>
. forma final
<$n,función_tecla
<"Nombre_clave" &nueva_línea>
<"Nombre_clave" &nueva_línea>
<"Nombre_clave" &nueva_línea>
<"Nombre_clave" &nueva_línea>
<"etiqueta_de_ayuda" &nueva_línea>
<"Nombre_clave" &nueva_línea>
<"Nombre_clave" &nueva_línea>
<"Nombre_clave" &nueva_línea>
<"Nombre_clave" &nueva_línea>
"Nombre clave"
>
<$n,menú_ayuda
<"Texto_de_ayuda" &nueva_línea>
<"Texto_de_ayuda" &nueva_línea>
"Ayuda_texto">
Restricciones
10–14
MARRC75KR07091E Rev H 10. DICCIONARIOS Y FORMULARIOS
• Los símbolos no definidos aquí son símbolos de elementos de diccionario de usuario estándar ($n, @cursor_pos,
&res_word, &new_line).
• "Menu_title" y "Menu_label" especifican el texto del elemento que llena las dos primeras líneas del
formulario y siempre se muestran.
• "-Elemento_seleccionable" especifica el texto del elemento al que se puede dirigir el cursor y seleccionar.
• "-%Editable_item" especifica el texto del elemento al que se puede dirigir el cursor y editar.
• "Non_selectable_text" especifica el texto del elemento que se muestra en el formulario y al que no se puede dirigir el cursor.
• "%Display_only_item" especifica el texto del elemento usando un especificador de formato. No se puede ubicar con el cursor.
• ^function_key define las etiquetas para las teclas de función utilizando un nombre de elemento.
• ?help_menu define una página de texto de ayuda que está asociada con un formulario usando un nombre de elemento.
• "Key_name" especifica el texto del elemento que se muestra sobre las teclas de función.
• "Help_label" es la etiqueta especial para la tecla de función 5. Puede ser cualquier etiqueta o la palabra especial HELP.
• Los atributos de color se pueden especificar en los formularios. losiEl colgante mostrará el color. El colgante
monocromático ignorará los atributos de color.
Normalmente, un formulario se muestra con números de línea delante de cualquier elemento al que se pueda mover el cursor.
Para evitar que un formulario genere y muestre números de línea, se utiliza el símbolo “.form unnumber”.
Para evitar que un formulario borre cualquier ventana antes de mostrarse, se utiliza el símbolo ".form noclear". Los
símbolos "noclear" y "unnumber" se pueden utilizar en cualquier orden.
En el siguiente ejemplo, MH_TOOLDEFN es un formulario sin numerar que no borra ninguna ventana.
MH_APPLIO es un formulario numerado.
. formulario unnumber noclear
$1, MH_TOOLDEFN
. forma final
$2, MH_PORT
$3, MH_PORTFKEY
10–15
10. DICCIONARIOS Y FORMULARIOS MARRC75KR07091E Rev H
. forma
$6, MH_APLICACIÓN
. forma final
El título del menú es el primer elemento de texto que sigue al nombre del formulario. La etiqueta del menú sigue al título
del menú. Cada uno consta de una fila de texto en una ventana sin desplazamiento.
• En el colgante de enseñanzala primera fila de la ventana "completa" se utiliza para el título del menú. La segunda fila
se utiliza para la etiqueta del menú.
• En la CRT/KBla primera fila de la viuda "cr05" se usa para el título del menú. La segunda fila se utiliza
para la etiqueta del menú.
A menos que se especifique el atributo de formulario "noclear", tanto el título como la etiqueta del menú se borrarán.
La palabra reservada &home debe especificarse antes del título del menú para asegurar que el cursor esté colocado
correctamente. La palabra reservada &reverse también debe especificarse antes del título del menú y la palabra
reservada &standard debe seguir directamente después del título del menú. Estos son necesarios para garantizar que
el menú parezca coherente con la interfaz de menú del controlador. La palabra reservada &nueva_línea debe
especificarse después del título del menú y de la etiqueta del menú para indicar el final del texto. El siguiente es un
ejemplo de título de menú y definición de etiqueta de menú.
. forma
$1, mal_formulario
. forma final
10–16
MARRC75KR07091E Rev H 10. DICCIONARIOS Y FORMULARIOS
Si no se desea un texto de etiqueta de menú, se puede especificar &new_line dos veces después del título del menú,
como en el siguiente ejemplo.
. forma
$1,misc_form
. forma final
Si se especifica el atributo de posición del cursor, no es necesario especificar la palabra reservada &nueva_línea. El
siguiente ejemplo establece la posición del cursor para el título del menú en la fila 1, columna 2 y la etiqueta del
menú en la fila 2, columna 5.
. forma
$1,misc_form
. forma final
El texto del menú del formulario sigue al título del menú y la etiqueta del menú. Consiste en un número ilimitado de líneas que
se mostrarán en una ventana de desplazamiento de 10 líneas llamada "fscr" en el dispositivo de enseñanza y "ct06" en el CRT/
KB. Esta ventana está ubicada en las filas 5-14 y las columnas 1-40. A menos que se especifique la opción "noclear", todas las
líneas se borrarán antes de mostrar el formulario.
10–17
10. DICCIONARIOS Y FORMULARIOS MARRC75KR07091E Rev H
— ENTERO
— Puerto ENTERO
- REAL
— CORTO (32768 a 32766)
— BYTE (0 a 255)
— BOOLEANO
— puerto BOOLEAN
- CUERDA
— Cadena de nombre del programa
— Simulación de puerto
• Texto no seleccionable
• Un elemento de menú seleccionable se ingresa en el diccionario como una cadena entre comillas dobles.
• El primer carácter de la cadena debe ser un guión, '-'. Este carácter no se imprimirá en la
pantalla. Por ejemplo,
"- Objeto 1 "
• Si un elemento seleccionable abarca varias líneas, el carácter de concatenación '+' debe usarse como el
último carácter de la cadena. El carácter de concatenación no se imprimirá en la pantalla. El atributo
&nueva_línea se utiliza para señalar una nueva línea. Por ejemplo,
"- Elemento 1, línea 1 +" &nueva_línea
10–18
MARRC75KR07091E Rev H 10. DICCIONARIOS Y FORMULARIOS
• La numeración automática utiliza las primeras tres columnas y no desplaza el texto del formulario. Por lo tanto, el
texto debe permitir las tres columnas agregando espacios o especificando las posiciones del cursor.
Por ejemplo,
"- Elemento 1 " &nueva_línea
o
@3,4"- Artículo 1 "
• Presionar enter en un elemento de menú seleccionable siempre hará que el procesador de formularios salga con el carácter de
terminación de ky_select, independientemente de la configuración de la máscara de terminación. Se devolverá el número de
artículo seleccionado.
• Si selecciona el elemento presionando la tecla fija ELEMENTO en la consola portátil, solo se resaltará el
elemento. No provoca una salida.
• Las selecciones de números abreviados no se manejan automáticamente, aunque se pueden especificar como una máscara
de terminación.
• El elemento de datos se ingresa en el diccionario como una cadena entre comillas dobles.
• El primer carácter de la cadena debe ser un guión, '-'. Este carácter no se imprime en la pantalla.
• El segundo carácter de la cadena debe ser un '%'. Este carácter marca el comienzo de un especificador de
formato.
• Cada especificador de formato comienza con un % y termina con un carácter de conversión. Todos los caracteres entre
estos dos caracteres tienen el mismo significado que los elementos del diccionario del usuario.
10–19
10. DICCIONARIOS Y FORMULARIOS MARRC75KR07091E Rev H
NotaDebe proporcionar un ancho de campo con cada especificador de formato; de lo contrario, se utilizará un valor predeterminado.
píxeles puerto ENTERO; notación hexadecimal sin signo (sin un 0x o 0X inicial), usando abcdef o
ABCDEF para 10, ..., 15.
F REAL; notación decimal de la forma <->mmm.dddddd, donde el número de d viene dado por la
precisión. La precisión predeterminada es 6; una precisión de 0 suprime el punto decimal.
k CUERDA; imprime caracteres desde la cadena KAREL hasta el final de la cadena o el número de caracteres
dado por la precisión.
paquete CUERDA; imprime el nombre del programa desde la cadena KAREL hasta el final de la cadena o el
número de caracteres dado por la precisión.
norte ENTERO; imprimir caracteres de la cadena de enumeración de teclas de función. Utiliza elementos de diccionario para
w ENTERO; imprimir caracteres de la cadena de enumeración de la subventana. Utiliza elementos de diccionario para
v ENTERO; imprimir caracteres de la cadena de enumeración de la subventana. Utiliza una variable para definir las
cadenas de enumeración.
10–20
MARRC75KR07091E Rev H 10. DICCIONARIOS Y FORMULARIOS
El procesador de formularios recupera los valores de la matriz de valores de entrada y los muestra secuencialmente.Todos los
valores se actualizan dinámicamente.
• Puede especificar un rango de valores aceptables dando a cada especificador de formato un valor
mínimo y máximo permitido "(min, max)". Si no especifica un valor mínimo y máximo, se aceptará
cualquier valor entero o de coma flotante. Por ejemplo,
"-%3d(1,255)" o "-%10.3f(0.,100000.)"
— Si el nuevo valor está fuera de rango, se escribirá un mensaje de error en la línea de solicitud y el
valor actual no se modificará.
• El especificador de formato %B se usa para valores KAREL BOOLEAN, para mostrar y seleccionar opciones de
menú para las teclas de función F4 y F5. El nombre del elemento del diccionario, que contiene las etiquetas de
las teclas de función, está entre paréntesis y se especifica después de %B. Por ejemplo,
"-%4B(enum_bool)"
El elemento del diccionario que define las teclas de función debe definir primero el valor FALSO (etiqueta F5) y el valor
VERDADERO en segundo lugar (etiqueta F4). Por ejemplo,
$2,enum_bool
" SÍ"
10–21
10. DICCIONARIOS Y FORMULARIOS MARRC75KR07091E Rev H
SÍ NO
El procesador de formularios etiquetará las teclas de función cuando el cursor se mueva al elemento enumerado. El valor que se muestra en el
campo es el mismo que el de la etiqueta de la tecla de función, excepto que se eliminan todos los espacios en blanco iniciales.
• El especificador de formato %P se usa para valores de puerto KAREL BOOLEAN, para mostrar y seleccionar
opciones de menú desde las teclas de función F4 y F5. El nombre del elemento del diccionario, que contiene las
etiquetas de las teclas de función, está entre paréntesis y se especifica después de %P. Por ejemplo,
"-%3P(enum_bool)"
El elemento del diccionario que define las teclas de función debe definir el valor 0 primero (etiqueta F5) y el valor 1 en
segundo lugar (etiqueta F4). Por ejemplo,
$2,enum_bool
" EN"
EN APAGADO
El procesador de formularios etiquetará las teclas de función cuando el cursor se mueva al elemento enumerado. El valor que se muestra en el
campo es el mismo que el de la etiqueta de la tecla de función, excepto que se eliminan todos los espacios en blanco iniciales.
• El especificador de formato %S se utiliza para la simulación de puertos, para mostrar y seleccionar opciones de menú
desde las teclas de función F4 y F5. El nombre del elemento del diccionario, que contiene las etiquetas de las teclas de
función, está entre paréntesis y se especifica después de %S. Por ejemplo,
"-%1S(sim_fkey)"
El elemento del diccionario que define las teclas de función debe definir el valor 0 primero (etiqueta F5) y el valor 1 en
segundo lugar (etiqueta F4). Por ejemplo,
$-, tecla_sim_f
" UNSIM " &nueva_línea * Etiqueta de tecla F5, el puerto no será simulado
"SIMULATE" &nueva_línea * Etiqueta de tecla F4, el puerto será simulado
10–22
MARRC75KR07091E Rev H 10. DICCIONARIOS Y FORMULARIOS
El procesador de formularios etiquetará las teclas de función cuando el cursor se mueva al elemento enumerado. El valor que se muestra
en el campo es el mismo que la etiqueta de la tecla de función, excepto que se eliminan todos los espacios en blanco iniciales y el valor
se trunca para que quepa en el ancho del campo.
• Puede optar por borrar el contenido de una cadena antes de editarla. Para hacer esto, siga el especificador
de formato STRING con la palabra "clear", entre paréntesis. Si no especifica "(borrar)", el valor
predeterminado es modificar la cadena existente. Por ejemplo,
"-% 10k (borrar)"
• Puede utilizar el especificador de formato %pk para mostrar y seleccionar nombres de programas en la subventana. Los
tipos de programas que se mostrarán se encuentran entre paréntesis y se especifican después de %pk. Por ejemplo,
"-%12pk(16)" * especifica TP y PC
Todos los programas que coinciden con el tipo especificado y están actualmente en la memoria, se muestran en la
subventana. Cuando se selecciona un programa, el valor de la cadena se copia a la variable asociada.
• Puede usar el especificador de formato %n (para valores enteros enumerados) para mostrar y seleccionar
opciones de las teclas de función. El nombre del elemento del diccionario que contiene la lista de opciones válidas
está entre paréntesis y se especifica después de %n. Por ejemplo,
"-%6n(enum_fkey)"
El elemento del diccionario que define las teclas de función debe incluir una etiqueta de tecla de función por línea. Si las
teclas de función a la izquierda de las especificadas no están activas, deben establecerse en "". Se puede utilizar un
máximo de 5 teclas de función. Por ejemplo,
$2,enum_fkey
10–23
10. DICCIONARIOS Y FORMULARIOS MARRC75KR07091E Rev H
"CIRC" *Especifica F4
El procesador de formularios etiquetará las teclas de función apropiadas cuando se seleccione el elemento enumerado. Cuando se
selecciona una tecla de función, el valor establecido en el número entero es el siguiente:
El usuario presiona F1, valor = 1
El valor que se muestra en el campo es el mismo que el de la etiqueta de la tecla de función, excepto que se eliminan todos los espacios en blanco
iniciales.
• Puede utilizar el especificador de formato %w (para valores enteros enumerados) para mostrar y seleccionar
opciones de la subventana. El nombre del elemento del diccionario, que contiene la lista de opciones válidas, está
entre paréntesis y se especifica después de %w. Por ejemplo,
"-%8w(enum_sub)"
Se necesita un elemento de diccionario para definir cada opción en la subventana. Se pueden usar 35 opciones.
Si se utilizan menos de 35 opciones, la última opción debe ir seguida de un elemento de diccionario que
contenga"\a".Las opciones se mostrarán en 2 columnas con 7 opciones por página. Si solo se utilizan 4 o
menos opciones, las opciones se mostrarán en 1 columna con un ancho de 36 caracteres. Por ejemplo,
$2,enum_sub "Opción 1"
$3 "Opción 2"
$4 "Opción 3"
$5 "\a"
El procesador de formularios etiquetará F4 como “[ELECCIÓN]” cuando el cursor se mueva al elemento enumerado. Cuando
se selecciona la tecla de función F4, [CHOICE], se creará la subventana con la visualización adecuada. Cuando se selecciona
una opción, el valor establecido en el número entero es el número seleccionado. El valor que se muestra en el campo es el
mismo que la etiqueta del diccionario, excepto que se eliminan todos los espacios en blanco iniciales.
10–24
MARRC75KR07091E Rev H 10. DICCIONARIOS Y FORMULARIOS
• También puede usar el especificador de formato %v (para valores enteros enumerados) para mostrar y
seleccionar opciones de la subventana. Sin embargo, en lugar de definir las opciones en un diccionario, se
definen en una variable. El nombre del elemento del diccionario, que contiene el programa y el nombre de la
variable, está entre paréntesis y se especifica después de %v. Por ejemplo,
"-%8v(enum_var)"
$-,enum_var
[RUNFORM] CHOICES debe definirse como una matriz de cadenas KAREL. Cada elemento de la matriz debe definir una
opción en la subventana. Este especificador de formato es similar a %w. Sin embargo, el primer elemento está
relacionado con el valor 0 y nunca se usa. El valor 1 comienza en el segundo elemento. El último valor es el final de la
matriz o el primer valor no inicializado.
[EJECUTAR] OPCIONES:ARRAY[6] OF STRING[12] =
[1] *unidad*
[5] *unidad*
[6] *unidad*
• El especificador de formato %t se utiliza para especificar un elemento de vista de árbol. Utiliza un valor KAREL
BOOLEAN para determinar si el árbol está expandido o colapsado. Por ejemplo,
"-%t"
El procesador de formularios cambiará %t a %c. Cuando el valor BOOLEAN es FALSO, se mostrará un '+' usando
el especificador de formato y los elementos que siguen a la vista de árbol no se mostrarán (estado colapsado).
Cuando el valor BOOLEAN es VERDADERO, se mostrará un '-' usando el especificador de formato y se mostrarán
los elementos que siguen a la vista de árbol (estado expandido).Tabla 10–4 muestra algunos ejemplos de
formato.
10–25
10. DICCIONARIOS Y FORMULARIOS MARRC75KR07091E Rev H
"-%t" + –
"-%2t" + –
"-%t Programa de soldadura:" + Programa de soldadura: – Programa de soldadura:
• El valor KAREL BOOLEAN solo determinará el estado inicial de la vista de árbol. No está monitoreado.
Cuando el usuario selecciona el elemento de la vista de árbol y presiona ENTER, el estado de la vista de árbol
alternará y el valor BOOLEAN se establecerá en el valor resultante. Este estado se mantiene cuando se sale y
se vuelve a entrar en el formulario. Si el valor KAREL BOOLEAN está en CMOS o SHADOW, entonces el estado
se mantiene entre ciclos de energía.
• Hay una manera de actualizar la vista de árbol. Pasar ctl_w al formulario expandirá o colapsará todos los elementos de la vista de
árbol en función de sus valores KAREL BOOLEAN asociados. Se mantendrá el elemento predeterminado. Si el elemento
predeterminado ya no se muestra, su elemento de vista de árbol se convertirá en el nuevo elemento predeterminado.
• No se permite el anidamiento de elementos de la vista de árbol. Si se encuentra otro %t, la vista de árbol actual finaliza
y se inicia una nueva. Cuando se debe finalizar un elemento de vista de árbol sin crear un nuevo elemento de vista de
árbol, se puede usar .endtree. Por ejemplo:
• Si un formulario se construye concatenando múltiples formularios y un elemento estará dentro de una vista de árbol,
entonces se debe usar .tree. El .endtree es opcional y solo es necesario si otros elementos no estarán dentro de la vista
de árbol.
. forma
$-,wl_data_cmd &nueva línea &nueva línea
. árbol
" Alimentación de alambre ""-%6.2f(0.0, 9999.0)" &nueva_línea
. forma final
La vista de árbol se puede utilizar para crear formularios dinámicos. Se puede utilizar en lugar de concatenar varios
formularios en uno. En este caso, el elemento de datos de la vista de árbol se usa sin el - inicial. Por ejemplo,
"%t" &nueva_línea
10–26
MARRC75KR07091E Rev H 10. DICCIONARIOS Y FORMULARIOS
Cuando el valor KAREL BOOLEAN es FALSO, los elementos que siguen a la vista de árbol serán invisibles. Cuando el
valor KAREL BOOLEAN es TRUE, los elementos que siguen a la vista de árbol serán visibles. La línea de vista de árbol
siempre es invisible. Cualquier otro artículo en su línea también es invisible.
El valor KAREL BOOLEAN solo determinará el estado inicial de la vista de árbol. No está monitoreado. El
usuario nunca podrá cambiar el estado ya que el elemento de la vista de árbol es invisible.
Hay una manera de actualizar la vista de árbol. Pasar ctl_w al formulario expandirá o colapsará todos los elementos de la vista de árbol
en función de sus valores KAREL BOOLEAN asociados. Se mantendrá el elemento predeterminado. Si el elemento predeterminado ya no
se muestra, el elemento anterior se convertirá en el nuevo elemento predeterminado.
El texto no seleccionable se puede especificar en el formulario. Estos artículos tienen las siguientes características:
• El texto no seleccionable se ingresa en el diccionario como una cadena entre comillas dobles.
• El texto no seleccionable se puede definir en cualquier parte del formulario, pero no debe exceder el número
máximo de columnas en la ventana.
Mostrar solo elementos de datos se pueden especificar en el formulario. Estos artículos tienen las siguientes características:
• Los elementos de datos de solo visualización se introducen en el diccionario como una cadena entre comillas dobles.
• El primer carácter de la cadena debe ser un '%'. Este carácter marca el comienzo de un especificador de
formato.
• Los especificadores de formato son los mismos que los definidos en la sección anterior para un elemento de datos de edición.
Los atributos de posicionamiento del cursor se pueden utilizar para definir la fila y la columna de cualquier texto. La fila
siempre se especifica primero. El compresor del diccionario generará un error si el formulario intenta retroceder a una fila o
columna anterior. El título y la etiqueta del formulario están en las filas 1 y 2. La ventana de desplazamiento comienza en la fila
3. Por ejemplo,
@3,4 "- Artículo 1"
10–27
10. DICCIONARIOS Y FORMULARIOS MARRC75KR07091E Rev H
Aunque la ventana de desplazamiento tiene solo 10 líneas, un formulario largo puede especificar posiciones de fila mayores de 12.
El procesador de formularios realiza un seguimiento de la fila actual durante el desplazamiento.
Se pueden utilizar palabras reservadas o códigos de caracteres. Referirse aTabla 10–5para obtener una lista de todas las palabras reservadas
disponibles. Sin embargo, solo las palabras reservadas que no mueven el cursor están permitidas en una ventana de desplazamiento. Referirse a
Tabla 10–6para obtener una lista de palabras reservadas disponibles para una ventana de desplazamiento.
10–28
MARRC75KR07091E Rev H 10. DICCIONARIOS Y FORMULARIOS
&doble de ancho Tamaño de video ancho (#142) (consulte la descripción a continuación para ver el uso)
&doble_alto Tamaño de video alto (# 148) (consulte la descripción a continuación para ver el uso)
Tabla 10–6enumera las palabras reservadas que se pueden utilizar para una ventana de desplazamiento.
10–29
10. DICCIONARIOS Y FORMULARIOS MARRC75KR07091E Rev H
Cada formulario puede tener un menú de teclas de función relacionadas. Un menú de teclas de función tiene las siguientes
características:
• El menú de teclas de función se especifica en el diccionario con un signo de intercalación, ^, seguido inmediatamente por el
nombre o número del elemento del diccionario de teclas de función. Por ejemplo,
^misc_fkey
• El elemento del diccionario que define las teclas de función debe incluir una etiqueta de tecla de función por línea. Si
las teclas de función a la izquierda de las especificadas no están activas, deben establecerse en "". Se puede utilizar
un máximo de 10 teclas de función. Por ejemplo,
$3,misc_fkey
• Las teclas de función estarán temporalmente inactivas si un elemento de datos enumerado está usando las mismas teclas
de función.
• Si la tecla de función F5 está etiquetada como AYUDA, llamará automáticamente al menú de ayuda del formulario, si existe.
F1 F2 F3 F4 AYUDA >
F8 F9
10–30
MARRC75KR07091E Rev H 10. DICCIONARIOS Y FORMULARIOS
También se puede definir un menú de teclas de función en una variable. El elemento del diccionario de teclas de función contendrá el
programa y el nombre de la variable, con un asterisco como prefijo para distinguirlo del texto de la tecla de función. Por ejemplo,
[RUNFORM] FKEYS debe definirse como una matriz de cadenas KAREL. Cada elemento de la matriz debe definir una
etiqueta de tecla de función.
Cada formulario puede tener un menú de ayuda relacionado. El menú de ayuda tiene las siguientes características:
• El nombre o número de un elemento de ayuda se especifica en el diccionario con un signo de interrogación, ?, seguido
inmediatamente por el nombre o número del elemento del diccionario de ayuda. Por ejemplo,
?misc_help
• El elemento del diccionario que define el menú de ayuda está limitado a 48 líneas de texto.
• El procesador de formularios responderá a la tecla de ayuda mostrando el elemento del diccionario de ayuda en
una ventana predefinida. La ventana predefinida tiene 40 columnas de ancho y ocupa las filas 3 a 14.
— Flechas hacia arriba o hacia abajo para desplazarse hacia arriba o hacia abajo 1 línea.
10–31
10. DICCIONARIOS Y FORMULARIOS MARRC75KR07091E Rev H
— Flechas desplazadas hacia arriba o hacia abajo para desplazarse hacia arriba o hacia abajo 3/4 de una página.
— Anterior, para salir de la ayuda. El menú de ayuda restaura la pantalla anterior antes de volver.
Puede escribir en otras ventanas colgantes de aprendizaje activas mientras se muestra el formulario. La pantalla en sí
se llama "tpsc".Figura 10–2muestra todas las ventanas adjuntas a esta pantalla. A menos que se especifique la opción
noclear, las ventanas "full", "fscr", "prmp" y "ftnk" se borrarán antes de mostrar el formulario.
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + |error
|
|estadística |
|lleno |< superposición completa y motn
|fcr |
= =
|prmp |
|ftnk |
+------------------------------------------------------------------------+
Puede escribir en otras ventanas CRT/KB activas mientras se muestra el formulario. La pantalla en sí se llama "ctsc".
Todas las líneas en la pantalla están configuradas para el tamaño de video doble alto y doble ancho.Figura 10–3
muestra todas las ventanas adjuntas a esta pantalla. A menos que se especifique la opción "noclear", las ventanas
"ct05", "ct06", "ct03" y "ct04" se borrarán antes de mostrar el formulario.
10–32
MARRC75KR07091E Rev H 10. DICCIONARIOS Y FORMULARIOS
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + |err
|
|ct01 |
|ct05 | < ct05 y motn se superponen motn
Los archivos de diccionario de formato sin comprimir deben usar las siguientes convenciones de nombre de archivo:
• Las dos primeras letras del nombre del archivo del diccionario pueden ser un prefijo de aplicación.
• Si el nombre del archivo tiene más de cuatro caracteres, el procesador de formularios omitirá las dos primeras letras al
intentar determinar el nombre del diccionario.
• Las siguientes cuatro letras deben ser el nombre del diccionario que usa para cargar el archivo .TX; de lo contrario, el
procesador de formularios no funcionará.
• Las dos últimas letras son opcionales y deben usarse para identificar el idioma;
10–33
10. DICCIONARIOS Y FORMULARIOS MARRC75KR07091E Rev H
MH significa manejo de materiales, PALT es el nombre del diccionario que se usa para cargar el
diccionario en el controlador y EG significa inglés.
El archivo de formulario solo se puede comprimir en el disco RAM RD:. Comprimir un formulario es similar a
comprimir un diccionario de usuario. Desde el símbolo del sistema de KCL, ingrese:
KCL> COMPRESS FORM nombre de archivo
No incluya el tipo de archivo .FTX. Si el compresor detecta algún error, señalará la palabra ofensiva con
una breve explicación de lo que está mal. Edite el formulario y corrija el problema antes de continuar.
NotaEl archivo de formulario debe ser un archivo sin comprimir para que los errores apunten a la línea correcta.
El compresor creará dos archivos. Uno es un archivo de diccionario cargable con el nombre nombre de archivo pero con un
tipo de archivo .TX. El otro será un archivo variable con un tipo de archivo .VR pero con el nombre del diccionario de cuatro
caracteres como nombre de archivo. El nombre del diccionario se extrae del nombre de archivo como se describió
anteriormente. También se puede crear un tercer archivo si utilizó el símbolo ".kl" para generar un archivo de inclusión de
KAREL.Figura 10–4ilustra la compresión.
. archivo FTX
Compresor de diccionario
Cada formulario generará tres tipos de variables. Estas variables son utilizadas por el procesador de formularios. Deben
recargarse cada vez que se vuelve a comprimir el diccionario de formularios. Las variables son las siguientes:
1. Variable de matriz de elementos: el nombre de la variable será el nombre del diccionario de cuatro caracteres,
concatenado con el número de elemento, concatenado con _IT.
2. Variable de matriz lineal: el nombre de la variable será el nombre del diccionario de cuatro caracteres,
concatenado con el número de elemento, concatenado con _LN.
10–34
MARRC75KR07091E Rev H 10. DICCIONARIOS Y FORMULARIOS
3. Variable miscelánea: el nombre de la variable será el nombre del diccionario de cuatro caracteres,
concatenado con el número de elemento, concatenado con _MS.
Los datos que definen el formulario se generan en variables KAREL. Estas variables se guardan en el archivo de
variables y se cargan en el controlador. El nombre del programa es el nombre del diccionario precedido por un
asterisco. Por ejemplo, Dictionary MHPALTEG.FTX contiene:
. forma unnumber
$1, MH_TOOLDEFN
. forma final
$2, MH_PORT
$3, MH_PORTFKEY
. forma
$6, MH_APLICACIÓN
. forma final
Como se explica en la sección de convenciones de nomenclatura de archivos, el nombre del diccionario extraído del nombre del
archivo es “PALT”. Los elementos del diccionario 1 y 6 son formularios. Se genera un archivo variable denominado PALT.VR con
el nombre de programa “*PALT”. Contiene las siguientes variables:
PALT1_IT, PALT1_LN y PALT1_MS
NotaKCL CLEAR ALL no borrará estas variables. Para mostrarlos o borrarlos, puede SET VAR
$CRT_DEFPROG = '*PALT' y usar SHOW VARS y CLEAR VARS.
El nombre filename es el nombre del archivo de diccionario cargable. Después de cargar este archivo, el nombre del
diccionario se extrae del nombre de archivo y se utiliza para cargar el archivo de variables. Este comando KCL es equivalente a
10–35
10. DICCIONARIOS Y FORMULARIOS MARRC75KR07091E Rev H
El DISCTRL_FORM integrado se utiliza para mostrar y controlar un formulario en la consola portátil o en las pantallas CRT/KB.
Todas las claves de entrada se manejan dentro de DISCTRL_FORM. Esto significa que la ejecución de su programa KAREL se
suspenderá hasta que una tecla de entrada haga que DISCTRL_FORM salga del formulario. Todos los controladores de
condiciones permanecerán activos mientras su programa KAREL esté suspendido.
NotaDISCTRL_FORM solo mostrará el formulario si el menú USER2 es el menú seleccionado. Por lo tanto,
utilice FORCE_SPMENU(device_stat, SPI_TPUSER2, 1) antes de llamar a DISCTRL_FORM para forzar el
menú USER2.
La siguiente pantalla muestra la primera plantilla en FORMATO.FTX como se muestra en la consola portátil. Este ejemplo
contiene cuatro elementos de menú seleccionables.
Los elementos del diccionario en FORM.FTX, que se muestran enDiccionario de formulario de ejemplo para elementos de menú seleccionables
, se utilizaron para crear el formulario que se muestra enFigura 10–5.
10–36
MARRC75KR07091E Rev H 10. DICCIONARIOS Y FORMULARIOS
El programa mostrado enPrograma de ejemplo para elementos de menú seleccionablesse utilizó para mostrar el formulario que se
muestra enFigura 10–5.
%NOLOCKGROUP
formulario %INCLUDE - - le permite acceder a los números de elementos de formulario
%INCLUIR klevccdf
%INCLUIR llaves de paso
%INCLUIR klevkmsk
VAR
dispositivo_stat:ENTERO - - tp_panel o crt_panel
valor_matriz: ARRAY [1] DE CADENA [1] - - variable ficticia para DISCTRL_FORM
inact_array: ARRAY [1] DE BOOLEAN - - no utilizado
change_array: ARRAY [1] OF BOOLEAN - - no utilizado
def_item: ENTERO
term_char: ENTERO
estado: ENTERO
EMPEZAR
= tp_panel
dispositivo_stat
FORCE_SPMENU (device_stat, SPI_TPUSER2, 1): fuerza el TP USER2
menú
10–37
10. DICCIONARIOS Y FORMULARIOS MARRC75KR07091E Rev H
Figura 10–6muestra la segunda plantilla en FORM.FTX como se muestra en CRT/KB (solo se muestran 10
líneas numeradas a la vez). Este ejemplo contiene todos los tipos de datos de edición.
etiqueta aquí
1 Entero: 12345
2 Entero: 1
3 Real: 0.000000
4 Booleano: CIERTO
5 Cuerda: Esto es una prueba
6 Cuerda: **************
7 Byte: 10
8 Corto: 30
9 DIN[1]: APAGADO
10 AIN[1]: 0S
11 SALIDA[2]: 0 tu
12 Tipo de enumeración: MULTA
13 Tipo de enumeración: Verde
14 Tipo de enumeración: Rojo
15 Tipo de programa: PRINCIPAL
dieciséis Tipo de programa: FORMATO DE EJECUCIÓN
F6 F7 F8 F9 F10
Los elementos del diccionario en FORM.FTX, que se muestran enEjemplo de diccionario para editar elementos de datos, se
utilizaron para crear el formulario que se muestra enFigura 10–6.
10–38
MARRC75KR07091E Rev H 10. DICCIONARIOS Y FORMULARIOS
" UNSIM " &nueva_línea * Etiqueta de tecla F5, el puerto no será simulado
"SIMULAR" &nueva_línea * Etiqueta de tecla F4, se simulará el puerto
* Le permite especificar las etiquetas para 5 teclas de función $-,
enum_fkey
10–39
10. DICCIONARIOS Y FORMULARIOS MARRC75KR07091E Rev H
El programa mostrado enPrograma de ejemplo para editar elementos de datosse utilizó para mostrar el formulario enFigura
10–6.
%NOLOCKGROUP
formulario %INCLUDE - - le permite acceder a los números de elementos de formulario
%INCLUIR klevccdf
%INCLUIR llaves de paso
%INCLUIR klevkmsk
ESCRIBE
estructura = ESTRUCTURA
byte_var1: BYTE
byte_var2: BYTE
short_var: CORTO
ESTRUCTURA FINAL
VAR
device_stat: INTEGER -- tp_panel o crt_panel value_array:
ARRAY [20] OF STRING [40] inact_array: ARRAY [1] OF
BOOLEAN
change_array: ARRAY[1] OF BOOLEAN
def_item: ENTERO
term_char: ENTERO
10–40
MARRC75KR07091E Rev H 10. DICCIONARIOS Y FORMULARIOS
estado: ENTERO
int_var1: ENTERO
int_var2: ENTERO
real_var: REAL
bool_var: BOOLEANO
str_var1: CADENA[20]
str_var2: CADENA[12]
struc_var: estructura
color_sel1: ENTERO
color_sel2: ENTERO
prog_name1: ENTERO[12]
prog_name2: CADENA[12]
Prog_name3: CADENA[12]
prog_name4: CADENA[12]
opciones: ARRAY[5] OF STRING[12] BEGIN
10–41
10. DICCIONARIOS Y FORMULARIOS MARRC75KR07091E Rev H
Figura 10–7muestra la tercera plantilla en FORMATO.FTX tal como se muestra en la consola portátil. Este ejemplo contiene
elementos de solo visualización. Muestra cómo cargar automáticamente el archivo de diccionario de formularios y el archivo de
datos variables, desde un programa KAREL.
etiqueta aquí
Los elementos del diccionario en FORM.FTX, que se muestran enDiccionario de ejemplo para elementos de datos de solo visualización,
se utilizaron para crear el formulario que se muestra enFigura 10–7.
10–42
MARRC75KR07091E Rev H 10. DICCIONARIOS Y FORMULARIOS
El programa mostrado enPrograma de ejemplo para mostrar solo elementos de datosse utilizó para mostrar el formulario que se
muestra enFigura 10–7.
%NOLOCKGROUP
formulario %INCLUDE - - le permite acceder a los números de elementos de formulario
%INCLUIR klevccdf
%INCLUIR llaves de paso
%INCLUIR klevkmsk
device_stat: INTEGER -- tp_panel o crt_panel value_array:
ARRAY [20] OF STRING [40] inact_array: ARRAY [1] OF
BOOLEAN -- no se usa change_array: ARRAY[1] OF BOOLEAN
-- no se usa def_item:
ENTERO
term_char: ENTERO
estado: ENTERO
cargado: BOOLEANO
inicializado: BOOLEANO
int_var1: ENTERO
int_var2: ENTERO
real_var: REAL
bool_var: BOOLEANO
EMPEZAR
- - Asegúrese de que el diccionario 'FORMULARIO' esté cargado.
CHECK_DICT('FORMULARIO', formulario3, estado)
SI estado <> 0 ENTONCES
ESCRIBIR TPPROMPT(CR,'Cargando forma.....')
KCL ('CD MF2:',estado) - - Use el comando KCL CD para
- - cambiar directorio a MF2:
KCL ('CARGAR FORMULARIO', estado) - - Usar la carga KCL para el comando
- - para cargar en el formulario
SI estado <> 0 ENTONCES
ESCRIBIR TPPROMPT (CR, 'carga desde fallida, ESTADO =', estado) ABORTAR
- - Sin el diccionario este programa no puede continuar.
TERMINARA SI
MÁS
ESCRIBIR TPPROMPT (CR,'FORMULARIO ya cargado.')
TERMINARA SI
10–43
10. DICCIONARIOS Y FORMULARIOS MARRC75KR07091E Rev H
10–44
Capítulo 11
MENSAJERÍA DE TOMA
Contenido
11-1
11. MENSAJERÍA DE TOMA MARRC75KR07091E Rev H
La opción de mensajería de socket de usuario le ofrece la ventaja de utilizar la mensajería de socket TCP/IP de
KAREL.
Socket Messaging permite el intercambio de datos entre robots en red y una PC remota con LINUX o una
estación de trabajo UNIX. Una aplicación típica de Socket Messaging podría ser un robot que ejecuta un
programa KAREL que envía información del proceso a un programa de monitoreo en la PC remota. Se
recomienda la combinación de la opción de interfaz de PC en el robot y el kit de desarrollo de PC en la PC para el
intercambio de datos entre el robot y una PC basada en Windows.
Socket Messaging utiliza el protocolo TCP/IP para transferir datos sin formato, o datos que están en su forma original, sin
formato a través de la red. Los comandos y métodos que utiliza Socket Messaging para transferir datos forman parte del
protocolo TCP/IP. Dado que Socket Messaging admite etiquetas de cliente y servidor, las aplicaciones que requieren tiempos de
espera, latidos o comandos de formato de datos pueden proporcionar esta semántica adicional tanto en el lado del cliente
como del servidor (aplicación) de la conexión de mensajería del socket.
Esta sección contiene información sobre la compatibilidad de la mensajería de socket con algún software
de red, protocolos de transmisión y hardware de interfaz típicos.
Socket Messaging es compatible con todas las demás opciones de Internet, incluidos DNS, FTP, servidor web
y Telnet.
NotaLas etiquetas de cliente y servidor se comparten entre Socket Messaging y otros protocolos admitidos, como
FTP. Por ejemplo, se puede establecer una etiqueta para la operación de FTP o para la operación de SM (Socket
Messaging).
Socket Messaging es compatible con todas las configuraciones de hardware de red que utilizan el
protocolo de red TCP/IP. Algunas de estas configuraciones de hardware de red incluyen Ethernet,
conexiones seriales PPP y conexiones de módem PPP.
11–2
MARRC75KR07091E Rev H 11. MENSAJERÍA DE TOMA
Para utilizar Socket Messaging, debe configurar los siguientes parámetros de hardware y
software de red:
• en el servidor,
• en el cliente,
— La dirección IP o el nombre de su servidor
UsarProcedimiento 11-1para configurar una etiqueta de servidor de mensajería de socket. UsarProcedimiento 11-2para configurar una etiqueta de cliente de
mensajería de socket.
NotaEl puerto del servidor en el que escucha el servidor debe coincidir con el puerto en el que el cliente intenta conectarse.
Debe configurar las etiquetas de servidor que desea utilizar para la mensajería de socket. UsarProcedimiento 11-1para configurar
sus etiquetas de servidor.
NotaSi las etiquetas de servidor que desea usar están siendo utilizadas por un protocolo de red que no sea TCP/IP, debe anular
la definición de las etiquetas antes de que puedan usarse para la mensajería de socket. Después de asegurarse de que la
etiqueta que desea usar no sea crítica para otro componente de su red, debe anular la definición de la etiqueta.
Condiciones
• La etiqueta que desea configurar no está configurada para ser utilizada por otro dispositivo en su red.
Pasos
una.En el colgante de enseñanza, mantenga presionadas las teclas SHIFT y RESET. O,en el panel del operador,
mantenga presionado REINICIAR.
b. Mientras sigue presionando SHIFT y RESET en la consola portátil (o RESET en el panel del operador),
encienda el disyuntor de desconexión de alimentación.
11-3
11. MENSAJERÍA DE TOMA MARRC75KR07091E Rev H
3.Seleccione CONFIGURACIÓN.
7.Elija Servidores.
8.Mueva el cursor a la etiqueta que desea configurar para Socket Messaging y presione F3,
DETALLE. Verá una pantalla similar a la siguiente.
CONFIGURACIÓN Etiquetas
Etiqueta S3:
Comentario: ****************
Protocolo Nombre: ********
Actual Estado: INDEFINIDO
Puesta en marcha Estado:
Servidor IP/Nombre de host: *****************
Remoto Ruta/Compartir: *****************
Puerto: *****
Inactividad Se acabó el tiempo: 15 minutos
Nombre de usuario: anónimo
Clave **********
10Seleccione SM.
14Seleccione DEFINIR.
dieciséis.Seleccione COMENZAR.
b. Seleccione SIGUIENTE.
d. Seleccione Variables.
11–4
MARRC75KR07091E Rev H 11. MENSAJERÍA DE TOMA
H. Mueva el cursor a $SERVER_PORT. Escriba el nombre del puerto TCP/IP que desea utilizar para la
mensajería de socket. La etiqueta del servidor ahora está lista para usar desde un programa KAREL.
11–5
11. MENSAJERÍA DE TOMA MARRC75KR07091E Rev H
Debe configurar las etiquetas de cliente que desea utilizar para la mensajería de socket. UsarProcedimiento 11-2para configurar sus
etiquetas de servidor. También puedes usarProcedimiento 11-2para desdefinir etiquetas.
NotaSi las etiquetas de cliente que desea utilizar están siendo utilizadas por un protocolo de red que no sea TCP/IP, debe anular la
definición de las etiquetas antes de que puedan utilizarse para la mensajería de socket.
Condiciones
• La etiqueta que desea configurar no está configurada para ser utilizada por otro dispositivo en su red.
Pasos
una.En el colgante de enseñanza, mantenga presionadas las teclas SHIFT y RESET. O,en el panel del operador,
mantenga presionado REINICIAR.
b. Mientras sigue presionando SHIFT y RESET en la consola portátil (o RESET en el panel del operador),
encienda el disyuntor de desconexión de alimentación.
3.Seleccione CONFIGURACIÓN.
7.Elija Clientes.
8.Mueva el cursor a la etiqueta que desea configurar para Socket Messaging y presione F3,
DETALLE. Verá una pantalla similar a la siguiente.
CONFIGURACIÓN Etiquetas
Etiqueta C3:
Comentario: ****************
Protocolo Nombre: ********
Actual Estado: INDEFINIDO
Puesta en marcha Estado:
Servidor IP/Nombre de host: ***************
Remoto Ruta/Compartir: ****************
Puerto: *****
Inactividad Se acabó el tiempo: 15 minutos
11–6
MARRC75 KR07091E Rev H 11. MENSAJERÍA DE TOMA
Nombre de usuario: anónimo
Clave **********
10Seleccione SM.
11Mueva el cursor al elemento Estado de inicio, presione F4, [CHOICE] y elija DEFINE.
12Mueva el cursor al elemento Servidor IP/Nombre de host y presione ENTER.
13Escriba el nombre de host o la dirección IP del servidor de host remoto que desea usar para la mensajería de
socket.
NotaSi no está utilizando DNS, debe agregar el host remoto y su dirección IP en la tabla de entrada de
host.
b. Seleccione SIGUIENTE.
d. Seleccione Variables.
11–7
11. MENSAJERÍA DE TOMA MARRC75KR07091E Rev H
H. Mueva el cursor a $SERVER_PORT. Escriba el nombre del puerto del servidor TCP/IP que desea utilizar para
la mensajería de socket. La etiqueta del cliente ahora está lista para usar desde un programa KAREL.
La mensajería de socket es un componente integrado de KAREL. Cuando utiliza funciones y utilidades de mensajería de
socket desde un programa KAREL, la sintaxis es similar a otras operaciones de lectura y escritura de archivos, excepto
que necesita establecer una conexión de red cuando usa funciones y utilidades de mensajería de socket.
Las siguientes funciones y utilidades de mensajería de socket KAREL permiten que el servidor establezca una
conexión con un host remoto en su red. Hay varios ejemplos de programas KAREL en esta sección que brindan
ejemplos de cómo estas funciones y utilidades se pueden usar con las funciones y utilidades de lectura y escritura de
archivos KAREL para escribir un cliente KAREL completo de Socket Messaging o un programa o aplicación de servidor.
La instrucción flbt de entorno es necesaria para utilizar cualquiera de los componentes enumerados
(%ENVIRONMENT flbt).
Se debe llamar a MSG_CONN antes de que se pueda usar cualquier etiqueta para la mensajería de socket.
11–8
MARRC75KR07091E Rev H 11. MENSAJERÍA DE TOMA
El primer parámetro de este comando contiene el nombre de la etiqueta ("S1:" por ejemplo) y el segundo parámetro es un
número entero que contendrá el estado de la operación. Si está utilizando este comando para conectarse a una etiqueta de
servidor, este comando devolverá un valor de estado solo después de que un dispositivo cliente remoto haya establecido una
conexión con esta etiqueta de servidor.
Si está utilizando este comando para conectarse a una etiqueta de cliente, este comando devolverá un valor de
estado solo si el servidor remoto está intentando aceptar la conexión. Si la conexión fue exitosa, el comando
devolverá un valor que indica que se realizó una conexión exitosa. Si la conexión no tuvo éxito, el comando
devolverá un valor que indica que se ha producido un error de conexión.
Durante una sesión de mensajería de socket, debe usar MSG_DISCO para cerrar la conexión de socket con una etiqueta de
cliente o servidor antes de que se puedan realizar intentos posteriores de conexión a la misma etiqueta de cliente o servidor
usando MSG_CONN.
MSG_DISCO se utiliza para cerrar conexiones de mensajería de socket. Si se pierde una conexión, quizás porque
ocurrió un error de LECTURA o ESCRITURA cuando el servidor remoto finalizó una conexión de mensajería de
socket, deberá usar MSG_DISCO para cerrar la conexión con el servidor remoto. En este caso, se debe usar
MSG_DISCO para cerrar la conexión en el lado del cliente antes de que se pueda usar MSG_CONN para
establecer otra conexión con el servidor remoto.
El primer parámetro de este comando contiene el nombre de la etiqueta (por ejemplo, "S1:") y el segundo parámetro es
un valor entero que indica el estado de cierre de la conexión en el lado del cliente.
MSG_PING es un comando de utilidad que se usa para verificar las conexiones de red con un host remoto, para
que pueda determinar si está actualmente conectado a la red. El comando MSG_PING envía paquetes de ping al
host remoto y espera una respuesta. (Los paquetes de ping son fragmentos de datos que se transfieren entre
hosts en una red). Si no hay respuesta del host remoto, esto generalmente significa que no podrá usar otros
protocolos de red como FTP, TELNET o Socket Messaging para conectarse a ese host. Si ha intentado sin éxito
usar Socket Messaging para conectarse a un host remoto, la utilidad MSG-PING es un buen lugar para comenzar
a tratar de diagnosticar el problema.
El primer parámetro de este comando contiene el nombre del host remoto para hacer ping. Si no está
utilizando DNS en su red, el nombre de host y la dirección IP del host remoto deberán existir en la tabla de
entrada de host.
11–9
11. MENSAJERÍA DE TOMA MARRC75KR07091E Rev H
Una vez que haya establecido con éxito una conexión de mensajería de socket, puede usar los comandos KAREL para
intercambiar datos entre dispositivos conectados. KAREL tiene varios comandos que se pueden utilizar para
operaciones de intercambio de datos:
• ABRIR DOCUMENTO
• ESCRIBE
• LEER
• BYTES_AHEAD
NotaSaltos es un término que indica la cantidad de enrutadores entre el host de origen y el host de destino. En
general, cuanto menor es la cantidad de saltos que hacen los datos de un enrutador a otro, más rápido se
transmiten los datos entre los hosts de origen y de destino. La transferencia de datos es más rápida entre hosts en
la misma red.
Use las siguientes pautas cuando implemente una solución para cualquier aplicación que use mensajería de
socket.
• No debe transferir datos pequeños por separado, sino recopilar los datos y transferirlos como un paquete más grande. Esto se
aplica tanto a la lectura como a la escritura.
• Debe comprender que otras aplicaciones en el robot también usan TCP/IP y el rendimiento puede verse
afectado.
11–10
MARRC75KR07091E Rev H 11. MENSAJERÍA DE TOMA
11.6.1
Esta sección contiene ejemplos de programación para un cliente de mensajería de socket KAREL y un servidor de
mensajería de socket KAREL. También hay un ejemplo de ANSI C basado en UNIX para una aplicación de cliente de
bucle invertido, que supone que tiene acceso a un compilador ANSI C compatible con UNIX y conocimientos básicos de
programación en el lenguaje ANSI C.
NotaLos ejemplos de KAREL asumen que las etiquetas apropiadas (C2 para el cliente y S3 para el servidor) se han configurado
para la mensajería de socket usandoProcedimiento 11-1yProcedimiento 11-2.
Una aplicación de cliente de KARELproporciona código para una aplicación de cliente KAREL básica que se puede usar para
establecer una conexión de mensajería de socket a un host remoto, que podría ser la aplicación de mensajería de socket del
servidor KAREL que se muestra enAplicación de servidor KAREL.
-- Este material es propiedad conjunta de FANUC America Corporation y FANUC LTD Japan, y
-- debe devolverse a FANUC América
-- Corporation o FANUC LTD Japón inmediatamente después de su solicitud. Este material
-- y la información ilustrada o contenida en este documento no puede reproducirse, copiarse, usarse o
-- transmitirse en su totalidad o en parte de ninguna manera sin el consentimiento previo por escrito de
-- FANUC America Corporation y FANUC.
--
-- Todos los derechos Reservado
-- Derechos de autor (C) 2000
-- FANUC America Corporación
-- FANUC LTD Japón
--
-- Karel es una marca registrada de FANUC
-- America Corporation
-- +
-- Programa: loopcl.kl - Programa para mensajería TCP
--
-- Descripción:
--
-- Este programa sirve como ejemplo de cómo usar la mensajería TCP y escribir un
-- programa cliente Karel.
--
-- Autores: FANUC America Corporation
-- 3900 West Hamlin
11–11
11. MENSAJERÍA DE TOMA MARRC75KR07091E Rev H
%AMBIENTE memorándum
%AMBIENTE kclop
%AMBIENTE bynam
%AMBIENTE fdev
%AMBIENTE flbt
%INCLUIR klevccdf
%INCLUIR llaves de paso
%INCLUIR klevkmsk
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - VAR
archivo_var : EXPEDIENTE
tmp_int : ENTERO
tmp_str : CADENA[128]
estado : ENTERO
entrada : ENTERO
bucle1 BOOLEANO :
------------------------------------------------------------
EMPEZAR
SET_FILE_ATR(archivo_var, ATR_IA)
SET_VAR(entrada, '*SISTEMA*','$HOSTC_CFG[2].$SERVER_PORT',59002,estado)
- - Conecte la etiqueta
WRITE('Conectando...',cr)
MSG_CONNECT('C2:',status)
ESCRIBIR (' Estado de conexión = ', estado, cr) loop1
= VERDADERO
SI estado = 0 ENTONCES
MIENTRAS loop1 = VERDADERO HACER
ESCRIBIR('Apertura Archivo..',cr)
ABRIR DOCUMENTO archivo_var('rw','C2:')
estado = IO_STATUS(archivo_var)
SI estado = 0 ENTONCES
PARA tmp_int = 1 A 100 HACER
11–12
MARRC75KR07091E Rev H 11. MENSAJERÍA DE TOMA
ENDFOR
ESCRIBIR('Archivo cerrado',cr)
CERRAR ARCHIVO file_var
MÁS
ESCRIBIR('Error al abrir archivo',cr) loop1
= FALSO
TERMINARA SI
ENTREVISTA
WRITE('Desconectando...',cr)
MSG_DISCO('C2:',estado)
WRITE('Listo.',cr)
TERMINARA SI
FINAL loopcl
Aplicación de servidor KARELproporcionar código para una aplicación de servidor KAREL básica que se puede utilizar para alojar
una conexión de mensajería de socket realizada por un cliente remoto, que podría ser la aplicación de mensajería de socket de
cliente KAREL que se muestra enUna aplicación de cliente de KAREL.
-- Este material es propiedad conjunta de FANUC America Corporation y FANUC LTD Japan, y debe
-- devolverse a FANUC America Corporation o FANUC LTD Japan inmediatamente después de solicitarlo.
-- Este material y la información ilustrada o contenida en el mismo no pueden reproducirse, copiarse,
-- usarse o transmitirse en su totalidad o en parte de ninguna manera sin el consentimiento previo por
-- escrito de FANUC America Corporation y FANUC.
--
--
-- Todos los derechos Reservado
-- Derechos de autor (C) 2000
11–13
11. MENSAJERÍA DE TOMA MARRC75KR07091E Rev H
%AMBIENTE memorándum
%AMBIENTE kclop
%AMBIENTE bynam
%AMBIENTE fdev
%AMBIENTE flbt
%INCLUIR klevccdf
%INCLUIR llaves de paso
%INCLUIR klevkmsk
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - VAR
archivo_var : EXPEDIENTE
tmp_int : ENTERO
tmp_int1 : ENTERO
tmp_str : CADENA[128]
tmp_str1 : CADENA[128]
estado : ENTERO
entrada : ENTERO
-------------------------------------------------------------------------------------
11–14
MARRC75KR07091E Rev H 11. MENSAJERÍA DE TOMA
EMPEZAR
SET_FILE_ATR(archivo_var, ATR_IA)
- - configure el puerto del servidor antes de hacer una conexión
SET_VAR(entrada, '*SISTEMA*','$HOSTS_CFG[3].$SERVER_PORT',59002,status)
WRITE('Conectando...',cr)
MSG_CONNECT('S3:',estado)
ESCRIBIR(' Estado de conexión = ',estado,cr) SI
estado = 0 ENTONCES
- - Abrir S3:
ESCRIBIR ('Apertura',cr)
PARA tmp_int1 = 1 A 20 HACER
ABRIR ARCHIVO file_var ('rw','S3:') estado
= IO_STATUS(archivo_var)
ESCRIBE (estado,cr)
SI estado = 0 ENTONCES
- - escribe un entero FOR tmp_int =
1 TO 1000 DO
ESCRIBIR('Lectura',cr)
- - Leer 10 bytes
BYTES_AHEAD(file_var, entrada, estado)
ESCRIBIR(entrada, estado, cro)
LEER file_var (tmp_cadena::10)
estado = IO_STATUS(archivo_var)
ESCRIBE (estado, cr)
- - Escribir 10 bytes
ESCRIBIR (tmp_str::10, cr)
estado = IO_STATUS(archivo_var)
ESCRIBE (estado, cr)
ENDFOR
CERRAR EL ARCHIVO archivo_var
TERMINARA SI
ENDFOR
WRITE('Desconectando..',cr)
MSG_DISCO('S3:',estado)
WRITE('Terminado.',cr)
TERMINARA SI
FIN tcpserv3
Ejemplo de cliente de loopback basado en ANSI C UNIXproporciona un ejemplo de un cliente de bucle invertido basado en
UNIX que se puede utilizar para establecer una conexión con un host remoto.
11–15
11. MENSAJERÍA DE TOMA MARRC75KR07091E Rev H
calcetín int;
estructura sockaddr_in serv_addr;
pnombre = argv[0];
printf("Cliente: Conectando...\n");
11-16
MARRC75KR07091E Rev H 11. MENSAJERÍA DE TOMA
int n, yo;
char línea de envío[MAXLINE], recvline[MAXLINE + 1];
mientras(1)
{
memset (línea de envío, 2, 128); if(escrito(sockfd,
sendline, 126)!=126){
printf("strcli:error escrito en calcetín\n");
}
i = readline(sockfd, recvline, 126);
}
}
int readline(int fd, char *ptr, int maxlen) {
En t n, rc;
C;
carbonizarse
11-17
11. MENSAJERÍA DE TOMA MARRC75KR07091E Rev H
ptr += nescrito;
}
retorno(nbytes - nizquierda); }
11–18
Capítulo 12
Contenido
12-1
12. TRANSFERENCIA DE DATOS ENTRE ROBOTS A TRAVÉS DE ETHERNET (DTBR) MARRC75KR07091E Rev
H
Esta sección explica la función de transferencia de datos opcional (J740) entre robots disponible en V7.70 o
posterior. Esta función le permite transferir datos entre robots a través de Ethernet. Llamando a un programa
KAREL, puede transferir registros y registros de posición entre controladores de robot.
convocatoria de programa
R[ ]
R[ ]
convocatoria de programa
ethernet
Controlador A Controlador B
EnFigura 12–1, el controlador A ejecuta el programa para obtener el registro del controlador B. Además, el controlador
A llama al programa para transferir el registro al controlador B. EnFigura 12–1, solo el controlador A inicia la
transferencia de datos. El controlador B solo responde a la solicitud del controlador A. En este caso, solo el controlador
A necesita esta opción.
12.2 TERMINOLOGÍA
Para simplificar y aclarar la explicación de esta función usamos los siguientes términos.
Cliente
Un cliente es un controlador de robot que inicia la comunicación mediante esta función. EnFigura 12–1, el controlador
A es el cliente. El cliente ejecuta el programa para solicitar varios servicios de otro controlador.
Servidor
Un servidor es un controlador de robot que recibe solicitudes de un cliente y responde a cada solicitud. En Figura
12–1el controlador B es el servidor.
12–2
MARRC75KR07091E Rev H 12. DATOS
TRANSFERENCIA ENTRE ROBOTS POR ETHERNET (DTBR)
12.3 CONFIGURACIÓN
Conecte los controladores de robot por Ethernet. Establezca los parámetros de TCP/IP para que los controladores puedan comunicarse a través de
1.Pulse MENÚ.
2.Seleccione CONFIGURACIÓN.
4.Ingrese el nombre del host (nombre del robot) y la dirección IP y las de los controladores con los que se
comunicará. VerFigura 12–2.
12–3
12. TRANSFERENCIA DE DATOS ENTRE ROBOTS A TRAVÉS DE ETHERNET (DTBR) MARRC75KR07091E Rev
H
ethernet
Anfitrión Anfitrión
“RC1” “RC2”
Puede simular la transferencia de datos en una celda de trabajo de ROBOGUIDE. Tenga en cuenta que la dirección IP de
cada host debe ser 127.0.0.x (donde x ≥ 2).Figura 12–3es un ejemplo de configuración de TCIP/IP para ROBOGUIDE. Por
ejemplo, si hay dos controladores de robot en su celda de trabajo, el nombre de host del primero es RC1 y el del
segundo es RC2.
12–4
MARRC75KR07091E Rev H 12. DATOS
TRANSFERENCIA ENTRE ROBOTS POR ETHERNET (DTBR)
Debe reiniciar los controladores de robot después de la configuración de TCP/IP. Si ejecuta el siguiente programa
en RC2, el valor y el comentario de R[1] de RC1 se transfieren a R[5] de RC2.
1: LLAME A RGETNREG('RC1',1,5,0) ;
RGETNREG es un programa KAREL que proporciona esta función. Referirse aSección 12.5.1para más
información.
Esta función incluye programas para transferir registros y registros de posición. VerTabla 12–1.
12–5
12. TRANSFERENCIA DE DATOS ENTRE ROBOTS A TRAVÉS DE ETHERNET (DTBR) MARRC75KR07091E Rev
H
RGETNREG Para obtener registro numérico RGETNREG('host/dirección IP', índice de origen, índice de destino,
opción)
RSETNREG Para obtener registro numérico RSETNREG('host/dirección IP', índice de destino, índice de origen, opción)
RGETPREG Para obtener registro numérico RGETPREG('host/dirección IP', índice de origen, número de grupo de origen,
índice de destino, grupo de destino, opción)
RSETPREG Para obtener registro numérico RSETPREG('host/dirección IP', índice de destino, grupo de destino, índice de
origen, número de grupo de origen, opción)
NotaSi los argumentos no son correctos, se mostrará un error. Los siguientes son ejemplos de
argumentos incorrectos:
• El contenido del argumento es incorrecto. Llame al programa con los argumentos adecuados. Cuando
reinicie la ejecución del programa, mueva el cursor a 1 línea antes de CALL y reinicie desde la línea.
Visión general:
El controlador del cliente obtiene el registro del servidor y lo establece en el registro del cliente.
Sintaxis:
Parámetros de entrada/salida
El segundo parámetro: [IN] Índice del registro fuente. Este entero es el índice del registro del servidor.
El tercer parámetro: [IN] Índice del registro de destino. Este entero es el índice del registro del
cliente.
El cuarto parámetro: [IN] Este número entero especifica la función de este programa
12–6
MARRC75KR07091E Rev H 12. DATOS
TRANSFERENCIA ENTRE ROBOTS POR ETHERNET (DTBR)
Valor Descripción
1 Se recibe valor.
2 Se recibe comentario.
Detalle:
Si R [src_idx] no está en el servidor, se publica "DTBR-014 Variable incorrecta o índice de registro (nombre de host,
índice)".
Ejemplo:
La ejecución del siguiente programa obtiene el valor y comentario de R[10] del Host “SERVIDOR”.
LLAME A RGETNREG ('SERVIDOR', 10, 20, 0)
Visión general:
El controlador del cliente establece el registro del servidor desde el registro del cliente.
Sintaxis:
Parámetros de entrada/salida
El segundo parámetro: [IN] Índice del registro de destino. Este entero es el índice del registro del
servidor.
El 3er parámetro: [IN] Índice del registro fuente. Este entero es el índice del registro del
cliente.
El cuarto parámetro: [IN] Este número entero especifica la función de este programa
12–7
12. TRANSFERENCIA DE DATOS ENTRE ROBOTS A TRAVÉS DE ETHERNET (DTBR) MARRC75KR07091E Rev
H
Valor Descripción
1 Se establece el valor.
Detalle:
Si R [dest_idx] no está en el servidor, se publica "DTBR-014 Variable incorrecta o índice de registro (nombre de host,
índice)".
Ejemplo:
La ejecución del siguiente programa establece el valor y el comentario de R [20] del cliente en R [10] del
host "SERVIDOR".
LLAME A RSETNREG ('SERVIDOR', 10, 20, 0)
Visión general:
El controlador del cliente obtiene el registro de posición del servidor y lo establece en el registro de posición del cliente.
Solo se reciben los datos de posición del grupo especificado.
Sintaxis:
Parámetros de entrada/salida
El segundo parámetro: [IN] Índice del registro de posición de origen. Este entero es el índice del registro del
servidor.
El tercer parámetro: [IN] Número de grupo del registro de posición de origen. Este entero es el número de grupo del
servidor.
El cuarto parámetro: [IN] Índice del registro de destino. Este entero es el índice del registro del
cliente.
12–8
MARRC75KR07091E Rev H 12. DATOS
TRANSFERENCIA ENTRE ROBOTS POR ETHERNET (DTBR)
El quinto parámetro: [IN] Número de grupo del registro de posición de destino. Este entero es el número de
grupo del cliente.
El sexto parámetro: [IN] Este número entero especifica la función de este programa
Valor Descripción
1 Se recibe valor.
Detalles
Si el contenido del segundo al quinto parámetro es incorrecto, se publican los siguientes errores.
Error Causa
DTBR-014 "Variable incorrecta o índice de PR [(el segundo parámetro) src_idx] no existe en el servidor.
registro (nombre de host, índice)
DTBR-15 "Número de grupo ilegal (nombre de host, El grupo “(el tercer parámetro) src_grp” no existe en el servidor.
índice)
VARS-024 "Variable incorrecta o índice de registro" PR [(el cuarto parámetro) dest_idx] no existe en el cliente.
ROUT-026 "Número de grupo ilegal" El grupo "(el quinto parámetro) dest_grp" no existe en el cliente.
NotaLos datos de posición de los grupos especificados de cliente y servidor pueden ser diferentes en sus componentes. Por
ejemplo, los siguientes puntos pueden diferir.
• el numero de ejes
• Configuración de posición cartesiana
Es posible que no pueda usar el registro de posición que se recibe o establece tal cual. Tenga cuidado al usar
los datos transferidos
NotaIncluso si los datos de posición cartesiana se reciben y almacenan en un grupo de clientes que no admite datos
cartesianos (eje independiente, por ejemplo), se establecen datos cartesianos.
Ejemplo:
La ejecución del siguiente programa por parte del cliente transfiere los datos de posición del grupo 2 de PR [10] del
host "SERVIDOR" al grupo 1 del cliente de PR [20]. El comentario no se adquiere.
LLAME A RGETPREG ('SERVIDOR', 10, 2, 20, 1, 1)
12–9
12. TRANSFERENCIA DE DATOS ENTRE ROBOTS A TRAVÉS DE ETHERNET (DTBR) MARRC75KR07091E Rev
H
Visión general:
El controlador del cliente establece el registro de posición del servidor desde el registro de posición del cliente. Solo se establecen
los datos de posición del grupo especificado.
Sintaxis:
Parámetros de entrada/salida
El segundo parámetro: [IN] Índice del registro de posición de destino. Este entero es el índice de PR del servidor.
El tercer parámetro: [IN] Número de grupo de datos de posición del destino PR del servidor. Esto es ENTERO.
El cuarto parámetro: [IN] Índice del registro de posición de origen. Este entero es el índice de PR del cliente.
El quinto parámetro: [IN] Número de grupo de datos de posición de la fuente PR del cliente. esto es ENTERO
El sexto parámetro: [IN] Este número entero especifica la función de este programa
Valor Descripción
Detalle:
Error Causa
DTBR-014 "Índice de registro o variable PR [(el segundo parámetro) dest_idx] no existe en el servidor.
incorrecto (nombre de host, índice)
DTBR-15 "Número de grupo ilegal (nombre Group”(el tercer parámetro) dest_grp” no existe en el servidor.
de host, índice)
12–10
MARRC75KR07091E Rev H 12. DATOS
TRANSFERENCIA ENTRE ROBOTS POR ETHERNET (DTBR)
Error Causa
VARS-024 "Variable incorrecta o índice de PR [(el cuarto parámetro) dest_idx] no existe en el cliente.
registro"
ROUT-026 "Número de grupo ilegal" El grupo “(el quinto parámetro) dest_grp” no existe en el cliente.
NotaLos datos de posición de los grupos especificados de cliente y servidor pueden ser diferentes en sus componentes. Por
ejemplo, los siguientes puntos pueden diferir.
• el numero de ejes
• Configuración de posición cartesiana
Es posible que no pueda usar los registros de posición que se reciben o configuran tal como están. Tenga cuidado al usar los
datos transferidos.
NotaIncluso si los datos de posición cartesiana se configuran en un grupo de servidores que no admite datos cartesianos (eje
independiente, por ejemplo), se configuran los datos cartesianos.
Ejemplo:
La ejecución del siguiente programa por parte del cliente transfiere los datos de posición y el comentario del grupo 1 de PR
[20] del cliente al grupo 2 de PR [10] del host "SERVIDOR".
LLAME A RSETPREG ('SERVIDOR', 10, 2, 20, 1, 0)
La mayoría de los errores que ocurren en la ejecución del programa estándar de transferencia de datos son de los siguientes dos
casos:
1 Se publica "DTBR-002 RPC Call timed out" porque la comunicación falló o no llegó a tiempo.
12–11
12. TRANSFERENCIA DE DATOS ENTRE ROBOTS A TRAVÉS DE ETHERNET (DTBR) MARRC75KR07091E Rev
H
Compruebe si el controlador (cliente) siempre puede comunicarse de forma fiable con el host especificado
(servidor). Puede realizar "PING" en la pantalla PING de la pantalla de configuración Host Comm. Mejorar el tráfico
de la red. Si el programa de transferencia de datos estándar o el integrado de esta función se usa con mucha
frecuencia, reduzca la frecuencia de uso. Si el programa de transferencia de datos estándar o el integrado de esta
función se ejecutan consecutivamente, debe haber un intervalo. Si ya hay un intervalo, alarguelo.
2 Argumentos estaban equivocados. En este caso, los argumentos deben ser modificados. En la pantalla de edición de
programas, el cursor está en la llamada del programa estándar de transferencia de datos. Sin embargo, la ejecución se detuvo
dentro del programa llamado. Los argumentos ya se entregaron al subprograma (en la figura a continuación, RGETNREG).
Incluso si modifica los argumentos en la pantalla de edición del programa, reanudar desde la misma línea no resuelve el
problema. Es porque el valor de los argumentos ya se entregó al subprograma. Si los argumentos son registro o registro de
cadena, el valor se entregó en la llamada. Incluso si cambia el valor del registro o el registro de cadena después de que ocurrió
el error, el cambio no se refleja para continuar desde la misma línea. Después de modificar los argumentos, mueva el cursor a
1 línea antes de LLAMAR y reanude desde la línea.
12–12
MARRC75KR07091E Rev H 12. DATOS
TRANSFERENCIA ENTRE ROBOTS POR ETHERNET (DTBR)
Una rutina (o función) integrada de KAREL es una función predefinida, que está integrada en el lenguaje
KAREL. Esta función proporciona rutinas integradas para transferir datos entre robots. El programa KAREL
que utiliza el incorporado permite lo siguiente:
- Registro
— Registro de posiciones
— Registro de cadena
— E/S La siguiente tabla enumera las rutinas integradas proporcionadas por esta función.
Referirse aApéndice Apara obtener más información sobre los siguientes elementos integrados.
Incorporado Descripción
RGET_REG se registra
RPREG_RECV Transfiere el registro de posición del servidor al registro de posición del cliente.
12–13
12. TRANSFERENCIA DE DATOS ENTRE ROBOTS A TRAVÉS DE ETHERNET (DTBR) MARRC75KR07091E Rev
H
Incorporado Descripción
RPREG_SEND Transfiere el registro de posición del cliente al registro de posición del servidor.
Cuando la comunicación no se completa a tiempo debido a un problema como problemas de red, esta función
desconecta la conexión e intenta comunicarse nuevamente. Después de reintentar dos veces, esta función interrumpe
la comunicación. El programa estándar de transferencia de datos publica automáticamente "DTBR-002 RPC Call timed
out". El estado de la función integrada de esta función se establecerá en el valor correspondiente. El valor de tiempo de
espera es dos segundos por defecto. El número de reintentos es dos.
Cuando la comunicación falla por completo, esta función desaparece en unos seis segundos. El valor de tiempo de espera se
almacena en $DTBR_CFG.$RPC_TIMEOUT, en segundos. El valor de tiempo de espera mínimo es de un segundo,
independientemente del valor de la variable del sistema. Si el controlador no puede reconocer el nombre de host en absoluto,
se puede interrumpir la comunicación antes de que se agote el tiempo de espera. La detección de un error de comunicación
lleva más tiempo de lo normal si el valor de tiempo de espera es más largo que el predeterminado. Esta función no interrumpe
la comunicación y vuelve a intentarlo incluso si el programa está en pausa o cancelado. Si un tiempo de espera es más largo de
lo habitual, el tiempo que debe esperar antes de iniciar la próxima comunicación se vuelve más largo.
12.9 LIMITACIONES
• Esta función afecta el desempeño de otras funciones que usan Ethernet y viceversa.
12–14
MARRC75KR07091E Rev H 12. DATOS
TRANSFERENCIA ENTRE ROBOTS POR ETHERNET (DTBR)
• La versión del software del sistema del controlador para comunicarse (servidor) debe ser 7DA5 o posterior.
• No puede restringir la transferencia de datos mediante otras funciones, por ejemplo, la función de contraseña.
• El registro de transferencia de posición presta atención al número de ejes o ejes extendidos para que los datos que se
establecerán en el destino no excedan los ejes que tiene el controlador de destino. Sin embargo, no se consideran los
demás elementos de los datos de posición, tales como:
— Tipo de eje (rotativo o lineal) H) La pausa o la cancelación forzada del programa no detiene la comunicación una
vez que se inicia. La siguiente solicitud debe emitirse después de completar la anterior.
Precaución
A) Esta función no se puede utilizar en lugar de E/S cableadas, red de campo. Esta función
ofrece la capacidad de leer/escribir el valor de E/S del control remoto. Sin embargo, las E/S
cableadas y las E/S de red de campo siempre son más rápidas.
Cuando transfiera un registro o un registro de posición, tenga en cuenta que solo un controlador cambia un registro o un registro de
posición. Esto también es cierto para los registros de cadena y las E/S si los maneja utilizando funciones integradas.
Si tanto el servidor como el cliente escriben en los mismos datos, sobrescriben el valor escrito por el otro controlador. Esto podría
parecer como si la transferencia de datos no estuviera funcionando correctamente. Especialmente, si el momento de la escritura por
parte del cliente y el servidor es muy cercano, es posible que el anterior no sea reconocible.
Cuando el cliente escribe un registro, un registro de posición o un registro de cadena del servidor, primero se adquiere
el valor y el comentario. Luego, el cliente sobrescribe la parte necesaria de los datos adquiridos y solicita al servidor que
escriba el valor actualizado como un todo. Si el servidor escribe un poco antes que el cliente, el valor o el comentario
pueden volver a cambiarse a los que recibió el cliente.
12–15
12. TRANSFERENCIA DE DATOS ENTRE ROBOTS A TRAVÉS DE ETHERNET (DTBR) MARRC75KR07091E Rev
H
Compruebe si el controlador (cliente) siempre puede comunicarse de forma estable con el host especificado
(servidor). Puede realizar "PING" en la pantalla PING de la pantalla de configuración "Host Comm". Si el programa de
transferencia de datos estándar o el integrado de esta función se usa con mucha frecuencia, reduzca la frecuencia de
uso. Si el programa de transferencia de datos estándar o el integrado de esta función se ejecutan consecutivamente,
debe haber un intervalo. Si ya hay un intervalo, alarguelo.
Si modificó los argumentos del programa de transferencia de datos estándar, mueva el cursor a una línea
antes de la LLAMADA y reanude el programa desde la línea.
No se garantiza la velocidad de transferencia de datos mediante esta función. El rendimiento depende del tráfico de la red, la carga
de la CPU del cliente y el servidor. Mejore el tráfico de la red. Mejore el tiempo de transferencia de datos. Por ejemplo, la
transferencia de datos que no es necesaria durante el movimiento de los robots se puede realizar cuando el robot no se está
moviendo.
Si este síntoma ocurre cuando se ejecuta el programa de transferencia de datos estándar o integrado de esta
función, confirme si esta función está ordenada o no. Esta función es opcional.
Pausa o cancelación del programa durante la transferencia de datos no detiene la transferencia una vez iniciada. Intenta transferir
datos hasta que falla el último reintento. La siguiente solicitud de transferencia de datos no se procesa hasta que se completa (falla) la
transferencia de datos anterior. Consulte el siguiente procedimiento como ejemplo.
2. Programa estándar de transferencia de datos, se llama a RGETNREG pero el usuario canceló el programa inmediatamente
mediante el menú FCTN.
En este caso, el siguiente RGETNREG se agota después de que haya transcurrido aproximadamente dos veces más de lo
habitual. Por configuración predeterminada, es de aproximadamente 12 segundos. Una vez iniciada la comunicación, sería
mejor esperar a que se muestre el error que forzar una cancelación.
La pausa del programa no detiene la transferencia de datos una vez iniciada. Si se produce un tiempo de espera mientras el programa está en pausa,
12–16
MARRC75KR07091E Rev H 12. DATOS
TRANSFERENCIA ENTRE ROBOTS POR ETHERNET (DTBR)
Si el tipo de eje (rotativo o lineal) es diferente entre los ejes correspondientes del cliente y del servidor,
el valor transferido no se interpreta de la misma manera. No se trata como el mismo valor.
"INTP-311 (nombre del programa, número de línea) Se utilizan datos no inicializados" se publica cuando se
utiliza el registro de posición transferido.
2 El número de ejes totales o ejes extendidos puede ser diferente. Si los datos de origen no tienen suficientes ejes para
configurar todos los datos de eje en los datos de destino, los ejes que no se pueden configurar debido a la falta de datos no se
inicializan. En este caso, los datos adecuados deben establecerse antes de su uso. Suponga que el grupo 1 del host RC1 tiene un
eje extendido y el grupo 1 de RC2 no tiene ejes extendidos. Si la posición cartesiana del grupo 1 de RC2 se establece en el grupo
1 de RC1, E1 se establece en un valor no inicializado. RC1 tiene que establecer el valor adecuado por sí mismo. Si 0 es
apropiado, se puede usar PR[1,7]=0.
Los datos de posición del registro de posición enviado/recibido están parcialmente sin inicializar.
Por favor, consulte el artículo anterior. La pantalla de registro de posición no muestra “R” a menos que los datos de todos los grupos
no estén inicializados. Programa de transferencia estándar y transferencias integradas solo para grupos específicos.
Compruebe si el host especificado es el propio cliente. El cliente no puede operar los datos del propio cliente mediante
esta función.
Compruebe si el nombre de host o la dirección IP especificados son correctos. Si no apagó y encendió después de cambiar la
dirección IP y el nombre de host, apague y encienda. Verifique si el controlador (cliente) siempre puede comunicarse de
manera estable con el host especificado (servidor). Puede realizar "PING" en la pantalla PING de la pantalla de configuración
"Host Comm".
12–17
Capítulo 13
Contenido
13-1
13. VARIABLES DEL SISTEMA MARRC75KR07091E Rev H
Las variables del sistema son variables que se declaran como parte del software del sistema KAREL. Tienen nombres de
variables definidos permanentemente que comienzan con un signo de dólar ($). Muchas variables del sistema son variables
de estructura,en cuyo caso cada campo también comienza con un signo de dólar ($). Muchos son específicos del robot, lo
que significa que sus valores dependen del tipo de robot que está conectado al sistema.
• Tienen tipos de datos predefinidos que pueden ser cualquiera de los tipos de datos válidos de KAREL.
• Los valores iniciales de las variables del sistema son valores predeterminados internos o variables almacenadas en el archivo de
variables del sistema predeterminado, SYSDEF.SV.
• Al cargar y guardar variables del sistema desde la pantalla ARCHIVO o KCL, el nombre del archivo de variables del sistema se establece
de forma predeterminada en SYSVARS.SV.
• Los derechos de acceso rigen si puede o no examinar o cambiar las variables del sistema.
• Las variables del sistema modificadas se pueden guardar para reflejar el estado actual del sistema.
Ver también:Capitulo 2ELEMENTOS DEL LENGUAJEpara más información sobre los tipos de datos disponibles en
KAREL
• Si una variable del sistema permite que un programa KAREL lea su valor, puede usar ese valor en el mismo
contexto que usa valores de variables de programa o valores constantes en programas KAREL.
Por ejemplo, estas variables del sistema se pueden usar en el lado derecho de una declaración de asignación o como
condición de prueba en una declaración de control.
• Si una variable del sistema permite que un programa KAREL escriba su valor, puede usar esa variable del sistema en
cualquier contexto en el que asigne valores a las variables en los programas KAREL.
Los símbolos para los derechos de acceso al programa se enumeran enTabla 13–1. Estos símbolos se dan para cada una
de las variables del sistema en elManual de referencia del software SYSTEM de FANUC America Corporation.
Acceso Sentido
NO Sin acceso
RO Solo lectura
RW Lee y escribe
FP Protección de campo; si es una variable de estructura, se aplicará uno de los tres primeros derechos de acceso.
13–2
Traducido del inglés al español - www.onlinedoctranslator.com
13.2 ALMACENAMIENTO
A las variables del sistema se les asigna un valor inicial al momento del encendido basado en
13–3
capitulo 14
LENGUAJE DE COMANDOS KAREL (KCL)
Contenido
14-1
14. LENGUAJE DE COMANDOS KAREL (KCL) MARRC75KR07091E Rev H
El entorno del lenguaje de comandos KAREL (KCL) contiene un grupo de comandos que se pueden utilizar para dirigir el
sistema KAREL. Los comandos de KCL le permiten desarrollar y ejecutar programas, trabajar con archivos, obtener
información sobre el sistema y realizar muchas otras operaciones diarias.
Además de ingresar comandos directamente en el indicador de KCL, los comandos de KCL se pueden ejecutar desde
archivos de comandos.
Una entrada de comando consiste en la palabra clave del comando y cualquier argumento o parámetro asociado con
ese comando. Algunos comandos también requieren identificadores que especifiquen el objeto del comando.
• Las palabras clave del comando KCL son palabras de acción como CARGAR, EDITAR y EJECUTAR. Los argumentos de
comando, o parámetros, ayudan a definir sobre qué objeto se supone que debe actuar la palabra clave.
• Muchos comandos de KCL tienen argumentos predeterminados asociados con ellos. Para estos comandos, debe
ingresar solo la palabra clave y el sistema proporcionará los argumentos predeterminados.
• KCL admite el uso de un asterisco (*) como comodín, lo que le permite especificar un grupo de objetos
como argumento de comando para los siguientes comandos de KCL:
- COPIAR
- BORRAR ARCHIVO
— DIRECTORIO
• Los identificadores KCL siguen las mismas reglas que los identificadores en el lenguaje de programación KAREL.
• Todos los tipos de datos compatibles con el lenguaje de programación KAREL son compatibles con KCL. Por lo
tanto, puede crear y establecer variables en KCL.
Establecer un nombre de programa como predeterminado para argumentos de nombre de programa y argumentos de nombre de
archivo le permite emitir un comando KCL sin escribir el nombre.
El programa predeterminado de KCL se puede configurar realizando una de las siguientes acciones:
14–2
MARRC75KR07091E Rev H 14. LENGUAJE DE COMANDOS KAREL (KCL)
El comando KCL> CREAR VARIABLE le permite declarar variables. El comando KCL> SET VARIABLE le
permite asignar valores a las variables declaradas. Los valores asignados pueden ser tipos de datos
INTEGER, REAL, BOOLEAN y STRING. Los valores se pueden asignar a elementos ARRAY particulares o
nodos PATH especificados. Las variables VECTOR se asignan como tres valores REALES y las variables
POSICIÓN se asignan como seis valores REALES.
Ver también:Los comandos CREATE VARIABLE y SET VARIABLE KCL enApéndice C, “Descripción
alfabética del comando KCL”
Los comandos KCL se pueden utilizar para ejecutar programas. En algunos casos, estos programas pueden causar
movimiento, como cuando se ejecuta un programa de consola portátil o cuando se ejecuta un programa KAREL que llama a
un programa de consola portátil. El dispositivo desde el que se emite el comando KCL debe tener control de movimiento
para hacer esto. Consulte la descripción de $RMT_MASTER en elManual de referencia del programapara obtener más
información sobre la asignación de control de movimiento a un dispositivo remoto.
• Puede causar inmediatamente el movimiento del robot y/o del eje auxiliar, o tiene el potencial de causar movimiento
• SEGUIR
• CORRER
Advertencia
Asegúrese de que el área de trabajo del robot esté libre de personal antes de
emitir un comando de control de programa o iniciar un robot que ejecute
automáticamente un programa al encenderlo. De lo contrario, podría lesionar al
personal o dañar el equipo.
14–3
14. LENGUAJE DE COMANDOS KAREL (KCL) MARRC75KR07091E Rev H
Al ingresar la primera palabra clave de un comando KCL que requiere más de una palabra clave y al presionar
ENTER, se mostrará una lista de todas las palabras clave adicionales de KCL.
NotaLa tecla de flecha hacia arriba se puede usar para recuperar cualquiera de los últimos diez comandos ingresados.
14.3.1 abreviaturas
Cualquier comando de KCL se puede abreviar siempre que las abreviaturas sean únicas en KCL. Por ejemplo, TRANes
exclusivo de TRANSLATE ydisfunción eréctil,Para editar.
Si ingresa un comando KCL de forma incorrecta, KCL muestra el mensaje de error correspondiente y devuelve el
indicador KCL>, lo que le permite volver a ingresar el comando. Una flecha hacia arriba (^) indica el carácter
infractor o el comienzo de la palabra infractora.
14.3.3 Subdirectorios
Los subdirectorios están disponibles en el dispositivo de tarjeta de memoria. Los subdirectorios permiten formatear tanto las
tarjetas de memoria como las tarjetas de disco Flash en cualquier sistema de archivos MS-DOS. Puede ejecutar todos los
comandos relacionados con el archivo KCL en los subdirectorios. Puede anidar subdirectorios hasta muchos niveles. Sin
embargo, FANUC America Corporation no recomienda anidar subdirectorios de más de ocho niveles.
Los procedimientos de comando son una secuencia de comandos KCL que se almacenan en un archivo de comando (tipo de
archivo .CF) y se pueden ejecutar automáticamente en secuencia.
• Los procedimientos de comando le permiten usar una secuencia de comandos KCL sin tener que escribirlos una y
otra vez.
14–4
MARRC75KR07091E Rev H 14. LENGUAJE DE COMANDOS KAREL (KCL)
Todos los comandos de KCL, excepto RUNCF, se pueden usar dentro de un procedimiento de comando. Para
los comandos que requieren confirmación, puede ingresar el comando y la confirmación en una línea o KCL
solicitará la confirmación en la línea de entrada.Confirmación en un procedimiento de comandomuestra
LIMPIAR TODOcomo el comando KCL ySÍcomo la confirmación.
• Los procedimientos de comando se pueden anidar usando %INCLUDE filename dentro de un procedimiento de comando.
Si se intenta anidar más de cuatro procedimientos de comando, KCL detectará el error y tomará la
acción adecuada según la variable del sistema $STOP_ON_ERR. Referirse aSección 14.4.3 para obtener
más información sobre $STOP_ON_ERR.
Carácter de continuación
El carácter de continuación de KCL, el ampersand (&), le permite continuar una entrada de comando en más de una
línea en un procedimiento de comando.
Puede dividir los comandos KCL entre palabras clave o entre caracteres especiales.
Por ejemplo, use el ampersand (&) para continuar un comando en dos líneas:
CREAR VAR [PRUEBA_PROG.]PICK_UP_PNT &
:POSICIÓN
Comentarios
Las líneas de comentarios se pueden utilizar para documentar los procedimientos de comando. Las siguientes reglas se aplican al uso de
comentarios en procedimientos de comando:
• Los comentarios se pueden colocar en una línea solos o al final de una línea de comando.
14–5
14. LENGUAJE DE COMANDOS KAREL (KCL) MARRC75KR07091E Rev H
Se puede crear un procedimiento de comando escribiendo la lista de comandos en un archivo de comandos y guardando
el archivo. Esto se puede hacer usando el editor de pantalla completa.
• Si $STOP_ON_ERR es FALSO, el sistema ignora los errores de KCL y el procedimiento de comando se ejecuta
hasta completarse.
Cada comando en un procedimiento de comando se muestra a medida que se ejecuta, a menos que se use el comando
SET VERIFY OFF. Cada comando va precedido del número de línea del archivo de comandos. Sin embargo, si el archivo
no está en el dispositivo RD:, el archivo de comando completo se lee en la memoria antes de la ejecución y los números
de línea se omitirán de la pantalla.
14–6
Capítulo 15
SISTEMA DE ENTRADA/SALIDA
Contenido
15–1
15. SISTEMA DE ENTRADA/SALIDA MARRC75KR07091E Rev H
El sistema de entrada/salida (E/S) proporciona acceso de usuario con KAREL a señales de E/S definidas por el usuario, señales
de E/S definidas por el sistema y puertos de comunicación. Las señales de E/S definidas por el usuario se controlan en un
programa KAREL y le permiten comunicarse con los dispositivos periféricos y las herramientas del extremo del brazo del robot.
Las señales de E/S definidas por el sistema son aquellas designadas por el sistema KAREL para propósitos específicos. También
existen configuraciones de puertos de comunicaciones estándar y opcionales.
La cantidad de señales de E/S definidas por el usuario depende del hardware del controlador y de los tipos y la
cantidad de módulos seleccionados.
Señales definidas por el usuarioson aquellas señales de entrada y salida cuyo significado viene definido por un programa KAREL.
Tiene acceso a las señales definidas por el usuario a través de los siguientes arreglos de puertos predefinidos:
Además de los conjuntos de puertos, tiene acceso a las señales de control de la mano del robot a través de las instrucciones
KAREL OPEN y CLOSE HAND.
Las señales DIN y DOUT brindan acceso a datos en una sola línea de entrada o salida en un programa
KAREL.
El programa trata los datos como un tipo de datos BOOLEAN. El valor es ON (activo) o OFF (inactivo).
Puede definir la polaridad de la señal como activa-alta (ON cuando se aplica voltaje) o activa-baja (ON
cuando no se aplica voltaje).
A las señales de entrada se accede en un programa KAREL con el nombre DIN[n], donde “n” es el número de señal.
La evaluación de las señales DIN hace que el sistema realice operaciones de lectura del puerto de entrada. Asignar
un valor a una señal DIN no es una operación válida a menos que se haya simulado la señal DIN. Estos nunca se
pueden configurar en un programa KAREL, a menos que se haya simulado la señal DIN.
La evaluación de las señales DOUT hace que el sistema devuelva el valor de salida actual de la señal de
salida especificada. Al asignar un valor a una señal DOUT, el sistema activa o desactiva la señal de
salida.
DOUT[n] = VERDADERO o
15–2
MARRC75KR07091E Rev H 15. SISTEMA DE ENTRADA/SALIDA
SALIDA[n] = ENCENDIDO
DOUT[n] = FALSO o
DOUT[n] = APAGADO
Las señales digitales se asignan a los puertos de los dispositivos de E/S mediante los menús de E/S de la consola portátil o la rutina
integrada de KAREL SET_PORT_ASG.
Las señales GIN y GOUT brindan acceso a DIN y DOUT como un grupo de señales de entrada o salida en un
programa KAREL. Un grupo puede tener un tamaño de 1 a 16 bits, y cada bit corresponde a una señal de entrada
o salida. Usted define el tamaño del grupo y los DIN o DOUT asociados con un grupo específico. El primer puerto
(el número más bajo) es el bit menos significativo del valor del grupo.
El programa trata los datos como un tipo de datos INTEGER. Los bits no utilizados se interpretan como ceros.
En los programas de KAREL, se accede a las señales de entrada con el nombre GIN[n], donde “n” es el número de grupo.
La evaluación de las señales GIN hace que el sistema realice operaciones de lectura de los puertos de entrada. Asignar un
valor a una señal GIN no es una operación válida a menos que se haya simulado la señal GIN. Estos nunca se pueden
configurar en un programa KAREL, a menos que se haya simulado la señal GIN.
La configuración de las señales GOUT hace que el sistema devuelva el valor de salida actual desde el puerto de salida
especificado. Asignar un valor a una señal GOUT hace que el sistema realice una operación de salida.
Para controlar una salida de grupo, se utiliza el valor entero equivalente a la salida binaria deseada. Por
ejemplo, el comando GOUT[n] = 25 tendrá el siguiente resultado binario “0000000000011001”, donde 1 =
salida activada y 0 = salida desactivada, siendo el bit menos significativo (LSB) el primer bit a la derecha.
Las señales de grupo se asignan mediante los menús de E/S de la consola portátil o la rutina integrada de KAREL
SET_PORT_ASG.
Las señales AIN y AOUT dan acceso a señales eléctricas analógicas en un programa KAREL. Para las señales de
entrada, el sistema digitaliza los datos analógicos y los pasa al programa KAREL como un número binario de 16
bits, de los cuales 14 bits, 12 bits u 8 bits son significativos según el módulo analógico. El programa trata los
datos como un tipo de datos INTEGER. Para las señales de salida, se emite una tensión analógica
correspondiente a un valor INTEGER programado.
15–3
15. SISTEMA DE ENTRADA/SALIDA MARRC75KR07091E Rev H
En los programas de KAREL, se accede a las señales de entrada con el nombre AIN[n], donde “n” es el número de la señal.
La evaluación de las señales AIN hace que el sistema realice operaciones de lectura del puerto de entrada. Establecer una señal
AIN en el Teach Pendant no es una operación válida a menos que se haya simulado la señal AIN. Estos nunca se pueden
configurar en un programa KAREL, a menos que se haya simulado la señal AIN.
El valor mostrado en el TP o leído por un programa desde un puerto de entrada analógica depende del voltaje
suministrado al puerto y la cantidad de bits de datos significativos suministrados por la conversión de analógico a
digital. Para voltajes de entrada positivos, los valores leídos estarán en el rango de 0 a 2**(N-1) -1, donde N es el
número de bits de datos significativos. Para dispositivos de 12 bits (la mayoría de los módulos FANUC), esto es 2**11–1
o 2047.
Para voltajes de entrada negativos, el valor estará en el rango de 2**N - 1 a 2**(N-1) ya que el voltaje varía desde el
voltaje negativo más pequeño detectable hasta el voltaje negativo más grande manejado por el dispositivo. Para
dispositivos de 12 bits, esto es de 4095 a 2048.
Un ejemplo de la lógica KAREL para convertir esta entrada a un valor real que represente el voltaje, donde el
dispositivo es un dispositivo de 12 bits que maneja un rango de +10v a -10v sería el siguiente:
Figura 15–1. Lógica de KAREL para convertir la entrada en un valor real que representa el voltaje
V: VERDADERO
AINP: ENTERO
AINP = AIN[1]
SI (AINP <= 2047) ENTONCES V =
AINP * 10.0 /2047.0 DE LO
CONTRARIO
V = (AINP - 4096) * 10.0 / 2047 ENDIF
R[1] = AI[1]
SI (R[1] > 2047) JMP LBL[1] R[2] = R[1]
* 10
R[2] = R[2] / 2047 JMP
LBL[2]
LBL[1]:
R[2] = R[1] - 4096 R[2] =
R[2] * 10 R[2] = R[2] /
2047 LBL[2]
15–4
MARRC75KR07091E Rev H 15. SISTEMA DE ENTRADA/SALIDA
La evaluación de las señales AOUT hace que el sistema devuelva el valor de salida actual de la señal de salida
especificada. Asignar un valor a una señal AOUT hace que el sistema realice una operación de salida.
Se puede activar una AOUT en un programa KAREL con AOUT[n] = (un valor entero). El resultado será el voltaje
de salida en la línea de señal AOUT[n] del valor entero especificado. Por ejemplo, AOUT[1] = 1000 emitirá una
señal de +5 V en la línea de salida analógica 1 (usando un módulo de salida con 12 bits significativos).
Las señales analógicas se asignan mediante los menús de E/S de la consola portátil o la rutina integrada de
KAREL SET_PORT_ASG.
Tiene acceso a un conjunto especial de señales de control de la mano del robot que se utilizan para controlar las herramientas del
extremo del brazo a través de las declaraciones HAND del lenguaje KAREL, en lugar de a través de matrices de puertos. Las señales
MANO proporcionan un programa KAREL con acceso a dos señales de salida que funcionan de manera coordinada para controlar la
herramienta. Las señales se designan como la línea abierta y la línea cerrada. El sistema puede admitir hasta dos señales de MANO.
Las siguientes declaraciones en lenguaje KAREL se proporcionan para controlar la señal, donde "n" es el
número de señal.
Las señales de E/S definidas por el sistema son señales designadas por el software del controlador para un propósito específico.
Excepto por ciertas señales UOP, las E/S definidas por el sistema no se pueden reasignar.
Tiene acceso a las señales de E/S definidas por el sistema a través de las siguientes matrices de puertos:
• Entrada del panel del operador (OPIN) y salida del panel del operador (OPOUT)
• Entrada del colgante de enseñanza (TPIN) y salida del colgante de enseñanza (TPOUT)
15–5
15. SISTEMA DE ENTRADA/SALIDA MARRC75KR07091E Rev H
Robot I/O son las señales de entrada y salida entre el controlador y el robot. Estas señales se envían al conector
EE (efector final) ubicado en el robot. El número de señales de entrada y salida del robot (RDI y RDO) varía según
el número de ejes del sistema. Para obtener más información sobre la configuración de E/S de robot, consulte el
manual específico de la aplicación correspondiente.Manual de configuración y operaciones.
RDI[1] a RDI[8]están disponibles para entradas de herramientas. Se pueden utilizar todas o algunas de estas señales,
según el modelo de robot. Consulte el Manual de mantenimiento específico de su modelo de robot para obtener más
información.
RDO[1] a RDO[8]están disponibles para el control de herramientas. Se pueden utilizar todas o algunas de estas señales,
según el modelo de robot. Consulte el Manual de mantenimiento específico de su modelo de robot para obtener más
información.
RDO[1] a RDO[4]son las mismas señales configuradas con las manecillas ABRIR, CERRAR y RELAJAR. Ver
Sección 15.1.4.
Las señales de entrada y salida del panel del operador son las señales de entrada y salida para el panel del operador estándar
(SOP) y para el panel del operador del usuario (UOP).
Las señales de entrada del panel del operador se asignan de la siguiente manera:
• Las siguientes 18 señales, OPIN[16] - OPIN[33], se asignan al panel de operador del usuario (UOP). Si tiene
una placa de E/S de proceso, estas 18 señales UOP se asignan a los primeros 18 puertos de entrada en la
placa de E/S de proceso.
Las señales de salida del panel del operador se asignan de la siguiente manera:
• Las siguientes 20 señales, OPOUT[16] - OPOUT[35], se asignan al panel de operador del usuario (UOP). Si tiene
una placa de E/S de proceso, estas 20 señales UOP se asignan a los primeros 20 puertos de salida en la placa de
E/S de proceso.
Las señales de entrada y salida del panel de operador estándar son reconocidas por el sistema KAREL como OPIN[0] -
OPIN[15] y OPOUT[0] - OPOUT[15] y por las pantallas en la consola portátil como SI[0] - SI[15 ] y SO[0] - SO[15].Tabla 15–
1enumera cada señal de entrada estándar del panel del operador.Tabla 15–2enumera cada señal de salida estándar del
panel del operador.
15–6
MARRC75KR07091E Rev H 15. SISTEMA DE ENTRADA/SALIDA
OPINA[2] SI[2] REMOTO Esta señal normalmente está APAGADA, lo que indica que el
OPINIÓN[3] SI[3] MANTENER Esta señal normalmente se enciende, lo que indica que no
se está presionando el botón HOLD.
OPINA[6] SI[6] INICIO DEL CICLO Esta señal normalmente está APAGADA, lo que indica que el
botón INICIO DE CICLO no se está presionando.
SI[8] SI[9] CE/CR Seleccionar b0 Esta señal es de dos bits e indica el estado del interruptor
CE/CR Seleccionar b1 de selección de modo.
SALIDA[0] SO[0] LED REMOTO Esta señal indica que el controlador está configurado en remoto.
SALIDA[1] SO[1] INICIO DEL CICLO Esta señal indica que se ha pulsado el botón INICIO DE
CICLO o que se está ejecutando un programa.
SALIDA[2] SO[2] MANTENER Esta señal indica que se ha presionado el botón HOLD o
que existe una condición de espera.
SALIDA[3] SO[3] LED DE FALLA Esta señal indica que se ha producido un fallo.
SALIDA[4] SO[4] ALARMA DE BATERÍA Esta señal indica que el voltaje de la batería CMOS es
bajo.
SALIDA[5] SO[5] USUARIO LED#1 (PURGA Esta señal es definible por el usuario.
COMPLETO para
robots de la serie P)
SALIDA[7] SO[7] COLGANTE ENSEÑANZA Esta señal indica que la consola portátil está habilitada.
ACTIVADO
15–7
15. SISTEMA DE ENTRADA/SALIDA MARRC75KR07091E Rev H
Las señales de entrada y salida del panel del operador del usuario son reconocidas por el sistema KAREL como OPIN[16]-
OPIN[33] y OPOUT[16]-OPOUT[35] y por las pantallas en el dispositivo de enseñanza como UI[1]-UI[18 ] y UO[1]-UO[20]. En la
placa de E/S de proceso, las señales de entrada de UOP se asignan a las primeras 18 señales de entrada digital y las señales de
salida de UOP se asignan a las primeras 20 señales de salida digital.Tabla 15–3enumera y describe cada señal de entrada del
panel del operador del usuario.Tabla 15–4enumera cada señal de salida del panel del operador del usuario.Figura 15–2yFigura
15–3ilustrar la temporización de las señales UOP.
Cuadro 15–3. Señales de entrada del panel del operador del usuario
establece en APAGADO,
Advertencia
15–8
MARRC75KR07091E Rev H 15. SISTEMA DE ENTRADA/SALIDA
Cuadro 15–3. Señales de entrada del panel del operador del usuario (continuación)
OPINIÓN[17] IU[2] 2 * MANTENER * HOLD es la señal de espera externa. *HOLD es una señal normalmente
OPINIÓN[18] IU[3] 3 * SFSPD * SFSPD es la señal de entrada de velocidad de seguridad. Esta señal
15–9
15. SISTEMA DE ENTRADA/SALIDA MARRC75KR07091E Rev H
Cuadro 15–3. Señales de entrada del panel del operador del usuario (continuación)
Advertencia
Cuando
$SHELL_CFG.USE_ABORT
es FALSO, CSTOPI no detiene
inmediatamente la ejecución
automática del programa.
15–10
MARRC75KR07091E Rev H 15. SISTEMA DE ENTRADA/SALIDA
Cuadro 15–3. Señales de entrada del panel del operador del usuario (continuación)
OPINIÓN[23] interfaz de usuario[8] 8 ENBL ENBL es la entrada de habilitación. Esta señal debe estar ENCENDIDA
Siempre activo para tener la capacidad de control de movimiento. Cuando esta señal
remota.
OPINIÓN[24]- IU[9]- 9- 126 RSR1/PNS1, RSR1-8son las señales de entrada de solicitud de servicio
OPINIÓN[31] IU[16] RSR2/PNS2, del robot. Cuando se recibe una de estas señales, el
RSR3/PNS3, programa RSR correspondiente se está ejecutando o, o un
RSR4/PNS4,RSR5/PNS5, programa se está ejecutando actualmente, almacenado
, RSR6/PNS6, en una cola para su ejecución posterior. Las señales RSR
, RSR7/PNS7, se utilizan para la operación de producción y se pueden
, RSR8/PNS8 recibir mientras se pulsa una salida ACK. VerFigura 15–2.
Activo cuando el robot está SNP 1-8son señales de entrada de selección de número
en una condición remota de programa. PNS selecciona programas para su
(CMDENBL = ON) ejecución,pero no ejecuta programas.Los programas
seleccionados por PNS se ejecutan usando la entrada
START o la entrada PROD_START según el valor de la
variable de sistema $SHELL_CFG.$CONT_ONLY.
15–11
15. SISTEMA DE ENTRADA/SALIDA MARRC75KR07091E Rev H
Cuadro 15–3. Señales de entrada del panel del operador del usuario (continuación)
OPINIÓN[32] IU[17] 17 PNSTROBE Activo cuando La entrada PNSTROBE es la señal de entrada estroboscópica de
el robot está en una condición selección del número de programa. VerFigura 15–3.
remota (CMDENBL =
EN)
OPINIÓN[33] IU[18] 18 PROD_START Activo La entrada PROD_START, cuando se usa con PNS,
cuando el robot está en iniciará la ejecución del programa seleccionado desde
una condición remota las líneas PNS. Cuando se usa sin PNS, PROD_START
(CMDENBL = ACTIVADO) ejecuta el programa seleccionado desde la posición
actual del cursor. VerFigura 15–3.
Cuadro 15–4. Señales de salida del panel del operador del usuario
15–12
MARRC75KR07091E Rev H 15. SISTEMA DE ENTRADA/SALIDA
Cuadro 15–4. Señales de salida del panel del operador del usuario (continuación)
SALIDA[25] UO[10] 10 OCUPADO BUSY es la salida del procesador ocupado. Esta señal se
enciende cuando el robot está ejecutando un programa
o cuando el procesador está ocupado.
15–13
15. SISTEMA DE ENTRADA/SALIDA MARRC75KR07091E Rev H
Cuadro 15–4. Señales de salida del panel del operador del usuario (continuación)
RSR1
APORTE
$SCR.$cond_time milisegundos de retraso máximo
ACK1
PRODUCCIÓN
El ancho de pulso se especifica en la pantalla de configuración de RSR
RSR2
APORTE
ACK2
PRODUCCIÓN
RSR3
APORTE
ACK3
PRODUCCIÓN
RSR4
APORTE
ACK4
PRODUCCIÓN
Se puede recibir otra señal RSR mientras se pulsa un ACK
15–14
MARRC75KR07091E Rev H 15. SISTEMA DE ENTRADA/SALIDA
PNSTROBE
APORTE Mientras PNSTROBE está activado, no se permite la modificación de selección de programa
El programa seleccionado de PNS se lee dentro de los 32 ms desde el flanco ascendente de PNSTROBE
PNSTROBE
DETECCIÓN
SNO1 8
PRODUCCIÓN
BOCADILLO
PRODUCCIÓN
PROD_START
APORTE
PROGRAMA
PRODUCCIÓN El programa se ejecuta dentro de
los 32 ms desde PROD_START
flanco descendente.
Las señales de entrada del colgante de enseñanza (TPIN) proporcionan acceso de lectura a las señales de entrada generadas por las
teclas del colgante de enseñanza. Se puede acceder a las entradas del colgante de enseñanza a través de las matrices de puertos TPIN.
Un programa KAREL trata los datos de entrada de la botonera de enseñanza como un tipo de datos BOOLEAN. El valor es ON (activo: la
tecla está presionada) o OFF (inactivo: la tecla no está presionada). A las señales TPIN se accede en los programas KAREL con el nombre
TPIN[n], donde “n” es el número de señal, que se asigna internamente. Referirse a Tabla 15–5para las asignaciones de señal de entrada
del colgante de enseñanza.
Teclas de flecha
15–15
15. SISTEMA DE ENTRADA/SALIDA MARRC75KR07091E Rev H
TPIN[13] INGRESAR
TPIN[48] 0
TPIN[49] 1
TPIN[50] 2
TPIN[51] 3
TPIN[52] 4
TPIN[53] 5
TPIN[54] 6
TPIN[55] 7
TPIN[56] 8
TPIN[57] 9
Teclas de función
TPIN[128] ANTERIOR
TPIN[129] F1
TPIN[131] F2
TPIN[132] F3
TPIN[133] F4
TPIN[134] F5
TPIN[135] SIGUIENTE
TPIN[137] F1 desplazado
TPIN[138] F2 desplazado
TPIN[139] F3 desplazado
TPIN[140] F4 desplazado
TPIN[141] F5 desplazado
Teclas de menú
15–16
MARRC75KR07091E Rev H 15. SISTEMA DE ENTRADA/SALIDA
TPIN[143] SELECCIONE
TPIN[144] MENÚ
TPIN[145] EDITAR
TPIN[146] DATOS
TPIN[147] FCTN
TPIN[148] ARTÍCULO
TPIN[149] +%
TPIN[150] -%
TPIN[151] MANTENER
TPIN[152] PASO
TPIN[153] REINICIAR
TPIN[240] DISP
IPIN[203] AYUDA
TPIN[154] ARTÍCULO desplazado
TPIN[155] Desplazado +%
TPIN[156] Desplazado -%
Teclas de movimiento
15-17
15. SISTEMA DE ENTRADA/SALIDA MARRC75KR07091E Rev H
TPIN[185] ADELANTE
TPIN[186] BWD
TPIN[187] COORDINADOR
TPIN[28] GRUPO
TPIN[188] +X
TPIN[189] +Y
TPIN[190] +Z
TPIN[191] + X rotación
TPIN[192] + Rotación Y
TPIN[193] + Rotación Z
IPIN[12290] + J7
IPIN[12294] + J8
TPIN[194] -X
TPIN[195] - si
TPIN[196] -Z
TPIN[197] - Rotación X
TPIN[198] - Rotación Y
TPIN[199] - Rotación Z
IPIN[12292] - J7
IPIN[12296] -J8
TPIN[226] FWD desplazado
TPIN[214] Desplazado +X
TPIN[215] Desplazado +Y
TPIN[216] Desplazado +Z
TPIN[220] Desplazado -X
TPIN[221] Desplazado -Y
TPIN[222] Desplazado -Z
iLlaves
15–18
MARRC75KR07091E Rev H 15. SISTEMA DE ENTRADA/SALIDA
IPIN[12288] illave
IPIN[12298] iMENÚ, Menú superior
IPIN[12299] iSELECCIONAR, 4D Seleccionar mapa de
IPIN[12303]
IPIN[12304] iCOORDINADOR
IPIN[12305] iGRUPO
IPIN[12306] i+%
IPIN[12307] i-%
IPIN[12308] iflecha arriba
IPIN[12309] iFlecha hacia abajo
iTeclas Continuación
TPIN[12314] i+X
TPIN[12315] i+Y
TPIN[12316] i+Z
IPIN[12317] i+Rotación X
TPIN[12318] i+Rotación Y
IPIN[12319] i+rotación Z
IPIN[12320] i+Rotación J7
TPIN[12321] i+Rotación J8
IPIN[12322] i-X
IPIN[12323] i-Y
IPIN[12324] i-Z
IPIN[12325] i-Rotación X
IPIN[12326] i-Rotación Y
IPIN[12327] i-rotación Z
IPIN[12328] i-Rotación J7
IPIN[12329] i-Rotación J8
15–19
15. SISTEMA DE ENTRADA/SALIDA MARRC75KR07091E Rev H
El sistema de E/S serie le permite comunicarse con dispositivos serie periféricos conectados al sistema
KAREL. Por ejemplo, podría usar E/S en serie para escribir mensajes desde uno de los puertos de
comunicaciones a un terminal remoto a través de un cable que se conecta al controlador.
Para utilizar E/S serie, debe proporcionar un dispositivo serie y el cable adecuado. Consulte el Manual de mantenimiento,
específico para su modelo de robot, para conocer las especificaciones eléctricas.
Los puertos de comunicaciones que utiliza para leer y escribir datos en serie se definen en el software del
sistema. Cada puerto de software está asociado con conectores físicos en el controlador al que conecta el
cable de comunicaciones.
Configurar un puerto significa inicializar los puertos seriales del controlador para usar dispositivos específicos, como
CRT/KB. Inicializar puertos implica configurar información específica para un puerto según el tipo de dispositivo que se
conectará al puerto. Esto se hace en la pantalla PORT INIT de la consola portátil.
El controlador admite hasta cuatro puertos serie. Se pueden conectar varios tipos diferentes de dispositivos a estos
puertos.
15–20
MARRC75KR07091E Rev H 15. SISTEMA DE ENTRADA/SALIDA
JD17
RS-232-C (puerto 2)
enseñar colgante
JRS19
enseñar colgante
Puertos
Están disponibles hasta cuatro puertos, P1-P4.Tabla 15–6enumera los puertos. Puede configurar los puertos P2 a P4 si
los tiene, pero no puede configurar el puerto de la consola portátil, P1.
15–21
15. SISTEMA DE ENTRADA/SALIDA MARRC75KR07091E Rev H
Puerto Nombre del elemento en pantalla tipo de puerto Usar Dispositivo por defecto
$RS232_NPORT=4.
Dispositivos
Puede modificar la configuración de comunicaciones predeterminada para cada puerto, excepto el puerto 1, que está dedicado a la
consola portátil (TP).Tabla 15–7enumera la configuración predeterminada para cada tipo de dispositivo que puede conectar a un
puerto.
admitidos.
* Puede ajustar esta configuración; sin embargo, si lo hace, es posible que no funcionen según lo previsto porque
están conectados a un dispositivo externo.
15–22
MARRC75KR07091E Rev H 15. SISTEMA DE ENTRADA/SALIDA
Ver también:Apéndice Apara más información sobre las declaraciones y los incorporados disponibles en KAREL
Consulte la aplicación específicaManual de configuración y operacionespara obtener más información sobre la configuración de
puertos.
15–23
capitulo 16
MULTITAREA
Contenido
.................................................... ....................................
Capítulo 16 MULTITAREA 16-1
16.1 TERMINOLOGÍA MULTITAREA.................................................... ........... 16-2
16.2 ASIGNACIÓN DE INTÉRPRETE.................................................... ................ 16–3
16.3 CONTROL DE MOVIMIENTO.................................................... ................................ 16–3
16.4 PROGRAMACIÓN DE TAREAS.................................................... ............................... 16–4
16.4.1 Programación prioritaria.................................................... ................................ 16–5
16.4.2 Fragmentos de tiempo.................................................... .......................................... 16–6
16.5 TAREAS DE INICIO.................................................... .................................... 16–6
16.5.1 Ejecución de programas desde el panel de operador de usuario (UOP) PNS
Señal.................................................... .................................................... .... 16–7
16.5.2 Tareas secundarias.................................................... ............................................ 16–7
16.6 CONTROL Y SEGUIMIENTO DE TAREAS.................................................... ...... 16–7
16.6.1 Desde Programas TPP.................................................... ............................... 16–8
16.6.2 Desde Programas KAREL.................................................... ......................... 16–8
16.6.3 Desde KCL.................................................... .......................................................... 16–8
16.7 USO DE SEMÁFOROS Y SINCRONIZACIÓN DE TAREAS.......................... 16–9
16.8 USO DE COLAS PARA COMUNICACIONES DE TAREAS.................................... 16–14
16-1
16. MULTITAREA MARRC75KR07091E Rev H
La multitarea permite que más de un programa se ejecute en el controlador en tiempo compartido, de modo que
varios programas parezcan ejecutarse simultáneamente.
La multitarea es especialmente útil cuando se ejecutan varias secuencias de operaciones que, por lo
general, pueden funcionar de forma independiente, aunque exista cierta interacción entre ellas. Por
ejemplo:
Es importante tener en cuenta que, aunque varias tareas parecen operar al mismo tiempo, comparten el uso del
mismo procesador, por lo que en cualquier momento solo se está ejecutando realmente una tarea. Con la excepción
de las declaraciones interrumpibles, una vez que se inicia la ejecución de una declaración, debe completarse antes de
que se puedan ejecutar las declaraciones de otra tarea. Las siguientes sentencias son interrumpibles:
• LEER
• DEMORA
• ESPERE
• ESPERAR
Referirse aSección 16.4, “Programación de tareas” para obtener información sobre cómo el sistema decide qué tarea
ejecutar primero.
Una tarea, o tarea de usuario, es un programa de usuario que se está ejecutando o está en pausa. Una tarea es ejecutada
por un "intérprete". Una tarea se crea cuando se inicia el programa y se elimina cuando el intérprete al que está asignada
pasa a ser asignada a otra tarea.
• Interprete
Un intérprete es un componente del sistema que ejecuta programas de usuario. En un inicio frío o
controlado, se crean ($MAXNUMTASKS + 2) intérpretes. Estos intérpretes son capaces de ejecutar tareas
simultáneamente.
• Nombre de la tarea
El nombre de la tarea es el nombre del programa especificado cuando se crea la tarea. Cuando cree una tarea,
especifique el nombre del programa que se ejecutará como el nombre de la tarea.
16-2
MARRC75KR07091E Rev H 16. MULTITAREA
NotaEl nombre de la tarea no cambia una vez que se crea la tarea. Por lo tanto, cuando se ejecuta una rutina
externa, el nombre del programa en ejecución actual no es el mismo que el nombre de la tarea. Cuando envíe
cualquier solicitud a la tarea, use el nombre de la tarea, no el nombre del programa actual.
• Control de movimiento
El control de movimiento se define mediante una máscara de bits que especifica los grupos de movimiento sobre los que tiene control una
tarea. Solo una tarea a la vez puede controlar un grupo de movimiento. Sin embargo, diferentes tareas pueden controlar diferentes grupos
de movimiento simultáneamente. Referirse aSección 16.3, “Control de movimiento”, para obtener más información.
Cuando se inicia una tarea, se asigna a un intérprete. El intérprete al que está asignado (1, 2, 3, ...) determina su número
de tarea. El número de tarea se utiliza en las acciones del controlador de condiciones PAUSAR PROGRAMA, CANCELAR
PROGRAMA y CONTINUAR PROGRAMA. El número de tarea para una tarea se puede determinar usando el
GET_TSK_INFO integrado.
• Se asigna una tarea al primer intérprete disponible que actualmente no tiene tareas asignadas.
• Si todos los intérpretes están asignados a tareas, se asignará una nueva tarea al primer intérprete que tenga
una tarea cancelada.
Una restricción importante en la multitarea está en el control de los diversos grupos de movimiento. Solo una tarea
puede tener control o uso de un grupo de ejes. Una tarea requiere el control del grupo o grupos en las siguientes
situaciones:
Para los programas de consola portátil, se requiere control de movimiento cuando se inicia el programa, a menos que se
use la página DETALLE de la pantalla SELECCIONAR para configurar la máscara de grupo en [*,*,*,*,*].
• Cuando una tarea ejecuta el LOCK_GROUP incorporado, requiere los grupos especificados por la máscara de
grupo.
16–3
16. MULTITAREA MARRC75KR07091E Rev H
• Cuando una tarea llama a una RUTINA oa un programa colgante de enseñanza, requiere el control de esos grupos. Los grupos
requeridos por un programa ROUTINE o TPP+ son aquellos especificados, o implícitos, por las directivas del controlador o en la
configuración DETALLE del dispositivo de enseñanza.
• La consola portátil no está habilitada, con la excepción de que se puede dar control de movimiento a un
programa cuando se inicia usando shift-FWD en la consola portátil o si tiene la directiva %TPMOTION.
Después de que una tarea obtiene el control de un grupo, lo mantiene hasta uno de los siguientes:
• Vuelve el programa de ROUTINE o de la consola de enseñanza y los grupos fueron requeridos por un programa de ROUTINE o
de la consola de enseñanza, pero no por el programa de llamada.
Una tarea que se está ejecutando actualmente (no abortada o en pausa) ejecutará declaraciones hasta que ocurra una de las
siguientes:
16–4
MARRC75KR07091E Rev H 16. MULTITAREA
Una tarea está lista para ejecutarse cuando se encuentra en estado de ejecución y no tiene condiciones de espera.
Solo se ejecuta una tarea a la vez. Hay dos reglas para determinar qué tarea se ejecutará cuando más de una tarea
esté lista para ejecutarse:
• Prioridad: si dos o más tareas de diferente prioridad están listas para ejecutarse, la tarea con mayor prioridad se ejecuta
primero. Referirse aSección 16.4.1, “Programación prioritaria”, para obtener más información.
• Fragmentos de tiempo: si dos tareas de la misma prioridad están listas para ejecutarse, la ejecución de las tareas se
fracciona en el tiempo. Referirse aSección 16.4.2, “Fracción de tiempo”, para obtener más información.
Si dos o más tareas con diferentes prioridades están listas para ejecutarse, la tarea con la prioridad más alta se ejecutará primero. La
prioridad de una tarea está determinada por su número de prioridad. Los números de prioridad deben estar en el rango de -8 a 143.
Cuanto menor sea el número de prioridad, mayor será la prioridad de la tarea.
Por ejemplo: si TASK_A tiene un número de prioridad de 50 y TASK_B tiene un número de prioridad de 60, y ambos están listos
para ejecutarse, TASK_A se ejecutará primero, siempre que esté listo para ejecutarse.
• El SET_TSK_ATTR incorporado se puede usar para establecer la prioridad actual de cualquier tarea.
Además de afectar otras tareas del usuario, la prioridad de la tarea también afecta la prioridad del intérprete que la ejecuta, en relación
con la de otras funciones del sistema. Si la tarea del usuario tiene una prioridad más alta (número de prioridad más bajo) que la función
del sistema, mientras la tarea del usuario esté lista para ejecutarse, la función del sistema no se ejecutará. El rango de prioridades de las
tareas del usuario está restringido en el extremo de alta prioridad. Esto se hace para que el programa de usuario no pueda interferir con
la interpolación de movimiento. La interpolación de movimiento se refiere a las actualizaciones necesarias para que se complete un
movimiento.
16–5
16. MULTITAREA MARRC75KR07091E Rev H
Si dos o más tareas de la misma prioridad están listas para ejecutarse, compartirán los recursos del sistema por
división de tiempo o alternando el uso del sistema.
Un intervalo de tiempo permite que se ejecuten otras tareas de la misma prioridad, pero no tareas de menor prioridad.
El intervalo de tiempo predeterminado para una tarea es de 256 milisegundos. Se pueden establecer otros valores usando la
directiva %TIMESLICE o el SET_TSK_ATTR integrado.
• Comando KCL EJECUTAR. Referirse aApéndice C, “Descripciones alfabéticas de los comandos KCL”.
• Tecla de inicio del panel del operador. Consulte la aplicación específica adecuada.Manual de operaciones
y configuración de FANUC America Corporation.
• Señal de inicio del panel del operador del usuario. Consulte la información específica de la aplicación correspondiente.Manual de
operaciones y configuración de FANUC America Corporation.
• Señal PNS del panel del operador del usuario. Referirse aSección 16.5.1, “Ejecución de programas desde la señal PNS del
panel del operador del usuario (UOP)”, para obtener más información.
• El programa Teach Pendant ejecuta una instrucción RUN. Referirse aSección 16.5.2, “Tareas secundarias”, para
obtener más información.
• El programa KAREL ejecuta el RUN_TASK integrado. Referirse aSección 16.5.2, “Tareas secundarias”, para
obtener más información.
En cada caso, la tarea no comenzará a ejecutarse si requiere un control de movimiento que no está disponible.
16–6
MARRC75KR07091E Rev H 16. MULTITAREA
16.5.1 Ejecución de programas desde el panel de operador del usuario (UOP) PNS Signal
Se ejecuta un programa:
• Si el valor binario de las señales UOP PNS no es cero y se afirma la señal UOP
PROGSTART
• Si actualmente hay un programa con el nombre “PNSnnnn”, donde nnnn es el valor decimal de las
señales PNS más el valor actual de $SHELLCFG.$jobbase.
Un programa no se ejecuta:
Se pueden iniciar varios programas de esta manera, siempre que no haya superposición de grupos de movimiento.
Si el nombre de la tarea determinado por el PNS está en estado de pausa, la señal PROGSTART se interpreta
como una señal CONTINUAR. Si $SHELLCFG.$contonly es TRUE, esta es la única función de las señales PNS/
PROGSTART.
Si $SHELLCFG.$useabort es TRUE, las señales PNS se pueden usar para cancelar una tarea en ejecución. El
nombre de la tarea a abortar es el mismo que se usa con la señal PROGSTART. En este caso, la interrupción se
activa mediante la señal UOP CSTOPI
Una tarea en ejecución puede crear nuevas tareas. Esta nueva tarea se denomina tarea secundaria. La tarea que solicita la
creación de la tarea secundaria se denomina tarea principal. En los programas de Teach Pendant, se crea una nueva tarea al
ejecutar una instrucción RUN. En los programas KAREL, se puede crear una nueva tarea utilizando el RUN_TASK incorporado.
Es posible que la tarea principal y la secundaria no requieran el mismo grupo de movimiento. Sin embargo, en el caso de
RUN_TASK, es posible liberar el control de los grupos de movimiento para que los use la tarea secundaria.
Una vez que se crea una tarea secundaria, se ejecuta independientemente de su tarea principal, con la siguiente excepción:
• Si una tarea principal continúa y su tarea secundaria está en pausa, la tarea secundaria también continúa.
• Si una tarea principal se pone en modo PASO, la tarea secundaria también se pone en modo PASO.
Si desea que la tarea secundaria sea completamente independiente de la principal, un programa KAREL puede iniciar
otra tarea utilizando los integrados KCL o KCL_NOWAIT para emitir un comando KCL>EJECUTAR.
Hay tres entornos desde los que puede controlar y monitorear tareas:
16–7
16. MULTITAREA MARRC75KR07091E Rev H
La instrucción TPP RESUME_PROG se puede utilizar para continuar una tarea en PAUSA.
Hay una serie de funciones integradas que se utilizan para controlar y monitorear otras tareas. Consulte la descripción de estos
elementos integrados enApéndice A.
• La acción del controlador de condición ABORT hace que se anule una tarea.
• La acción del controlador de condición PAUSE hace que una tarea se pause.
• GET_TSK_INFO determina si una tarea específica está en ejecución, pausada o cancelada. También
determina qué programa y número de línea se está ejecutando y qué espera la tarea, si es que hay algo.
Los siguientes comandos de KCL se pueden usar para controlar y monitorear el estado de las tareas. Referirse a
Apéndice C, "Descripciones alfabéticas de los comandos KCL", para obtener más información.
16–8
MARRC75KR07091E Rev H 16. MULTITAREA
Un buen diseño dicta que las tareas separadas puedan operar de manera algo independiente. Sin embargo, también
deberían poder interactuar.
El controlador KAREL admite el conteo de semáforos. Las siguientes operaciones están permitidas en los
semáforos:
Todos los semáforos se borran en el arranque en frío. Es una buena práctica borrar un semáforo antes de
usarlo. Antes de que varias tareas comiencen a compartir un semáforo, una y solo una de estas tareas debe
borrar el semáforo.
Si el conteo de semáforos es menor o igual a cero (negativo), el semáforo de espera disminuirá el conteo de
semáforos y la tarea esperará a ser liberada por un semáforo de publicación. Las tareas se liberan por orden
de llegada. Por ejemplo, sitarea Aespera en el semáforo 1, entoncestarea Bespera en el semáforo 1. Cuando
tarea Dpublica el semáforo 1, solotarea Aserá realizado. Referirse aFigura 16–1.
16–9
16. MULTITAREA MARRC75KR07091E Rev H
B W
Tarea
A C W W
T0 T1 T2 T3 T4 T5 T6 T7 Tennesse
Ejemplo:Los semáforos se pueden usar para implementar una tarea que actúa como un servidor de solicitudes.
En el siguiente ejemplo, la tarea principal espera a que el servidor complete su operación. Semaphore[4] se
utiliza para controlar el acceso a rqst_param o R[5]. Semaphore[5] se utiliza para señalar a la tarea del servidor
que se está solicitando el servicio; El servidor utiliza el semáforo[6] para indicar que la operación ha finalizado.
Tarea principal
- - CAREL
CLEAR_SEMA(4)
CLEAR_SEMA(5)
CLEAR_SEMA(6)
EJECUTAR TAREA(`servidor',0,VERDADERO,VERDADERO,1,ESTADO)
PEND_SEMA(4,max_time,time_out)
rqst_param=10
POST_SEMA(5)
PEND_SEMA(6,max_time,time_out)
16–10
MARRC75KR07091E Rev H 16. MULTITAREA
- - CAREL
POST_SEMA (4)
MIENTRAS ES VERDAD HACER
PEND_SEMA(5,max_time,time_out) SI
rqst_param=10 ENTONCES
hacer algo
TERMINARA SI
POST_SEMA(4)
POST_SEMA(6)
ENTREVISTA
Ejemplo:El programa de ejemplo enEjemplo de programa de sincronización de tareas y semáforos -TAREA PRINCIPALa
través deEjemplo de programa de sincronización de tareas y semáforos -TAREA Bmuestra cómo los semáforos y las
tareas se pueden usar juntos para la sincronización.PRINCIPAL_TAREA.KLse utiliza para inicializar el semáforo
(MOTION_CTRL) y luego ejecuta ambosTASK_A.KLyTAREA_B.KL. PRINCIPAL_TAREA.KLluego espera TAREA_AyTAREA_B
para abortar antes de completar.TAREA_Aespera hasta que presione F1 y luego mueve el robot a la posición de INICIO.
TAREA_Bespera hasta que presione F2 y luego mueve el robot a lo largo de un camino.
PROGRAMA tarea_principal
%nolockgroup
VAR
movimiento_ctrl: ENTERO
tsk_a_hecho : BOOLEANO
tsk_b_hecho : BOOLEANO
tmr : ENTERO
estado : ENTERO
-----------------------------------------------------
-- --
-- INIT_LOCK: Inicializar la semáforo --
-- para asegurarse de que su cuenta esté en--
-- --
cero antes de usarlo. Luego publique este
-- semáforo que permitirá que el primer
-- pend del semáforo continúe --
-- --
-- ejecución. --
----------------------------------------------------
RUTINA init_lock
EMPEZAR
16-11
16. MULTITAREA MARRC75KR07091E Rev H
-- --
-- IS_TSK_DONE: Averigüe si el especificado --
-- la tarea se está ejecutando o no. --
-- Si la tarea se aborta, entonces -- devuelve
-- VERDADERO, de lo contrario FALSO.--
----------------------------------------------------
- ROUTINE is_tsk_done (nombre_tarea:CADENA): VAR BOOLEAN
PROGRAMA tarea_a
%nolockgroup
VAR
motion_ctrl DESDE main_task: INTEGER
home_pos : XYZWPR
estado : ENTERO
-----------------------------------------------------
-- --
-- CORRE A CASA : Bloquear el movimiento del robot --
-- control. esta tarea es --
16–12
MARRC75KR07091E Rev H 16. MULTITAREA
PROGRAMA tarea_b
%nolockgroup
VAR
motion_ctrl DESDE main_task : INTEGER
work_path : SENDERO
move_pos : XYZWPR
estado : ENTERO
-----------------------------------------------------
-- --
-- hacer trabajo : Bloquee el robot de otras tareas y --
-- trabaje. Esta tarea está haciendo --
-- --
movimiento y debe bloquear el control
-- de movimiento para que otra tarea no
-- intente hacer movimiento en el mismo- -
-- momento. --
-- Mismo tiempo. --
----------------------------------------------------
RUTINA do_work
VAR
time_out: BOOLEANO
16–13
16. MULTITAREA MARRC75KR07091E Rev H
EMPEZAR
FIN tarea_b
Las colas solo se admiten en KAREL. Una cola es una lista de números enteros primero en entrar/primero en salir.
Se utilizan para pasar información a otra tarea de forma secuencial. Una cola consta de una variable de usuario de
tipo QUEUE_TYPE y un ARRAY OF INTEGER. El número máximo de entradas en la cola está determinado por el
tamaño de la matriz.
Estos y otros integrados relacionados con las colas ( DELETE_QUEUE, INSERT_QUEUE, COPY_QUEUE)
se describen enApéndice A.
Ejemplo:El siguiente ejemplo ilustra un servidor de solicitudes más potente, en el que más de una
tarea publica solicitudes y el solicitante no espera a que se complete la solicitud.
16–14
MARRC75KR07091E Rev H 16. MULTITAREA
Solicitante
- - declaraciones
VAR
rqst_queue DESDE servidor: QUEUE_TYPE rqst_data DESDE
servidor: ARRAY[100] OF INTEGER estado:
ENTERO
seq_no: ENTERO
- - publicando en la cola --
APPEND_QUEUE (req_code, rqst_queue, rqst_data, seq_no, estado)
Servidor
PROGRAMA servidor
VAR
rqst_cola: TIPO DE COLA
rqst_data : ARRAY[100] OF INTEGER estado
: ENTERO
seq_no : ENTERO
código_rqst : ENTERO
EMPEZAR
INIT_QUEUE(rqst_queue) - - inicialización
MIENTRAS SEA VERDADERO - - bucle de servicio
ESPERE POR rqst_code.n_entries > 0
GET_QUEUE (rqst_queue, rqst_data, rqst_code, seq_no, status) SELECT rqst_code
OF
CASO (1): hacer_algo
ENDSELECT
ENTREVISTA
Servidor FIN
16–15
Apéndice A
DESCRIPCIÓN ALFABÉTICA DEL
IDIOMA KAREL
Contenido
A-1
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
A–2
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
A–3
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
A–4
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
A–5
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
A–6
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
A–7
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
A–8
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
A–9
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Este apéndice describe, en orden alfabético, cada elemento estándar del lenguaje KAREL, incluyendo:
• Tipos de datos
• Rutinas integradas
• Traductor de directivas
NotaSi, durante la ejecución del programa, se encuentran variables no inicializadas como argumentos
para las rutinas integradas, el programa se detiene y se muestra un error. Inicialice la variable,
comando KCL> SET VARIABLE, o cancele el programa, usando el comando KCL> ABORT.
Convenciones
Esta sección describe cada elemento estándar del lenguaje KAREL en orden alfabético. Cada
descripción incluye la siguiente información:
• Sintaxis:Describe la sintaxis adecuada necesaria para acceder al elemento en KAREL. La Tabla A-1
describe la notación de sintaxis que se utiliza.
A–10
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Si el incorporado es una función, se utiliza la siguiente notación para identificar el tipo de datos del valor
devuelto por la función:
Los tipos de datos de parámetros de entrada y salida para funciones y procedimientos se identifican como:
dónde :
[out] especifica el tipo de datos de los parámetros que se devuelven al programa desde la rutina
• Detalles:Enumera reglas específicas que se aplican al elemento de idioma. Se utiliza una fuente de tipo cursiva para indicar las
palabras clave ingresadas por el usuario dentro de la sintaxis del elemento.
• Ver también:Remite al lector a lugares en el documento donde se puede encontrar más información.
A–11
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
ABORTAR Acción
Acción de asignación
CANCELAR Acción
SEGUIR Acción
CONDICIÓN Acción
DESHABILITAR
HABILITARCONDICIÓN Acción
ESPERA Acción
Acción NO ABORTAR
Acción SIN MENSAJE
Acción SIN PAUSA
PAUSA Acción
ID_Puerto Acción
LEGUMBRES Acción
REANUDAR Acción
EVALUAR Cláusula
DE Cláusula
Cláusula IN
CUANDO Cláusula
CON Cláusula
A–12
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
ABORTAR Condición
SEGUIR Condición
ERROR Condición
EVENTO Condición
PAUSA Condición
ID_Puerto Condición
Relacional Condición
SEMÁFORO Condición
A–13
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
%ALFABETIZAR
%CMOSVARS
%CMOS2SOMBRA
%COMENTARIO
%DISPOSITIVO CRT
%DEFGRUPO
%DEMORA
%AMBIENTE
%INCLUIR
%GRUPO DE BLOQUEO
%NOABORTAR
%NOBUSYLAMP
%NOLOCKGROUP
%SIN PAUSA
%NOPAUSESHFT
%PRIORIDAD
%VARIOS DE SOMBRA
%TAMAÑO DE LA PILA
%PORCIÓN DE TIEMPO
%TPMOVIMIENTO
%UNINIVARS
Categoría identificador
A–14
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Categoría identificador
LOAD_STATUS RENAME_VAR
Espejo ESPEJO
Control
A–15
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Categoría identificador
Traducir TRADUCIR
A-16
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Categoría identificador
Elemento de entrada/salida CR
Declaración ABORTAR
Asignación Declaración
ADJUNTAR Declaración
CANCELAR Declaración
CANCELAR EXPEDIENTE Declaración
CERCA EXPEDIENTE Declaración
CERCA MANODeclaración
CONDICIÓN..CONDICIÓN FIN Declaración
A–17
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
ABIERTO MANODeclaración
PAUSA Declaración
PROGRAMA Declaración
LEGUMBRES Declaración
Sintaxis:ABORTAR <PROGRAMA[n]>
Detalles:
A–18
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• Si la ejecución de la tarea está en ejecución o en pausa, la acción ABORT cancelará la ejecución de la tarea.
• La acción ABORT puede ir seguida de la cláusula PROGRAM[n], dondenortees el número de tarea que se va a
cancelar. Utilice GET_TASK_INFO para obtener un número de tarea.
Sintaxis:ABORTAR <PROGRAMA[n]>
• La condición ABORT se cumple cuando se aborta la tarea. Se realizarán las acciones especificadas por el
controlador de condiciones.
• Las acciones que son llamadas de rutina no se ejecutarán si se cancela la ejecución de la tarea.
Sintaxis:ABORTAR <PROGRAMA[n]>
A–19
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Ver también:, “Diagramas de sintaxis”, para obtener información adicional sobre la sintaxis.
Parámetros de entrada/salida:
Detalles:
• nombre de la tareaes el nombre de la tarea que se va a cancelar. Si el nombre de la tarea es '*TODAS*', todas las tareas en ejecución o en
pausa se cancelan, excepto las tareas que tienen establecido el atributo "ignorar solicitud de cancelación".
• fuerza_sw,si es verdadero, especifica que se anule una tarea incluso si la tarea tiene configurado "ignorar solicitud de
anulación". fuerza_swse ignora si task_name es '*ALL*'.
• cancelar_mtn_swespecifica si el movimiento se cancela para todos los grupos que pertenecen a la tarea especificada.
A–20
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Ejemplo:Referirse aSección B.10, "Uso de pantallas dinámicas incorporadas" (DYN_DISP.KL), para ver un
ejemplo de programa detallado.
Objetivo:Devuelve el valor absoluto del argumento x, que puede ser una expresión INTEGER
o REAL
Sintaxis:ABS(x)
Parámetros de entrada/salida:
Detalles:
Sintaxis:ACOS(x)
Parámetros de entrada/salida:
[en] x :REAL
Detalles:
• x debe estar entre -1,0 y 1,0; de lo contrario, el programa se cancelará con un error.
• Devuelve el arcocoseno de x.
A–21
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Ejemplo:El siguiente ejemplo establece ans_r en el arcocoseno de -1 y escribe este valor en la pantalla. La
salida para el siguiente ejemplo es de 180 grados.
respuesta_r: real
empezar
respuesta_r = acos (-1)
ESCRIBIR ('acos -1', ans_r, CR) FIN
tomar_acos
El segundo ejemplo hace que el programa se cancele ya que el valor de entrada es menor que -1 y no está dentro del
rango válido.
respuesta_r: real
empezar
ans_r = acos (-1.5) -- hace que el programa aborte ESCRIBIR
('acos -1.5 ', ans_r, CR)
FIN take_acos
Sintaxis:ACT_PANTALLA
Parámetros de entrada/salida:
Detalles:
• Hace que se borre el dispositivo de visualización asociado con la pantalla y que se muestren todas las ventanas
adjuntas a la pantalla.
A-22
Traducido del inglés al español - www.onlinedoctranslator.com
• Nombre de pantalladebe ser una cadena que contenga el nombre de una pantalla previamente definida,
consulte DEF_SCREEN Built-in.
• Requiere seleccionar el menú USER o USER2 antes de activar la nueva pantalla, de lo contrario el estado
se establecerá en 9093.
— Para forzar la selección del menú de usuario del Teach Pendant antes de activar la pantalla,
use FORCE_SPMENU (tp_panel, SPI_TPUSER, 1).
— Para forzar la selección del menú de usuario de CRT/KB antes de activar la pantalla,
utilice FORCE_SPMENU (crt_panel, SPI_TPUSER, 1).
• Si se sale del menú USUARIO y se vuelve a entrar, su pantalla se reactivará siempre que la tarea KAREL llamada
ACT_SCREEN continúe ejecutándose. Cuando se aborte la tarea KAREL, se reactivará la pantalla de usuario del
sistema. Referirse aSección 7.10para obtener detalles sobre la pantalla de usuario del sistema.
Objetivo:Actúa sobre una tecla mientras muestra una tabla en el colgante de enseñanza
Parámetros de entrada/salida:
Detalles:
A–23
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
• Las rutinas integradas INIT_TBL y ACT_TBL solo deben usarse en lugar de DISCTRL_TBL si es necesario realizar un
procesamiento especial con cada pulsación de tecla o si es necesario realizar un procesamiento de tecla de
función sin salir del menú de la tabla.
• El INIT_TBL incorporado debe llamarse antes de usar este incorporado. No continúe si ocurre un
error en INIT_TBL.
• accióndebe ser una de las constantes definidas en el archivo de inclusión KLEVKEYS.KL. ACT_TBL actuará sobre la
clave y regresará. Las siguientes teclas tienen significados especiales:
— ky_disp_updt (Visualización inicial): se muestra el título de la tabla, se muestran las etiquetas de las teclas de función. El
elemento predeterminado se muestra y se resalta en la primera línea. Se muestran las líneas restantes. La
visualización dinámica se inicia para todos los valores. Esta debería ser la primera clave pasada a ACT_TBL.
— ky_reissue (Leer clave) - ACT_TBL lee una clave, actúa sobre ella y la devuelve enacción.
— ky_cancel (Cancelar tabla) - Se cancela toda visualización dinámica. Esta debería ser la
última clave pasada a ACT_TBL si term_char no es igual a ky_new_menu. Si se seleccionó
un nuevo menú, ACT_TBL ya habrá cancelado la visualización dinámica y no debe usar
ky_cancel.
• def_itemes la fila que contiene el elemento que desea resaltar cuando se ingresa a la tabla. A la vuelta,
def_itemes la fila que contiene el elemento que estaba actualmente resaltado cuando se presionó el
carácter de terminación.
• tabla_datosse utiliza para mostrar y controlar la tabla.No cambie estos datos; se usa internamente.
• term_charrecibe un código que indica el carácter u otra condición que terminó la tabla. Los códigos para las
condiciones de terminación clave se definen en el archivo de inclusión KLEVKEYS.KL. Las claves que normalmente se
devuelven son constantes predefinidas de la siguiente manera:
• adjuntar_vientodebe establecerse en TRUE si el administrador de tablas debe conectarse a los dispositivos de visualización cuando
la acción es ky_disp_updt y desconectarse de los dispositivos de visualización cuando la acción es ky_cancel. Si ya está adjunto, este
parámetro se puede establecer en FALSO. Por lo general, esto debería ser VERDADERO.
Objetivo:Para agregar un valor entero, real o de cadena en un byte KAREL dado un búfer de datos.
A–24
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Parámetros de entrada/salida:
Detalles:
• nombre_var-se refiere a una variable de programa estática. Esto solo es compatible con una variable entera, real o
de cadena (no se admiten matrices ni estructuras).
CONSTITUCIÓN
er_abortar = 2
VAR
búfer_dat: MATRIZ[100] DE BYTE
índice: ENTERO
estado: ENTERO
EMPEZAR
índice = 1
ADD_BYNAMEPC(dat_buffer,index, IF 'DATOS DE PRUEBA', 'ÍNDICE', estado)
status<>0 THEN
POST_ERR(estado,'',0,er_abortar) ENDIF
A–25
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
FIN testbynm
Parámetros de entrada/salida:
Detalles:
• file_nameespecifica el dispositivo, la ruta y el nombre de archivo del archivo de diccionario que se va a agregar. Se supone que el tipo
de archivo es '.TX' (archivo de texto).
• nombre_dictespecifica el nombre del diccionario que se utilizará al leer y escribir elementos del
diccionario. Solo se utilizan 4 caracteres.
dp_predeterminado
dp_inglés
dp_japonés
dp_frances
dp_german
dp_español
A–26
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
dp_dram El diccionario se cargará en la memoria DRAM y se conservará hasta el próximo INIT START.
Objetivo:Para agregar un valor INTEGER (escriba 16 - 10 HEX) en un búfer de datos de bytes KAREL.
Parámetros de entrada/salida:
Detalles:
Los ADD_BYNAMEPC, ADD_INTPC, ADD_REALPC y ADD_STRINGPC incorporados de KAREL se pueden usar para
formatear un búfer de bytes de KAREL de la siguiente manera: Los datos INTEGER se agregan al búfer de la siguiente
manera (los bytes del búfer se muestran en HEX):
A–27
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
4 bytes - el número
El siguiente es un ejemplo de un INTEGER colocado en una matriz de bytes KAREL que comienza en index = 1:
0 10 0 0 0 5 0 0
dónde:
0 0 0 5=número entero 5
Objetivo:Para agregar un valor REAL (escriba 17 - 11 HEX) en un búfer de datos de bytes KAREL.
Parámetros de entrada/salida:
Detalles:
A–28
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Los ADD_BYNAMEPC, ADD_INTPC, ADD_REALPC y ADD_STRINGPC incorporados de KAREL se pueden usar para
formatear un búfer de bytes de KAREL de la siguiente manera:
Los datos REALES se agregan al búfer de la siguiente manera (los bytes del búfer se muestran en HEX):
4 bytes - el número
El siguiente es un ejemplo de un REAL colocado en una matriz de bytes KAREL que comienza en el índice = 1:
0 11 43 CA CC CD 0 0
dónde:
Objetivo:Para agregar un valor de cadena (tipo 209 - D1 HEX) en un búfer de datos de bytes KAREL.
Parámetros de entrada/salida:
A–29
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Detalles:
Los ADD_BYNAMEPC, ADD_INTPC, ADD_REALPC y ADD_STRINGPC incorporados de KAREL se pueden usar para
formatear un búfer de bytes de KAREL de la siguiente manera:
bytes de texto
El siguiente es un ejemplo de una CADENA colocada en una matriz de bytes KAREL que comienza en el índice = 1:
0 D1 7 4D 48 53 48 45 4C 4C 0 0 0
dónde:
A–30
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Objetivo:Especifica que las variables estáticas se crearán en orden alfabético cuando se cargue el código p.
Sintaxis:%ALFABETIZAR
Detalles:
Sintaxis:APPEND_NODE(ruta_var, estado)
Parámetros de entrada/salida:
Detalles:
A–31
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
• El nodo PATH adjunto no está inicializado. Se pueden asignar valores al nodo haciendo referencia
directa a su estructura NODEDATA.
Ejemplo:Referirse aSección B.2, "Copia de variables de ruta" (CPY_PTH.KL), para ver un ejemplo de programa
detallado.
Parámetros de entrada/salida:
Detalles:
• estadose devuelve con el cero si se puede agregar una entrada a la cola. De lo contrario, se devuelve con
61001, "La cola está llena".
Ver también:DELETE_QUEUE, INSERT_QUEUE Procedimientos integrados. Referirse aSección 16.8, "Uso de colas para
la comunicación de tareas", para obtener más información y un ejemplo.
A–32
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Sintaxis:APROXIMACIÓN (posición)
Parámetros de entrada/salida:
Detalles:
• Devuelve un VECTOR que consta del vector de aproximación (eje z positivo) del argumentoposición.
Ejemplo:Este programa le permite crear una posición que esté a 500 mm de otra posición a lo
largo del eje z.
ENFOQUE Función
PROGRAMA p_enfoque
VAR
start_pos : POSICIÓN
app_vector : VECTOR
EMPEZAR
NotaSe ha dejado el enfoque para versiones anteriores de KAREL. Ahora debería acceder directamente a los
vectores de una POSICIÓN (es decir, enfoque posn.)
Objetivo:Define una variable, tipo de retorno de función o parámetro de rutina como tipo de datos ARRAY
Sintaxis:ARRAY<[tamaño{,tamaño}]> OF tipo_datos
dónde:
A–33
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Detalles:
• Los elementos individuales son referenciados por el nombre ARRAY y el subíndiceTalla.Por ejemplo, table[1]
hace referencia al primer elemento de la tabla ARRAY.
• Un ARRAY completo solo se puede usar en declaraciones de asignación o como argumento en llamadas de rutina.
En una declaración de asignación, ambas variables ARRAY deben ser del mismoTallaytipo de datos.Si Tallaes
diferente, el programa se traducirá correctamente pero se cancelará durante la ejecución, con el error 12304, "No
coincide la longitud de la matriz".
• Tallano se especifica al declarar los parámetros de la rutina ARRAY; un ARRAY de cualquier tamaño se puede
pasar como un parámetro ARRAY a una rutina.
• Tallano se usa cuando se declara un tipo de retorno ARRAY para una función. Sin embargo, el ARRAY
devuelto debe tener el mismo tamaño que el ARRAY al que está asignado en la llamada de función.
• Los operadores de ARRAY válidos corresponden a los operadores válidos de los elementos individuales en el
ARRAY.
• Los elementos individuales de una matriz se pueden leer o escribir solo en el formato que corresponde al tipo de
datos de la ARRAY.
• Se pueden definir matrices de múltiples dimensiones. Consulte el Capítulo 2 para obtener más información.
• Se pueden definir matrices de tamaño variable. Consulte el Capítulo 2 para obtener más información.
Ver también:Función integrada ARRAY_LEN,Capítulo 5RUTINAS,para obtener información sobre cómo pasar variables
ARRAY como argumentos en llamadas de rutinaCapítulo 7OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS
A–34
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Sintaxis:ARRAY_LEN(var_ario)
Parámetros de entrada/salida:
Sintaxis:ASIN(x)
Parámetros de entrada/salida:
[en] x :REAL
Detalles:
• Devuelve el arcoseno de x.
Ejemplo:El siguiente ejemplo establece ans_r en el arcoseno de -1 y escribe este valor en la pantalla. La
salida para el siguiente ejemplo es -90 grados.
A–35
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
EMPEZAR
El segundo ejemplo hace que el programa se cancele ya que el valor de entrada es menor que -1 y no está dentro del
rango válido.
dónde:
Detalles:
• variablepuede ser cualquier variable definida por el usuario, variable del sistema con acceso de escritura o matriz de puertos de
salida con acceso de escritura.
• Una excepción es que se puede asignar una expresión INTEGER a un REAL. Cualquier tipo posicional
se puede asignar entre sí.
A–36
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• Solo las variables del sistema con acceso de escritura (enumeradas como RW en la Tabla 11-3, “Resumen de variables del
sistema”) se pueden usar en el lado izquierdo de una instrucción de asignación. Las variables del sistema con acceso de solo
lectura (RO) o de lectura y escritura (RW) se pueden usar en el lado derecho.
• Las matrices de puertos de entrada no se pueden utilizar en el lado izquierdo de una instrucción de asignación.
Ver también:Capítulo 3USO DE OPERADORES,para obtener información detallada sobre las expresiones y su evaluación
Capítulo 6MANEJADORES DE CONDICIONES,para obtener más información sobre el uso de acciones de asignación.
Ejemplo:El siguiente ejemplo utiliza la acción de asignación para desactivar DOUT[1] y establecerport_var igual
a DOUT[2] cuando EVENT[1] se enciende.
Acción de asignación
CONDICIÓN[1]:
CUANDO EVENTO[1] HACER
SALIDA[1] = APAGADO
port_var = SALIDA[2]
CONDICIÓN FINAL
dónde:
Detalles:
• variablepuede ser cualquier variable definida por el usuario, variable del sistema con acceso de escritura o matriz de puertos de
salida con acceso de escritura.
A–37
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
• Una excepción es que se puede asignar una expresión INTEGER a un REAL. Cualquier tipo
posicional se puede asignar entre sí. INTEGER, SHORT y BYTE se pueden asignar entre sí.
• Sivariablees de tipo ARRAY y no se proporciona ningún subíndice, la expresión debe ser un ARRAY del mismo tipo y
tamaño. Se detectará una falta de coincidencia de tipo durante la traducción. Se detectará una discrepancia de tamaño
durante la ejecución y provocará que el programa se cancele con el error 12304, "Discordancia de longitud de matriz".
• Sivariablees una estructura definida por el usuario y no se proporciona ningún campo, la expresión debe ser una
estructura del mismo tipo.
• Solo las variables del sistema con acceso de escritura (enumeradas como RW en la Tabla 11-3, “Resumen de variables del
sistema”) se pueden usar en el lado izquierdo de una instrucción de asignación. Las variables del sistema con acceso de solo
lectura (RO) o de lectura y escritura (RW) se pueden usar en el lado derecho.
Si las variables del sistema de solo lectura se pasan como parámetros a una rutina, se pasan por valor, por lo
que cualquier intento de modificarlas (con una declaración de asignación) a través del parámetro en la rutina
no tiene efecto.
• Las matrices de puertos de entrada no se pueden utilizar en el lado izquierdo de una instrucción de asignación.
Ver también:Capítulo 3USO DE OPERADORES,para obtener información detallada sobre las expresiones y su
evaluación,Capitulo 2ELEMENTOS DEL LENGUAJE.Consulte el Apéndice B, "Programas de ejemplo de KAREL", para
obtener ejemplos de programas más detallados.
Ejemplo:El siguiente ejemplo asigna un literal INTEGER a una variable INTEGER y luego
incrementa esa variable en un literal y un valor.
Sentencia de asignación
int_var = 5
int_var = 5 + int_var
Ejemplo:El siguiente ejemplo multiplica la variable de sistema $SPEED por un valor REAL. Luego se usa
para asignar la variable ARRAYmatriz_1,elemento loop_count al nuevo valor de la variable de sistema
$SPEED.
Sentencia de asignación
$VELOCIDAD = $VELOCIDAD * .25
array_1[recuento_de_bucles] = $VELOCIDAD
Ejemplo:El último ejemplo asigna todos los elementos del ARRAYmatriz_1a los de ARRAY
matriz_2,y todos los campos de la estructurastruc_var_1a los destruc_var_2.
Sentencia de asignación
matriz_2 = matriz_1
struc_var_2 = struc_var_1
A–38
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Objetivo:Devuelve un ángulo REAL, medido en grados en sentido contrario a las agujas del reloj, desde el eje x
positivo hasta una línea que conecta el origen y un punto cuyas coordenadas x e y se especifican como los
argumentos x e y
Sintaxis:ATAN2(x1, y1)
Parámetros de entrada/salida:
[en] x1 :REAL
[en] y1 :REAL
Detalles:
Ejemplo:El siguiente ejemplo utiliza los valores 100, 200 y 300 respectivamente parax, y,yzpara calcular el
componente de orientacióndirección.La posición,p1entonces se define como una posición con direccióncomo
su componente de orientación.
A–39
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Objetivo:Proporciona al programa KAREL el control del movimiento del brazo robótico y los ejes auxiliares y
extendidos
Sintaxis:ADJUNTAR
Detalles:
• Se utiliza con la instrucción RELEASE. Si el control de movimiento no se libera actualmente del control del
programa, la declaración ATTACH no tiene efecto.
• Si la botonera de programación todavía está habilitada, la ejecución del programa KAREL se retrasa hasta que la botonera de
• Los movimientos detenidos solo se pueden reanudar después de la ejecución de la instrucción ATTACH.
Ver también:Declaración de LIBERACIÓN,Apéndice E, “Diagramas de sintaxis”, para obtener información adicional sobre la sintaxis.
Ejemplo:Referirse aSección B.1, "Configuración de puertos de salida digital para monitoreo" (DOUT_EX.KL) para un
ejemplo de programa detallado.
Parámetros de entrada/salida:
Detalles:
A–40
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• Hace que los datos de la ventana especificada se muestren o se adjunten a la pantalla actualmente activa en el
dispositivo de visualización especificado.
• filaycolumnaindicar la posición en la pantalla. La fila 1 indica la fila superior; col 1 indica la columna más a
la izquierda. Toda la ventana debe ser visible en la pantalla donde se ubique. Por ejemplo, si la pantalla
tiene 24 filas por 80 columnas (como lo define su dispositivo de visualización asociado) y la ventana tiene 2
filas por 80 columnas,filadebe estar en el rango 1-23;columnadebe ser 1.
• El nombre de la pantalla activa se devuelve enNombre de pantalla.Esto se puede usar para separar la ventana más
tarde.
Parámetros de entrada/salida:
Detalles:
• Hace que los datos de la ventana especificada se muestren o adjunten a la pantalla especificada en una fila
y columna especificadas.
A–41
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
• filaycolumnaindicar la posición en la pantalla. La fila 1 indica la fila superior; col 1 indica la columna más a la
izquierda. Toda la ventana debe ser visible en la pantalla tal como está colocada. Por ejemplo, si la pantalla tiene
24 filas por 80 columnas (como lo define su dispositivo de visualización asociado) y la ventana tiene 2 filas por 80
columnas, la fila debe estar en el rango 1-23; col debe ser 1.
• Si la pantalla está actualmente activa, los datos se mostrarán inmediatamente en el dispositivo. De lo contrario, no
hay cambio en los datos mostrados.
Ejemplo:Referirse aSección B.12, "Visualización de una lista desde un archivo de diccionario" (DCLST_EX.KL), para ver un
ejemplo de programa detallado.
Parámetros de entrada/salida:
Detalles:
• id_abiertoespecifica el programa del Teach Pendant abierto. Se debe abrir un programa antes de llamar a este
incorporado.
A–42
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Objetivo:Define una variable, tipo de retorno de función o parámetro de rutina como un tipo de datos BOOLEAN
Sintaxis:BOOLEANO
Detalles:
• El tipo de datos BOOLEAN representa las constantes BOOLEAN predefinidas VERDADERO, FALSO, ENCENDIDO y
APAGADO.
Tabla A–10enumera algunos ejemplos de valores BOOLEAN válidos y no válidos utilizados para representar las
constantes booleanas predefinidas.
• VERDADERO y FALSO normalmente representan banderas lógicas, y ENCENDIDO y APAGADO típicamente representan estados de señal.
VERDADERO y ENCENDIDO son equivalentes, al igual que FALSO y APAGADO.
— Y, O, y NO
— Operadores relacionales (>, >=, =, <>, < y <=)
— Constantes BOOLEAN, ya sean predefinidas o definidas por el usuario (por ejemplo, ON es una constante
predefinida)
— Valores resultantes de expresiones que usan operadores relacionales o BOOLEAN (por ejemplo, x
> 5.0)
— Valores de puertos digitales (por ejemplo, DIN[2])
• Solo las expresiones BOOLEAN pueden asignarse a variables BOOLEAN, devolverse desde rutinas de
funciones BOOLEAN o pasarse como argumentos a parámetros BOOLEAN.
A–43
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Objetivo:Permite que un programa KAREL pase una variable, cuyo nombre está contenido en una CADENA, como
parámetro a una rutina KAREL. Esto significa que el programador no tiene que determinar el nombre de la variable
durante la creación y traducción del programa.
Parámetros de entrada/salida:
Detalles:
• Este incorporado solo se puede usar para pasar un parámetro a una rutina KAREL.
• prog_nameespecifica el nombre del programa que contiene la variable especificada. Siprog_name es igual a
” (comillas dobles), entonces la rutina toma por defecto el nombre de la tarea que se está ejecutando.
A–44
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• Sinombre_varno contiene un nombre de variable válido o si la variable no es del tipo esperado como
parámetro de rutina, el programa se cancela.
• El tipo de datos PATH no se puede pasar usando BYNAME. Sin embargo, en su lugar se puede utilizar un tipo definido por el
usuario que sea una RUTA.
Ejemplo:Referirse aSección B.2, "Copia de variables de ruta" (CPY_PTH.KL), para ver un ejemplo de programa
detallado.
Sintaxis:BYTE
Detalles:
• BYTE tiene un rango de (0 ≤n ≥255). No se realiza ninguna verificación no inicializada en los bytes.
• Los BYTE solo se permiten dentro de una matriz o dentro de una estructura.
• Los BYTE se pueden asignar a SHORT y INTEGER, y los SHORT y INTEGER se pueden asignar a
BYTE. Un valor asignado fuera del rango de BYTE se detectará durante la ejecución y hará que el
programa se cancele.
Ejemplo:El siguiente ejemplo define una matriz de BYTE y una estructura que contiene BYTE.
miestructura = ESTRUCTURA
param1: BYTE
param2: BYTE
param3: CORTO
ESTRUCTURA FINAL
VAR
array_byte: ARRAY[10] OF BYTE myvar:
mystruct
EMPEZAR
matriz_byte[1] = 254
myvar.param1 = matriz_byte[1]
FINAL byte_ex
A–45
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Objetivo:Devuelve el número de bytes de datos de entrada actualmente en el búfer de lectura anticipada de un archivo
KAREL. Permite que los programas KAREL comprueben instantáneamente si se han recibido datos de un puerto serie y están
disponibles para ser leídos por el programa. BYTES_AHEAD también es compatible con mensajes de socket y canalizaciones.
Parámetros de entrada/salida:
Detalles:
• losfile_iddebe abrirse con el atributo ATR_READAHD establecido en un valor mayor que cero.
Ejemplo:El siguiente ejemplo borrará el Puerto 2 (FLPY:) de cualquier byte que aún quede por leer.
A–46
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Sintaxis:BYTES_LEFT(id_archivo)
Parámetros de entrada/salida:
Detalles:
• Si no se han realizado operaciones de lectura o escritura o si la última operación fue un READ file_id (CR), se
devuelve un cero.
• Sifile_idno corresponde a un archivo abierto o uno de los "archivos" predefinidos abiertos en las
respectivas ventanas CRT/KB, Teach Pendant y Vision, el programa se cancela.
NotaSe crea un carácter de entrada (LF) cuando se presiona la tecla ENTER y se cuenta por
BYTES_LEFT.
• Esta función devolverá un valor distinto de cero solo cuando los datos se ingresen desde un teclado (teach pendant o CRT/
KB), no desde archivos o puertos.
A–47
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Advertencia
Esta función se utiliza exclusivamente para leer desde una ventana para
determinar si se han ingresado más datos. No utilice esta función con ningún
otro dispositivo de archivo. De lo contrario, podría lesionar al personal o dañar
el equipo.
Ver también:Sección 7.10.1, "Menú de usuario en el Teach Pendant",Sección 7.10.2, "Menú de usuario en
CRT/KB"
Ejemplo:El siguiente ejemplo lee el primer número,campo_qd,y luego usa BYTES_LEFT para
determinar si el usuario ingresó algún número adicional. Si es así, se leen estos números.
predeterminado_1 = 0
predeterminado_2 = -1
VAR rqd_field, opt_field_1, opt_field_2: INTEGER BEGIN
Objetivo:Permite que un programa KAREL llame a un programa externo KAREL o de programación. Esto significa
que el programador no tiene que determinar el programa a llamar hasta el tiempo de ejecución.
Sintaxis:CALL_PROG(nombre_prog, índice_prog)
A–48
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Parámetros de entrada/salida:
Detalles:
Ejemplo:Referirse aSección B.2, "Copia de variables de ruta" (CPY_PTH.KL), para ver un ejemplo de programa
detallado.
Objetivo:Permite que un programa KAREL llame a un programa externo KAREL o de programación, comenzando en
una línea específica. Esto significa que el programador no necesita saber, en la creación y traducción, qué programa se
llamará. El programador puede decidir esto en tiempo de ejecución.
Parámetros de entrada/salida:
Detalles:
A–49
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Ejemplo:Referirse aSección B.5, "Uso de registros integrados" (REG_EX.KL), para ver un ejemplo de programa
detallado.
Sintaxis:CANCELAR <GRUPO[n{,n}]>
Detalles:
• Cancela una moción actualmente en curso o pendiente (pero no detenida) para uno o más grupos.
• CANCEL no cancela los movimientos que ya están detenidos. Para cancelar un movimiento que ya está
detenido, utilice la rutina integrada CNCL_STP_MTN.
• Si la cláusula de grupo no está presente, todos los grupos para los que la tarea tiene control (cuando se define la
condición) se cancelarán. En particular, si el programa que contiene la definición del controlador de condiciones
contiene la directiva %NOLOCKGROUP, la acción CANCEL no cancelará el movimiento en ningún grupo.
• Si una moción se cancela y es parte de una moción SIMULTÁNEA o COORDINADA con otros grupos,
se cancelan las mociones de todos los grupos.
• El robot y los ejes auxiliares o extendidos se desaceleran suavemente hasta detenerse. El resto de la
moción se cancela.
Sintaxis:CANCELAR <GRUPO[n{,n}]>
Detalles:
A–50
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• Cancela una moción actualmente en curso o pendiente (pero no detenida) para uno o más grupos.
• CANCEL no cancela los movimientos que ya están detenidos. Para cancelar un movimiento que ya está
detenido, utilice la rutina integrada CNCL_STP_MTN.
• Si la cláusula de grupo no está presente, se cancelarán todos los grupos para los que la tarea tiene
control. En particular, si el programa que usa la instrucción CANCEL contiene la directiva
%NOLOCKGROUP, la instrucción CANCEL no cancelará el movimiento en ningún grupo.
• Si una moción que se cancela es parte de una moción SIMULTÁNEA o COORDINADA con otros grupos, se
cancelan las mociones de todos los grupos.
• El robot y los ejes auxiliares se desaceleran suavemente hasta detenerse. El resto de la moción se
cancela.
• CANCELAR no afecta los movimientos detenidos. Los movimientos detenidos se pueden reanudar.
• Si una rutina de interrupción ejecuta una sentencia CANCEL y la sentencia interrumpida era una sentencia de movimiento,
cuando se reanuda el programa interrumpido, la ejecución normalmente se reanuda con la sentencia que sigue a la
sentencia de movimiento.
• CANCEL podría no funcionar como se esperaba si se usa en una rutina llamada por un controlador de condiciones. Es posible que
el movimiento ya esté en la cola de movimiento detenido antes de llamar a la rutina. Utilice una acción CANCELAR directamente en
el controlador de condiciones para asegurarse de que se cancela el movimiento.
Ver también:Apéndice E, “Diagramas de sintaxis”, para obtener información adicional sobre la sintaxis
dónde:
Detalles:
• La función incorporada IO_STATUS se puede utilizar para determinar si una operación de CANCELAR
ARCHIVO fue exitosa o, si no pudo determinar el motivo de la falla.
A–51
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Ejemplo:El siguiente ejemplo lee un número entero, pero cancela la lectura si se presiona la tecla F1.
CONDICIÓN[1]:
CUANDO TPIN[ky_f1]+ HACER
cancelar_leer
HABILITAR CONDICIÓN[1]
CONDICIÓN FINAL
HABILITAR CONDICIÓN[1]
REPETIR
- - Lee un entero, pero cancela si F1 presiona
CLR_IO_STAT(TPDISPLAY)
ESCRIBIR(CR, 'Ingrese un número entero:
') LEER(int_var)
HASTA FALSO
final can_file_ex
Parámetros de entrada/salida:
A–52
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Detalles:
Ejemplo:Referirse aSección B.12, "Visualización de una lista desde un archivo de diccionario" (DCLST_EX.KL), para ver un
ejemplo de programa detallado.
Parámetros de entrada/salida:
Detalles:
A–53
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Ver también:GET_POS_FRM
Parámetros de entrada/salida:
Detalles:
• Name_spec especifica la cadena para comprobar si hay caracteres no válidos. La cadena puede ser el nombre del
archivo o el nombre del programa. No debe incluir la extensión del archivo o del programa. Este integrado no
maneja nombres de sistemas especiales como *SYSTEM*.
Sintaxis:CHR (código)
Parámetros de entrada/salida:
Detalles:
• códigorepresenta el código numérico del carácter para el juego de caracteres ASCII, gráfico o
multinacional.
A–54
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Sintaxis:CLEAR(file_spec, estado)
Parámetros de entrada/salida:
Detalles:
• file_specespecifica el nombre del programa y el tipo de datos a borrar. Son válidos los siguientes tipos:
sin ext :KAREL o Programa de mando de enseñanza y variables.TP :Programa de mando de enseñanza.PC :Programa de
KAREL.VR :Variables de KAREL
Ejemplo:El siguiente ejemplo borra un programa KAREL, borra las variables de un programa y borra
un programa de consola portátil.
A–55
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Sintaxis:CLEAR_SEMA(semaphore_no)
Parámetros de entrada/salida:
Detalles:
• Todos los semáforos se borran en el arranque en FRÍO. Es una buena práctica borrar un semáforo antes de
usarlo. Antes de que varias tareas comiencen a compartir un semáforo, una y solo una de estas tareas debe
borrar el semáforo.
Objetivo:Rompe la asociación entre una variable FILE y un archivo de datos o puerto de comunicación
dónde:
Detalles:
• file_vardebe ser una variable estática que se haya utilizado en la sentencia OPEN FILE.
• Cualquier dato almacenado en búfer asociado con elfile_varse escribe en el archivo o puerto.
A–56
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Ejemplo:Referirse aSección B.12, "Visualización de una lista desde un archivo de diccionario" (DCLST_EX.KL), para ver un
ejemplo de programa detallado.
dónde:
Detalles:
• El efecto real de la declaración depende de cómo se configuren las señales de MANO en el sistema de E/S.
• El rango válido de valores paramano_numes 1-2. De lo contrario, el programa se cancela con un error.
• La declaración no tiene efecto si el valor demano_numestá dentro del alcance pero la mano no está conectada.
• El programa se cancela con un error si el valor demano_numestá dentro del rango pero la señal de MANO
representada por ese valor no ha sido asignada.
Ver también:Capítulo 15SISTEMA DE ENTRADA/SALIDA,para obtener más información sobre las señales manuales,Apéndice E
, “Diagramas de sintaxis”, para obtener información adicional sobre la sintaxis
Ejemplo:El siguiente ejemplo mueve el robot a la primera posición y cierra la mano especificada por
mano_num.
Sintaxis:CLOSE_TPE(open_id, estado)
Parámetros de entrada/salida:
A–57
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Detalles:
• id_abiertoindica que el programa del colgante de enseñanza se cierre. Todos los programas del Teach Pendant que están
abiertos deben cerrarse antes de que puedan ejecutarse. Cualquier programa no cerrado permanece abierto hasta que el
programa KAREL que lo abrió se cancela o se ejecuta hasta su finalización.
Sintaxis:CLR_IO_STAT(id_archivo)
Parámetros de entrada/salida:
Detalles:
• Provoca el resultado de la última operación enfile_id,que es devuelto por IO_STATUS, para ser borrado a cero.
Ejemplo:Referirse aSección B.12, "Visualización de una lista desde un archivo de diccionario" (DCLST_EX.KL), para ver un
ejemplo de programa detallado.
A–58
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Parámetros de entrada/salida:
Detalles:
• estadose devuelve con cero si los parámetros son válidos y se borra la simulación del puerto
especificado.
Objetivo:Elimina todos los datos del grupo especificado en el registro de posición especificado
Parámetros de entrada/salida:
Detalles:
A–59
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Objetivo:Especifica que el almacenamiento predeterminado para las variables KAREL es memoria permanente
Sintaxis:%CMOSVARS
Detalles:
• Si se especifica %CMOSVARS en el programa, todas las variables estáticas por defecto se crearán en la
memoria permanente.
• Si no se especifica %CMOSVARS, todas las variables estáticas se crearán de forma predeterminada en la memoria
temporal.
• Si un programa especifica %CMOSVARS, pero no es necesario crear todas las variables estáticas en la memoria
permanente, la cláusula IN DRAM se puede usar en las variables seleccionadas.
Objetivo:Indica al traductor que coloque todas las variables CMOS en la memoria Shadow
Sintaxis:%SOMBRA CMOS2
Objetivo:Cancela la visualización dinámica en función del valor de una variable BOOLEAN en una ventana
específica.
A–60
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Parámetros de entrada/salida:
Detalles:
• Si hay más de una pantalla activa para esta variable en esta ventana, todas las pantallas se
cancelan.
• estadodevuelve un error si no hay una visualización dinámica activa especificando esta variable y ventana. Si no
es igual a 0, entonces ocurrió un error.
Objetivo:Cancela la visualización dinámica en función del valor de una variable INTEGER en una ventana
específica.
Parámetros de entrada/salida:
A–61
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Detalles:
Parámetros de entrada/salida:
Detalles:
anteriormente.
A–62
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Objetivo:Cancela la visualización dinámica en función del valor de un puerto en una ventana específica.
Parámetros de entrada/salida:
Detalles:
• Consulte el procedimiento incorporado CNC_DYN_DISB para obtener una descripción de los otros parámetros enumerados
anteriormente.
Objetivo:Cancela la visualización dinámica de una variable de número REAL en una ventana específica.
Parámetros de entrada/salida:
A–63
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Detalles:
• Consulte el procedimiento incorporado CNC_DYN_DISB para obtener una descripción de los otros parámetros enumerados
anteriormente.
Parámetros de entrada/salida:
Detalles:
anteriormente.
A–64
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Sintaxis:CNCL_STP_MTN
• Todos los movimientos detenidos se cancelarán para todos los grupos que controla el programa.
Ejemplo:El siguiente ejemplo cancelará todos los movimientos detenidos para todos los grupos que controla el programa después
de que se haya producido una parada de emergencia.
CNCL_STP_MTN
FIN e_stop_hndlr
CONDICIÓN[100]:
CUANDO ERROR[parar] HACER
DESPAUSAR
HABILITAR CONDICIÓN[100]
e_stop_hndlr
FINAL CONDICIÓN
HABILITAR CONDICIÓN[100]
Parámetros de entrada/salida:
A–65
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Detalles:
• objetivodebe ser lo suficientemente largo para aceptar una cadena de configuración válida para el brazo robótico
conectado al controlador. De lo contrario, el programa se cancelará con un error.
Usar una longitud de 25 generalmente es adecuado porque la cadena de configuración más larga de cualquier robot
tiene 25 caracteres.
• La máscara de configuración degrupo_nose utiliza durante la conversión. Sigrupo_nose omite, luego se asume el grupo
predeterminado para el programa.
Sintaxis:CNV_CONF_STR(origen, destino)
Parámetros de entrada/salida:
Detalles:
A–66
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• objetivodebe ser lo suficientemente largo para aceptar una cadena de configuración válida para el brazo robótico
conectado al controlador. De lo contrario, el programa se cancelará con un error.
Usar una longitud de 25 generalmente es adecuado porque la cadena de configuración más larga de cualquier robot
tiene 25 caracteres.
Parámetros de entrada/salida:
Detalles:
• longitudespecifica la longitud mínima de laobjetivo.La longitud real deobjetivopuede ser mayor si se requiere
para contener el contenido defuentey al menos un espacio en blanco inicial.
• Siobjetivono se declara lo suficientemente largo para contenerfuentey al menos un espacio en blanco inicial, se devuelve con un
espacio en blanco y el resto de su longitud declarada se completa con "*".
A–67
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Objetivo:Permite que un programa KAREL examine ángulos de articulaciones individuales como valores REALES
Parámetros de entrada/salida:
Detalles:
• pos_juntoses uno de los tipos de datos de posición conjunta de KAREL: JOINTPOS o JOINTPOS1 a
JOINTPOS9.
• num_articulacionespuede ser menor que el número de juntas en el sistema. Se puede utilizar un valor de nueve si se
desconoce el número real de articulaciones. El conjunto número uno se almacenará enmatriz_realelemento número uno,
etc. Se ignorarán los elementos de matriz en exceso.
A–68
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Parámetros de entrada/salida:
Detalles:
• Si la longitud declarada deobjetivono es lo suficientemente grande para contenerfuentecon un espacio en blanco inicial,
objetivo se devuelve con un espacio en blanco inicial y el resto de su longitud declarada llena de "*" (asteriscos).
Ejemplo:El siguiente ejemplo convierte el número REAL encur_voltiosen una STRING y la pone en
cadena_de_voltios.La longitud mínima decur_voltiosse especifica que tiene siete caracteres con dos
caracteres después del punto decimal. Los contenidos decadena_de_voltiosluego se muestra en la pantalla.
Objetivo:Permite que un programa KAREL manipule ángulos individuales de una posición conjunta
Parámetros de entrada/salida:
A–69
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Detalles:
• matriz_realdebe tener un tamaño declarado, igual o mayor que el número de juntas en el sistema. Se puede usar un valor
de nueve paranum_articulaciones,si se desconoce el número real de juntas. El elemento de matriz número uno se
almacenará en el conjunto número uno, y así sucesivamente. Se ignorarán los elementos de matriz en exceso. Si la matriz
no es lo suficientemente grande, el programa se cancelará con un error de argumento no válido.
• Si alguno de los elementos dematriz_realque corresponden a un ángulo de articulación no están inicializados, el programa
se pausará con un error de variable no inicializado.
Parámetros de entrada/salida:
A–70
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Detalles:
• fuentedebe ser una cadena de configuración válida para el brazo robótico conectado al controlador.
Sintaxis:CNV_STR_INT(origen, destino)
Parámetros de entrada/salida:
Detalles:
A–71
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Sintaxis:CNV_STR_REAL(origen, destino)
Parámetros de entrada/salida:
Detalles:
• Sifuenteno es una representación decimal válida de un número REAL,objetivose establecerá sin inicializar.
fuentepuede contener notación científica de la formann.nnEsnndóndeses un signo + o -.
Sintaxis:CNV_STR_TIME(origen, destino)
Parámetros de entrada/salida:
A–72
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Detalles:
• objetivose puede utilizar con el procedimiento incorporado SET_TIME para restablecer la hora en el
sistema. Si objetivoes 0, la hora en el sistema no cambiará.
Ejemplo:El siguiente ejemplo convierte la variable STRINGstr_time,entrada por el usuario en formato “DD-
MMM-YYY HH:MM:SS”, a la representación INTEGER del tiempoint_timeutilizando el procedimiento
CNV_STR_TIME. A continuación, SET_TIME se utiliza para establecer la hora dentro del sistema KAREL a la hora
especificada porint_time.
Sintaxis:CNV_TIME_STR(origen, destino)
Parámetros de entrada/salida:
Detalles:
A–73
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Ejemplo:Referirse aSección B.9, "Uso de las funciones integradas de archivo y dispositivo" (FILE_EX.KL), para obtener un ejemplo de
programa detallado.
Sintaxis:%COMENTARIO = 'ssssssssssssssss'
Detalles:
• Durante el tiempo de carga, el comentario se almacenará como un atributo del programa y se puede mostrar en
la consola portátil o CRT/KB.
• %COMMENT debe usarse después de la instrucción PROGRAM, pero antes de cualquier sección CONST,
TYPE o VAR.
A–74
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Parámetros de entrada/salida:
[en] ascii_flag:BOOLEANO
Detalles:
• fipastoespecifica el dispositivo, el nombre y el tipo de archivo que se va a comparar. Si no se especifica ningún dispositivo, se utiliza el
dispositivo predeterminado. Debe especificar tanto un nombre como un tipo.
• filebespecifica el dispositivo, el nombre y el tipo de archivo que se va a comparar. Si no se especifica ningún dispositivo, se utiliza el
dispositivo predeterminado. Debe especificar tanto un nombre como un tipo.
• resultado_archivodebe ser una variable de ARCHIVO abierta abierta para escritura. El resultado de la comparación se
escribirá en este ARCHIVO.
• bandera_asciiespecifica que los archivos deben compararse en función del contenido ASCII (texto).
El siguiente ejemplo ilustra cómo se puede utilizar esta función integrada para detectar si algún programa de TP ha
cambiado desde que se guardó una copia de referencia en MC:\ref. Para probar esto, copie md:*.ls a mc:\ref (u otra área
de almacenamiento de archivos de su elección) y luego ejecute este programa.
---------------------------------------------------------------
Compfiles de PROGRAMA
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - VAR
estado: entero
prog_name: cadena[128]
archivo de registro: archivo
A–75
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
EMPEZAR
prog_name = '*'
índice = 0
n_progs = 1
diff_count=1
IF unidad (tempstore) DESPUÉS
COMPARE_FILE('MD:\' + archivo_ario[índice]+'.LS',
tempstore + '\' + file_ary[index]+'.LS', logfile, TRUE, diff_count, estado)
escribir archivo de registro ('Comparado' + archivo_ario[índice], ' ', estado, ' ',
diff_count, ' ', índice, CR)
ENDFOR
CERRAR ARCHIVO archivo de registro
Sintaxis:CONDICIÓN[cond_hand_no]: [with_list]
A–76
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
CONDICIÓN FINAL
Detalles:
• El [with_list] opcional se puede usar para especificar calificadores de manejadores de condiciones. Consulte la cláusula
WITH para obtener más información.
• Todas las condiciones enumeradas en una sola cláusula WHEN deben cumplirse simultáneamente para que se active
el controlador de condiciones.
• Las condiciones múltiples deben estar separadas por el operador AND o el operador OR. No se
permite mezclar AND y OR.
• Las acciones enumeradas después de DO deben realizarse cuando las condiciones correspondientes de una
cláusula WHEN se cumplen simultáneamente.
• Las acciones múltiples están separadas por una coma o en una nueva línea.
• El controlador de condiciones está inicialmente deshabilitado y se vuelve a deshabilitar cada vez que se activa. Utilice la
instrucción o acción ENABLE, especificando el número del manejador de condiciones, para habilitarlo.
• El manejador de condiciones permanece definido y puede ser reactivado posteriormente por la declaración o
acción ENABLE.
• Los manejadores de condiciones solo son conocidos por la tarea que los define. Dos tareas diferentes pueden
usar el mismocond_hand_noaunque especifican condiciones diferentes.
Ver también:Capítulo 6MANEJADORES DE CONDICIONES,Apéndice E, “Diagramas de sintaxis”, para obtener información adicional
sobre la sintaxis
A–77
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Sintaxis:CONFIGURAR
Detalles:
• CONFIG define un campo variable o de estructura como una estructura muy compacta que consta de campos que
definen una configuración de robot.
— CFG_TURN_NO1 :ENTERO
— CFG_TURN_NO2 :ENTERO
— CFG_TURN_NO3 :ENTERO
— CFG_FLIP :BOOLEANO
— CFG_IZQUIERDA :BOOLEANO
— CFG_UP :BOOLEANO
— CFG_FRONT:BOOLEANO
• Las variables y campos de estructuras se pueden declarar como CONFIG.
• Se puede acceder a los subcampos del tipo de datos CONFIG y configurarlos usando la notación de campo de estructura habitual.
• Cada subcampo de una variable CONFIG o campo de estructura se puede pasar como parámetro a una rutina,
pero siempre se pasa por valor.
• Un intento de asignar un valor a un subcampo CONFIG que es demasiado grande para el campo da como resultado un error de
cancelación.
Ejemplo:El siguiente ejemplo muestra cómo se puede acceder a los subcampos de la estructura CONFIG y establecerlos
utilizando la notación estructura.campo habitual.
VAR
config_var1, config_var2: CONFIGURAR
pos_var: POSICIÓN
ruta_costura: SENDERO
A–78
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
i: ENTERO
EMPEZAR
config_var1 = pos_var.config_data
config_var1 = config_var2
config_var1.cfg_turn_no1 =0
IF pos_var.config_data.cfg_flip FOR i = 1 TO DESPUÉS...
PATH_LEN(seam_path) DO
seam_path[i].node_pos.config_data = ENDFOR config_var1
Objetivo:Hace que una variable INTEGER comience a actualizarse como un reloj de milisegundos
dónde:
Detalles:
• Deberías inicializarreloj_varantes de usar la instrucción CONNECT TIMER para garantizar un valor inicial
adecuado.
• Si la variable no está inicializada, permanecerá así durante un breve período de tiempo (hasta 32 milisegundos) y
luego se establecerá en un valor negativo muy grande (-2.0E31 + 32 milisegundos) y se incrementará a partir de
ese valor.
• Areloj_varinicializado en cero, pasa de aproximadamente dos mil millones a aproximadamente menos dos mil
millones después de aproximadamente 23 días.
• Sireloj_vares una variable del sistema o una variable local en una rutina, el programa no se puede traducir.
NotaSi se ejecutan dos sentencias CONNECT TIMER que usan la misma variable en dos tareas
diferentes, el temporizador avanzará el doble de rápido. Por ejemplo, el temporizador se
incrementará en 2 * $SCR.$COND_TIME cada $SCR.$COND_TIME ms. Sin embargo, esto no ocurre si se
ejecutan dos o más sentencias CONNECT TIMER que utilizan la misma variable en la misma tarea.
Ver también:Apéndice Epara obtener información adicional sobre la sintaxis, DISCONNECT TIMER Sentencia
A–79
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Sintaxis:CONTINUAR <PROGRAMA[n]>
Detalles:
• Si la ejecución del programa está en pausa, la acción CONTINUAR continuará la ejecución del programa.
• La acción CONTINUAR puede ir seguida de la cláusula PROGRAM[n], donde n es el número de la tarea que debe continuar.
Utilice GET_TSK_INFO para obtener un número de tarea para un nombre de tarea específico.
• Una tarea puede estar en una rutina de interrupción cuando se ejecuta CONTINUAR. Sin embargo, debe tener en cuenta
las siguientes circunstancias porque CONTINUAR solo afecta el nivel de interrupción actual y los niveles de interrupción de
una tarea pueden pausarse o ejecutarse de forma independiente.
— Si tanto la rutina de interrupción como la tarea están en pausa, CONTINUAR continuará con la rutina de interrupción,
pero la tarea permanecerá en pausa.
— Si la rutina de interrupción se está ejecutando y la tarea está en pausa, parecerá que CONTINUAR no tiene ningún
efecto porque intentará continuar con la rutina de interrupción en ejecución.
— Si la rutina de interrupción está en pausa y la tarea se está ejecutando, CONTINUAR continuará con la rutina de
interrupción.
Ejemplo:Referirse aSección B.1, "Configuración de puertos de salida digital para monitoreo" (DOUT_EX.KL) para un
ejemplo de programa detallado.
Sintaxis:CONTINUAR <PROGRAMA[n]>
Detalles:
A–80
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Si la ejecución del programa está en pausa, la acción CONTINUAR, emitiendo CONTINUAR desde el CRT/KB o un
INICIO DE CICLO desde el panel del operador, continuará la ejecución del programa y cumplirá la condición
CONTINUAR.
• La condición CONTINUAR puede ir seguida de la cláusula PROGRAM[n], donde n es el número de tarea que
debe continuar. Utilice GET_TSK_INFO para obtener el número de tarea de un nombre de tarea especificado.
Ejemplo:En el siguiente ejemplo, se supervisa la ejecución del programa. Cuando se continúa con el
programa, se activará una salida digital.
CONTINUAR Condición
CONDICIÓN[1]:
CUANDO CONTINUAR DO DOUT[1] = EN
CONDICIÓN FINAL
Sintaxis:CONT_TASK(tarea_nombre, estado)
Parámetros de entrada/salida:
Detalles:
• Una tarea puede estar en una rutina de interrupción cuando se ejecuta CONT_TASK. Sin embargo, debe tener en
cuenta las siguientes circunstancias porque CONT_TASK solo afecta el nivel de interrupción actual y los niveles de
interrupción de una tarea pueden pausarse o ejecutarse de forma independiente.
— Si tanto la rutina de interrupción como la tarea están en pausa, CONT_TASK continuará con la rutina de
interrupción pero la tarea permanecerá en pausa.
— Si la rutina de interrupción se está ejecutando y la tarea está en pausa, parecerá que CONT_TASK no tiene efecto
porque intentará continuar con la rutina de interrupción en ejecución.
— Si la rutina de interrupción está en pausa y la tarea se está ejecutando, CONT_TASK continuará con la rutina
de interrupción.
A–81
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Parámetros de entrada/salida:
Detalles:
• desde el archivoespecifica el dispositivo, el nombre y el tipo de archivo desde el que copiar.desde el archivose puede especificar
utilizando el carácter comodín (*). Si no se especifica ningún dispositivo, se utiliza el dispositivo predeterminado. Debe especificar
tanto un nombre como un tipo. Sin embargo, estos pueden ser un carácter comodín (*).
• archivarespecifica el dispositivo, el nombre y el tipo de archivo en el que se va a copiar.archivarse puede especificar utilizando
el carácter comodín (*). Si no se especifica ningún dispositivo, se utiliza el dispositivo predeterminado.
A–82
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• Sinoesperar_swes TRUE, la ejecución del programa continúa mientras se ejecuta el comando. Si es FALSO, el
programa se detiene, incluidos los controladores de condiciones, hasta que finaliza la operación. Si tiene
manejadores de condiciones críticas de tiempo en el programa, colóquelos en otro programa que se ejecute
como una tarea separada.
Ejemplo:Referirse aSección B.9, "Uso de las funciones integradas de archivo y dispositivo" (FILE_EX.KL), para obtener un ejemplo de
programa detallado.
Objetivo:Copia una ruta completa, parte de una ruta o una ruta en orden de nodo inverso (incluidos los datos
asociados) en otra variable de ruta de tipo idéntico.
Parámetros de entrada/salida:
Detalles:
• fuente_rutaespecifica la ruta de origen desde la que copiar. Esta ruta puede ser una ruta estándar o una ruta definida por el
usuario.
• nodo_inicioespecifica el número del primer nodo a copiar. Un valor de 0 copiará la ruta completa,
incluida la información del encabezado. losnodo_inicioEl número debe estar entre 0 y el número de nodo
más alto en la ruta de origen. De lo contrario, se devolverá el estado de error.
A–83
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
• nodo_finalespecifica el número del último nodo a copiar. Un valor de 0 copiará la ruta completa, incluida la
información del encabezado. losnodo_finalEl número debe estar entre 0 y el número de nodo más alto de la
ruta de origen. De lo contrario, se devolverá el estado de error.
• ruta_destinoespecifica la ruta de destino para copiar. Esta ruta puede ser una ruta estándar o una ruta
definida por el usuario. sin embargo, elruta_destinoEl tipo debe ser idéntico alfuente_rutaescribe. Si no
son idénticos, se devolverá un estado de error.
• estadoSe devuelve 0 si los parámetros son válidos y la operación COPY_PATH se realizó correctamente. El
estado distinto de cero indica que la operación COPY_PATH no tuvo éxito.
NotaPara copiar una ruta completa de una variable de ruta a otra variable de ruta idéntica, configure el
nodo_inicioynodo_finalparámetros a 0 (cero).
Ejecutar el comando COPY_PATH(P1, 2, 5, P2) copiará del nodo 2 al nodo 5 (inclusive) de la ruta P1 al nodo
1 al 4 de la ruta P2, siempre que la longitud de la ruta de P1 sea mayor o igual a 5. la ruta de destino P2 se
convertirá en una ruta de 4 nodos. La ruta de destino original se sobrescribe por completo.
Ejecutar el comando COPY_PATH(P1, 5, 2, P2) copiará del nodo 5 al nodo 2 (inclusive) de la ruta P1 al nodo
1 al 4 de la ruta P2, siempre que la longitud de la ruta de P1 sea mayor o igual a 5. la ruta de destino P2 se
convertirá en una ruta de 4 nodos. La ruta de destino original se sobrescribe por completo.
Ejemplo:Referirse aSección B.2, "Copia de variables de ruta" (CPY_PTH.KL), para ver un ejemplo de programa
detallado.
Objetivo:Copia una o más entradas consecutivas de una cola en una matriz de enteros. Las entradas no se eliminan, sino que
se copian, comenzando con la más antigua y continuando con la más nueva, o hasta que la matriz de salida, o los números
enteros, estén llenos. Un parámetro especifica el número de entradas al principio de la lista (entradas más antiguas) que se
van a omitir.
Parámetros de entrada/salida:
A–84
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Detalles:
• cola_tespecifica la variable de cola para la cola desde la que se leerán los valores.
• cola_datosespecifica la variable de matriz para la cola desde la que se leerán los valores.
• n_saltarespecifica el número de entradas más antiguas que se omitirán. Un valor de cero indica devolver las entradas
más antiguas.
• out_dataes una matriz de enteros en la que se copiarán los valores; el tamaño de la matriz es el
número máximo de valores devueltos.
• n_gotse devuelve con el número de entradas devueltas. Este será uno de los siguientes:
Ejemplo:El siguiente ejemplo obtiene una "página" de una cola de trabajos y llama a una rutina, disp_queue, para
mostrarla. Si no hay entradas para la página, la rutina devuelve FALSO; de lo contrario, la rutina devuelve VERDADERO.
A–85
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
COPY_QUEUE(job_queue, datos_trabajo,
(page_no - 1) * ARRAY_LEN(data_array), 0, data_array,
n_got, estado)
SI (n_got = 0) ENTONCES
FALSO RETORNO)
MÁS
disp_queue(data_array, n_got)
RETORNO (VERDADERO)
TERMINARA SI
FIN disp_page
EMPEZAR
FIN copy_queue_x
Parámetros de entrada/salida:
Detalles:
• from_progespecifica el nombre del programa de la consola portátil, sin la extensión .tp, que se va a copiar.
• a_progespecifica el nuevo nombre del programa del Teach Pendant, sin la extensión .tp, quefrom_prog se
copiará en.
A–86
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Objetivo:Devuelve el coseno REAL del argumento del ángulo REAL, especificado en grados
Parámetros de entrada/salida:
Detalles:
Ejemplo:Referirse aSección B.8, "Generación y movimiento a lo largo de una ruta hexagonal" (GEN_HEX.KL), para ver
un ejemplo de programa detallado.
Objetivo:Se puede usar como un elemento de datos en una declaración de LECTURA o ESCRITURA para especificar un retorno de carro
Sintaxis:RC
Detalles:
• Cuando CR se usa como un elemento de datos en una instrucción READ, especifica que se ignorará cualquier dato
restante en la línea de entrada actual.
• Cuando CR se usa como elemento de datos en una instrucción WRITE, especifica que la salida posterior al mismo
archivo aparecerá en una nueva línea.
Ver también:Apéndice E, “Diagramas de sintaxis”, para obtener información adicional sobre la sintaxis
A–87
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Parámetros de entrada/salida:
Detalles:
• tipo_progespecifica el tipo de programa que se va a crear. Las siguientes constantes son válidas para
el tipo de programa: PT_MNE_UNDEF :TPE programa de subtipo indefinido PT_MNE_JOB :TPE trabajo
PT_MNE_PROC :TPE proceso PT_MNE_MACRO :TPE macro
A–88
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• El programa se crea para hacer referencia a todos los grupos de movimiento en el sistema. El programa se crea sin
ningún comentario ni ningún otro atributo del programa. Una vez que se crea el programa, se puede usar
SET_ATTR_PRG para especificar los atributos del programa.
Parámetros de entrada/salida:
A–89
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Detalles:
• var_prog_namespecifica el nombre del programa en el que se debe crear la variable. Si var_prog_nam es ' ', se usa el
nombre predeterminado, que es el nombre del programa que se está ejecutando actualmente.
• Si se va a crear una variable como un tipo definido por el usuario, el tipo definido por el usuario ya debe estar creado
en el sistema.typ_prog_namespecifica el nombre del programa del tipo definido por el usuario. Si typ_prog_nam es ' ',
se utiliza el valor predeterminado, que es el nombre del programa que se está ejecutando actualmente.
• tipo_namespecifica el nombre de tipo de la variable que se va a crear. Los siguientes nombres de tipo son
válidos:
'ARRAY DE BYTE'
'VARIEDAD DE CORTOS'
'BOOLEANO'
'CAM_SETUP'
'CONFIG'
'EXPEDIENTE'
'ENTERO'
'JOINTPOS'
'JOINTPOS1'
'JOINTPOS2'
'JOINTPOS3'
'JOINTPOS4'
'JOINTPOS5'
'JOINTPOS6'
'JOINTPOS7'
'JOINTPOS8'
A–90
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
'JOINTPOS9'
'MODELO'
'POSICIÓN'
'REAL'
'VECTOR'
'VIS_PROCESO'
'XYZWPR'
'XYZWPREXT'
• núm_grupoespecifica el número de grupo que se utilizará para los tipos de datos posicionales.
• mem_pooles un parámetro opcional que especifica el grupo de memoria a partir del cual se crea la variable.
Si no se especifica, la variable se crea en DRAM, que es una memoria temporal. La variable DRAM debe
volver a crearse en cada encendido y el valor siempre se restablece a no inicializado.
• Simem_pool= -1, luego la variable se crea en CMOS RAM, que es memoria permanente.
Ejemplo:Referirse aSección B.2, "Copia de variables de ruta" (CPY_PTH.KL), para ver un ejemplo de programa
detallado.
Sintaxis:%DISPOSITIVO CRT
A–91
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Detalles:
Ejemplo:Referirse aSección B.2, "Copia de variables de ruta" (CPY_PTH.KL), para ver un ejemplo de programa
detallado que muestra cómo usar este dispositivo.
Objetivo:Devuelve la posición conjunta actual del punto central de la herramienta (TCP) para el grupo de ejes especificado,
incluso si uno de los ejes está en una sobrecarrera
Parámetros de entrada/salida:
Detalles:
A–92
Traducido del inglés al español - www.onlinedoctranslator.com
EMPEZAR
jnt=CURJPOS(0,0)
FIN getpos
Objetivo:Devuelve la posición cartesiana actual del punto central de la herramienta (TCP) para el grupo de ejes especificado,
incluso si uno de los ejes está en una sobrecarrera
Parámetros de entrada/salida:
Detalles:
• Devuelve la posición actual del punto central de la herramienta (TCP) en relación con el valor actual de la
variable de sistema $UFRAME para el grupo especificado.
Ejemplo:Referirse aSección B.5, "Uso de las funciones integradas de registro", para obtener un ejemplo de programa detallado.
A–93
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Sintaxis:CURR_PROG
Detalles:
• La variable asignada a CURR_PROG debe declararse con una longitud de variable de cadena ≥12
Ejemplo:Referirse aSección B.2, "Copia de variables de ruta" (CPY_PTH.KL), para ver un ejemplo de programa
detallado.
Objetivo:Para verificar el estado de una tubería y la cantidad de bytes disponibles para leer desde la tubería.
Parámetros de entrada/salida:
Detalles:
• pipe_states el estado de la tubería devuelta. El estado es una combinación de los siguientes indicadores:
— DAQ_1STRD es cuando la tubería ha sido leída por primera vez (valor = 16).
A–94
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
NotaEste integrado solo está disponible cuando se cargan las opciones de DAQ o monitor de datos.
Parámetros de entrada/salida:
A–95
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Detalles:
• prog_namees el nombre del programa que contiene la variable que se utilizará para escribir en la tubería.
Si se pasa como una cadena vacía, se usa el nombre del programa actual.
• nombre_vares el nombre de la variable que define el tipo de datos que se utilizará para escribir en la tubería. Una vez
registrado, puede escribir cualquier variable de este tipo de datos en la tubería.
• pipe_namees el nombre del archivo de tubería. Por ejemplo, si el nombre de la canalización se pasa como 'foo.dat', se
podrá acceder a la canalización mediante la cadena de archivo 'PIP:FOO.DAT'. Se requiere un nombre de archivo único con
una extensión incluso si la canalización se usa solo para enviar a la PC.
A–96
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Ejemplo:El siguiente ejemplo registra la tubería 1 de KAREL para escribir una variable en el programa.
CONSTITUCIÓN
er_abortar = 2
VAR
estado: ENTERO
variable de datos: ENTERO
EMPEZAR
FIN DAQREG
NotaEste integrado solo está disponible cuando se cargan las opciones de DAQ o monitor de datos.
Parámetros de entrada/salida:
Detalles:
A–97
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
• pipe_modees el modo de salida que se utilizará para la tubería. Se utilizan las siguientes constantes:
— DAQ_SNAPSHT es el modo de instantánea (cada lectura de la tubería dará como resultado todo el contenido de la
tubería).
— DAQ_STREAM es el modo de transmisión (cada lectura del mismo archivo de tubería dará como resultado datos
escritos desde la lectura anterior).
• stream_deves el dispositivo al que se transmitirán automáticamente los registros. Este parámetro se ignora
si el tamaño de flujo se estableció en 0 durante el registro.
CONSTITUCIÓN
er_abortar = 2
VAR
estado: ENTERO
entrada: CADENA[1]
A–98
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
EMPEZAR
POST_ERR(estado,' ',0,er_abort)
TERMINARA SI
TERMINARA SI
TERMINARA SI
FIN DE PIPONOFF
NotaEste integrado solo está disponible cuando se cargan las opciones de DAQ o monitor de datos.
Parámetros de entrada/salida:
Detalles:
A–99
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
NotaEste integrado solo está disponible cuando se cargan las opciones de DAQ o monitor de datos.
Objetivo:Dar de baja una tubería KAREL previamente registrada, para que pueda ser utilizada para otros datos.
Sintaxis:DAQ_UNREG(tubo_num, estado)
Parámetros de entrada/salida:
Detalles:
A–100
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
CONSTITUCIÓN
er_abortar = 2
VAR
estado: ENTERO
EMPEZAR
- - anular el registro de tubería 1
DAQ_UNREG(1, estado)
SI estado<>0 DESPUÉS
POST_ERR(estado,' ',0,er_abort)
TERMINARA SI
FIN DAQUNREG
NotaEste integrado solo está disponible cuando se cargan las opciones de DAQ o monitor de datos.
Parámetros de entrada/salida:
Detalles:
A–101
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
• prog_namees el nombre del programa que contiene la variable a escribir. Si se pasa como una
cadena vacía, se usa el nombre del programa actual.
Ejemplo:El siguiente ejemplo registra la tubería KAREL 2 y escribe en ella cuando la tubería está activa.
%AMBIENTE SYSDEF
CONSTITUCIÓN
er_abortar = 2
ESCRIBE
daq_data_t = ESTRUCTURA
contar: ENTERO
valor de datos: ENTERO
ESTRUCTURA FINAL
VAR
estado: ENTERO
pipestat: ENTERO
números bytes: ENTERO
variable de datos: daq_data_t
EMPEZAR
A–102
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
TERMINARA SI
NotaEste integrado solo está disponible cuando se cargan las opciones de DAQ o monitor de datos.
Sintaxis:%DEFGRUPO = n
Detalles:
Parámetros de entrada/salida:
A–103
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Detalles:
• Defina una pantalla, asociada con un dispositivo de visualización específico, a la que se pueden adjuntar y
activar (mostrar) ventanas.
• Nombre de pantalladebe ser un nombre único y válido (cadena), de uno a cuatro caracteres de largo.
• disp_dev_namedebe ser uno de los dispositivos de visualización ya definidos; de lo contrario, se devuelve un error. Los
siguientes son los dispositivos de visualización predefinidos:
Ejemplo:Referirse aSección B.12, "Visualización de una lista desde un archivo de diccionario" (DCLST_EX.KL), para ver un
ejemplo de programa detallado.
Parámetros de entrada/salida:
Detalles:
A–104
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• Defina una ventana que se pueda adjuntar posteriormente a una pantalla, tener archivos abiertos en ella,
escribirse o hacer eco de entrada en ella, y mostrar información dinámicamente en ella.
• nombre_ventanadebe ser una cadena de nombre válida, de uno a cuatro caracteres de largo, y no debe duplicar una
ventana con el mismo nombre.
0 :Sin opción
• Si se especifica un cursor común, dondequiera que una escritura deje el cursor, será donde irá la siguiente escritura,
independientemente de la variable de archivo utilizada. Además, cualquier atributo de visualización establecido para cualquier
variable de archivo asociada con esta ventana se aplicará a todas las variables de archivo asociadas con la ventana. Si no se
especifica, la posición del cursor y los atributos de visualización (excepto los atributos de tamaño de carácter, que siempre se
aplican a la línea actual de una ventana) se mantienen por separado para cada variable de archivo abierta en la ventana. El atributo
de cursor común es útil para ventanas en las que se puede escribir más de una tarea y donde estas escrituras deben aparecer de
extremo a extremo. Un ejemplo podría ser una pantalla de registro.
• Si se especifica el desplazamiento vertical y se recibe un carácter de salto de línea, de nueva línea o de índice hacia abajo
y el cursor está en la línea inferior de la ventana, todas las líneas excepto la línea superior se mueven hacia arriba y la
línea inferior se borra. Si se escribe un carácter de índice hacia arriba, todas las líneas excepto la línea inferior se mueven
hacia abajo y la línea superior se borra. Si no se especifica, la línea inferior o superior se borra, pero el resto de la
ventana no se ve afectado.
Objetivo:Establece la cantidad de tiempo que se retrasará la ejecución del programa cada 250 milisegundos. Cada
programa se retrasa 8ms cada 250ms por defecto. Esto permite que la CPU realice otras funciones, como dar servicio a
las interfaces de usuario de CRT/KB y Teach Pendant. %DELAY proporciona una forma de cambiar el valor
predeterminado y permitir más CPU para tareas del sistema, como la interfaz de usuario.
Sintaxis:%RETARDO = n
Detalles:
A–105
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
• Sinortese establece en 0, el programa intentará utilizar el 100% del tiempo de CPU disponible. Esto podría resultar
en que el Teach Pendant y el CRT/KB dejen de funcionar debido a que su prioridad es menor. Un retraso de 0 es
aceptable si el programa estará esperando movimiento o E/S.
• Mientras se muestra un programa, se prohíbe la ejecución de otros programas. Las rutinas de interrupción
(rutinas llamadas desde manejadores de condiciones) también se retrasarán.
• Los valores de retardo muy grandes inhibirán gravemente la ejecución de todos los programas.
• Para retrasar un programa a favor de otro, use la sentencia DELAY en lugar de %DELAY.
Objetivo:Hace que la ejecución del programa se suspenda durante un número específico de milisegundos
Sintaxis:RETARDO time_in_ms
dónde:
Detalles:
• Si un programa está en pausa mientras hay un retraso en curso, el retraso seguirá cronometrándose.
• Si el tiempo de demora en un programa en pausa expira mientras el programa aún está en pausa, el programa, al
reanudarse y sin más demora, continuará la ejecución con la instrucción que sigue a la demora. De lo contrario, al
reanudarse, el programa finalizará el tiempo de retardo antes de continuar con la ejecución.
• La cancelación de un programa o la ejecución de EJECUTAR desde el CRT/KB cuando un programa está en pausa finaliza
cualquier retraso en curso.
• Mientras un programa espera la expiración de un retraso, el comando KCL> SHOW TASK mostrará
una retención de DELAY.
• Un valor de tiempo superior a un día o inferior a cero hará que el programa se aborte con un error.
Ver también:Apéndice E, “Diagramas de sintaxis”, para obtener información adicional sobre la sintaxis
A–106
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Parámetros de entrada/salida:
Detalles:
• file_specespecifica el dispositivo, el nombre y el tipo de archivo que se va a eliminar.file_specse puede especificar utilizando el
carácter comodín (*). Si no se especifica ningún nombre de dispositivo, se utiliza el dispositivo predeterminado.
• Sinoesperar_swes TRUE, la ejecución del programa continúa mientras se ejecuta el comando. Si es FALSO, el
programa se detiene, incluidos los controladores de condiciones, hasta que finaliza la operación. Si tiene
manejadores de condiciones críticas de tiempo en el programa, colóquelos en otro programa que se ejecute
como una tarea separada.
Ejemplo:Referirse aSección B.3, "Guardar datos en el dispositivo predeterminado" (SAVE_VRS.KL), para obtener un
ejemplo de programa detallado.
A–107
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Parámetros de entrada/salida:
Detalles:
• Todos los nodos más allá del nodo eliminado se volverán a numerar.
Ejemplo:Referirse aSección B.2, "Copia de variables de ruta" (CPY_PTH.KL), para ver un ejemplo de programa
detallado.
Parámetros de entrada/salida:
Detalles:
A–108
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• secuencia_noespecifica el número de secuencia de la entrada que se va a eliminar. Utilice COPY_QUEUE para obtener
una lista de los números de secuencia.
• estadodevuelve 61003, "Número de secuencia incorrecta", si el número de secuencia especificado no está en la cola.
Parámetros de entrada/salida:
Detalles:
• id_abiertoespecifica el programa del Teach Pendant abierto. Un programa debe abrirse con acceso de lectura/
escritura, usando el OPEN_TPE incorporado, antes de llamar al DEL_INST_TPE incorporado.
A–109
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Parámetros de entrada/salida:
Detalles:
• Se vuelven a mostrar las áreas de otras ventanas ocultas por esta ventana. Cualquier área ocupada por
esta ventana y no por ninguna otra ventana se borra.
Ejemplo:Referirse aSección B.12, "Visualización de una lista desde un archivo de diccionario" (DCLST_EX.KL), para ver un
ejemplo de programa detallado.
Objetivo:Se utiliza dentro de un controlador de condiciones para deshabilitar el controlador de condiciones especificado
dónde:
Detalles:
• Si el controlador de condiciones está definido pero no está habilitado actualmente, DISABLE CONDITION no tiene
efecto.
• Cuando un controlador de condiciones está deshabilitado, sus condiciones no se prueban. Por lo tanto, si se vuelve a activar, las
condiciones deben cumplirse después de la activación.
• Utilice la instrucción o acción ENABLE CONDITION para reactivar un controlador de condiciones que se ha
deshabilitado.
A–110
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Ver también:Capítulo 6, "Manejadores de condiciones", para obtener más información sobre el uso de DISABLE CONDITION en los
manejadores de condiciones.
Ejemplo:El siguiente ejemplo deshabilita el controlador de condiciones número 2 cuando se activa la condición
número 1.
CONDICIÓN DE DESHABILITACIÓN[2]
CONDICIÓN FINAL
dónde:
Detalles:
• Si el controlador de condiciones está definido pero no está habilitado actualmente, DISABLE CONDITION no tiene
efecto.
• Cuando un controlador de condiciones está deshabilitado, sus condiciones no se prueban. Por lo tanto, si se vuelve a activar, las
condiciones deben cumplirse después de la activación.
• Utilice la instrucción o acción ENABLE CONDITION para reactivar un controlador de condiciones que se ha
deshabilitado.
Ver también:Capítulo 6MANEJADORES DE CONDICIONES,para obtener más información sobre el uso de DISABLE
CONDITION en controladores de condiciones,Apéndice E, “Diagramas de sintaxis”, para obtener información adicional sobre
la sintaxis
A–111
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
PROGRAMA p_deshabilitar
VAR
contar : ENTERO
responder : CADENA[1]
RUTINA cuenta de espectáculos
EMPEZAR
CONDICIÓN[1]:
CUANDO EVENTO[1] HACER - - Condición[1] muestra la cuenta
cuenta de espectáculos
HABILITAR CONDICIÓN[1]
CONDICIÓN FINAL
HABILITARCONDICIÓN[1]
contar = 0
ESCRIBIR ('¿quieres ver el conteo?') LEER
(respuesta,CR)
SI respuesta = 'n'
ENTONCES DESHABILITAR CONDICIÓN[1] - - Desactiva condición[1]
ENDIF - - No se mostrará el recuento
PARA contar = 1 A 13 HACER
EVENTO DE SEÑAL[1]
ENDFOR
FIN p_disable
dónde:
Detalles:
A–112
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Ver también:Apéndice E, “Diagramas de sintaxis”, para obtener información adicional sobre la sintaxis, Declaración
CONNECT TIMER
Ejemplo:El siguiente ejemplo mueve el TCP a la posición inicial en PR[1], establece la variable INTEGERvariable de
tiempoa 0 y conecta el temporizador. Después de moverse a la posición de destino enPR[2], el temporizador está
desconectado.
Parámetros de entrada/salida:
Detalles:
A–113
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
• nombre_dictespecifica el diccionario que contiene las palabras que se pueden introducir.nombre_dicttambién se puede
establecer en uno de los siguientes valores predefinidos.
• dict_eleespecifica el número de elemento del diccionario para las palabras.dict_elepuede contener un máximo de
5 líneas sin aceptar "&nueva_línea" en la última línea. Vea el ejemplo a continuación.
• term_charrecibe un código que indica el carácter que terminó el menú. El código para las condiciones
de terminación de clave se define en el archivo de inclusión FR:KLEVKEYS.KL. Las siguientes constantes
predefinidas son claves que normalmente se devuelven:
ky_enter
ky_prev
ky_new_menu
• DISCTRL_ALPH mostrará y controlará la entrada de cadenas desde el dispositivo colgante de enseñanza. Para mostrar y
controlar la entrada de cadenas desde el dispositivo CRT/KB, debe crear una variable INTEGER, device_stat, y establecerla
en crt_panel. Para establecer el control en el dispositivo colgante de aprendizaje, establezca device_stat en tp_panel.
Consulte el ejemplo a continuación.
Ejemplo:Referirse aSección B.13, "Uso de DISCTRL_ALPHA incorporado" (DCLAP_EX.KL), para ver un ejemplo de
programa detallado.
A–114
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Parámetros de entrada/salida:
Detalles:
• valor_matrizes una matriz de nombres de variables que corresponde a cada elemento de edición o visualización de datos
en el formulario. Cada nombre de variable se puede especificar como '[prog_name]var_name'.
— nombre_vartambién puede especificar una variable de puerto con index. Por ejemplo, 'DIN[1]'.
• matriz_inactivaes una matriz de valores booleanos que corresponde a cada elemento del formulario.
— Cada valor booleano predeterminado es FALSO, lo que indica que está activo.
— Puede establecer cualquier booleano en VERDADERO, lo que hará que ese elemento esté inactivo y no seleccionable.
— El tamaño de la matriz puede ser mayor o menor que la cantidad de elementos en el formulario.
A-115
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
• cambiar_matrizes una matriz de valores booleanos que corresponde a cada elemento de datos de edición o visualización en el
formulario.
— El tamaño de la matriz puede ser mayor o menor que la cantidad de elementos de datos en el formulario.
• term_maskes una máscara bit a bit que indica las condiciones que terminarán el formulario. Debe ser un OR de
las constantes definidas en el archivo de inclusión klevkmsk.kl.
• Para la versión 6.20 y 6.21,def_itemrecibe el elemento que desea resaltar cuando se ingresa al
formulario.def_itemdevuelve el elemento que estaba actualmente resaltado cuando se presionó el
carácter de terminación.
• Para la versión 6.22 y posteriores,def_itemrecibe el elemento que desea resaltar cuando se ingresa al formulario.
def_itemse actualiza continuamente mientras se muestra el formulario y contiene el número del elemento que
está resaltado actualmente
• term_charrecibe un código que indica el carácter u otra condición que finalizó el formulario. Los códigos para las
condiciones de terminación de clave se definen en el archivo de inclusión klevkeys.kl. Las claves que normalmente se
devuelven son constantes predefinidas de la siguiente manera:
A–116
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Objetivo:Muestra y controla el movimiento del cursor y la selección en una lista en una ventana específica
Parámetros de entrada/salida:
Detalles:
• mostrar_datosse utiliza para mostrar la lista. Consulte el tipo de datos DISP_DAT_T para obtener más información.
A–117
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Ejemplo:Referirse aSección B.12, "Visualización de una lista desde un archivo de diccionario" (DCLST_EX.KL), para ver un
ejemplo de programa detallado.
Precaución
No se comprueba la validez de los parámetros de entrada. Debe asegurarse de que los parámetros de entrada
sean válidos; de lo contrario, es posible que el integrado no funcione correctamente.
Parámetros de entrada/salida:
A–118
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Detalles:
• Los datos del menú en el diccionario consisten en una lista de valores enumerados que se muestran y seleccionan
desde un menú desplegable en el dispositivo colgante de aprendizaje. Se debe utilizar un máximo de 9 valores. Cada
valor es una cadena de hasta 12 caracteres.
Una secuencia de elementos de diccionario consecutivos, comenzando conelemento_no,definir los valores. Cada
valor debe colocarse en un elemento separado y no debe terminar con &new_line. A los caracteres se les asignan
los valores numéricos 1..9 en secuencia. El último elemento del diccionario debe ser "".
• nombre_dictespecifica el nombre del diccionario que contiene los datos del menú.
• elemento_noes el número de elemento del primer elemento de menú dentro del diccionario.
• def_itemes el elemento que debe resaltarse cuando se ingresa al menú. 1 especifica el primer
elemento. A la vuelta,def_itemes el elemento que estaba actualmente resaltado cuando se presionó el
carácter de terminación.
• term_charrecibe un código que indica el carácter que terminó el menú. Los códigos para las condiciones de terminación
clave se definen en el archivo de inclusión FROM:KLEVKEYS.KL. Las claves que normalmente se devuelven son constantes
predefinidas de la siguiente manera:
ky_f1
ky_f2
ky_f3
ky_f4
ky_f5
• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.
A–119
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
$subwin_menu
"Opción 1"
ps
"Opción 2"
ps
"Opción 3"
ps
"Opción 4"
ps
"Opción 5"
ps
"......"
--------------------------------------------------
TPPLMN.KL
--------------------------------------------------
PROGRAMA tpplmn
%AMBIENTE uif
VAR
ENTERO
elemento_def:
term_char: ENTERO
estado: ENTERO
EMPEZAR
def_item =1
DISCTRL_PLMN('EXAMEN', 0, 3, def_item, term_char, estado) IF term_char
= ky_enter THEN
ESCRIBIR (CR, def_item, 'fue seleccionado') ENDIF
FIN tpplmn
Parámetros de entrada/salida:
A–120
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Detalles:
• Los datos del menú en el diccionario consisten en una lista de valores enumerados que se muestran y seleccionan
desde la subventana 'subm' en el dispositivo Teach Pendant. Puede haber hasta 5 páginas de subventana, para un
máximo de 35 valores. Cada valor es una cadena de hasta 16 caracteres. Si se utilizan 4 o menos valores
enumerados, cada cadena puede tener hasta 40 caracteres.
Una secuencia de elementos de diccionario consecutivos, comenzando conelemento_no,definir los valores. Cada
valor debe colocarse en un elemento separado y no debe terminar con &new_line. A los caracteres se les asignan
los valores numéricos 1..35 en secuencia. El último elemento del diccionario debe ser "".
• nombre_dictespecifica el nombre del diccionario que contiene los datos del menú.
• elemento_noes el número de elemento del primer elemento de menú dentro del diccionario.
• def_itemes el elemento que debe resaltarse cuando se ingresa al menú. 1 especifica el primer
elemento. A la vuelta,def_itemes el elemento que estaba actualmente resaltado cuando se presionó el
carácter de terminación.
• term_charrecibe un código que indica el carácter que terminó el menú. Los códigos para las condiciones de terminación
clave se definen en el archivo de inclusión FROM:KLEVKEYS.KL. Las claves que normalmente se devuelven son constantes
predefinidas de la siguiente manera:
ky_f1
ky_f2
ky_f3
ky_f4
ky_f5
• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.
A–121
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
---------------------------------------------------
$subwin_menu
"Rojo"
ps
"Azul"
ps
"Verde"
ps
"Amarillo"
ps
"Marrón"
ps
"Rosado"
ps
"Color de malva"
ps
"Negro"
ps
"Lima"
ps
"Limón"
ps
"Beige"
ps
"Azul"
ps
"Verde"
ps
"Amarillo"
ps
"Marrón"
ps
"\a"
--------------------------------------------------
TPSBMN.KL
--------------------------------------------------
PROGRAMA tpsbmn
%AMBIENTE uif
VAR
ENTERO
elemento_def:
term_char: ENTERO
estado: ENTERO
EMPEZAR
def_item =1
DISCTRL_SBMN('EXAMEN', 0, def_item, term_char, estado) IF
term_char = ky_enter ENTONCES
ESCRIBIR (CR, def_item, 'fue seleccionado')
A–122
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
TERMINARA SI
FIN tpsbmn
Parámetros de entrada/salida:
Detalles:
• DISCTRL_TBL es similar a las rutinas integradas INIT_TBL y ACT_TBL y debe usarse si no es necesario
realizar un procesamiento especial con cada pulsación de tecla.
• nombre_dictes el nombre de cuatro caracteres del diccionario que contiene el encabezado de la tabla.
A–123
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
• col_datoses una matriz de estructuras de descriptores de columna, una para cada columna de la tabla. Para obtener
una descripción completa, consulte la rutina incorporada INIT_TBL en este apéndice.
• inact_arrayes una matriz de valores booleanos que corresponde a cada columna de la tabla.
— Puede establecer cada booleano en VERDADERO, lo que hará que esa columna esté inactiva. Esto significa
que no puede mover el cursor a esta columna.
— El tamaño de la matriz puede ser menor o mayor que el número de elementos de la tabla.
— El tamaño de la matriz puede ser menor o mayor que la cantidad de elementos de datos en la tabla.
• def_itemes la fila que contiene el elemento que desea resaltar cuando se ingresa a la tabla. A la vuelta,
def_itemes la fila que contiene el elemento que estaba actualmente resaltado cuando se presionó el
carácter de terminación.
• term_charrecibe un código que indica el carácter u otra condición que terminó la tabla. Los códigos para las condiciones
de terminación clave se definen en el archivo de inclusión FROM:KLEVKEYS.KL. Las claves que normalmente se devuelven
son constantes predefinidas de la siguiente manera:
A–124
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• term_maskes una máscara bit a bit que indica las condiciones que terminarán la solicitud. Debe ser un OR
de las constantes definidas en el archivo de inclusión FROM:KLEVKMSK.KL.
• valor_matrizes una matriz de nombres de variables que corresponde a cada columna de elemento de datos de la
tabla. Cada nombre de variable se puede especificar como '[prog_name]var_name'.
Ejemplo:Consulte la rutina incorporada INIT_TBL para ver un ejemplo de cómo configurar el texto del diccionario e
inicializar los parámetros.
A–125
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Parámetros de entrada/salida:
Detalles:
Ejemplo:Referirse aSección B.9, "Uso de las funciones integradas de archivo y dispositivo" (FILE_EX.KL), para obtener un ejemplo de
programa detallado.
Sintaxis:
disp_dat_t = ESTRUCTURA
curr_win: CORTO
cursor_row : CORTO
lins_per_pg: CORTO
curr_field: CORTO
último_campo: CORTO
curr_it_num: CORTO
A-126
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
sob_it_num: CORTO
eob_it_num : CORTO
last_it_num : CORTO
menu_id: CORTO
ESTRUCTURA FINAL
Detalles:
• disp_dat_tse puede utilizar para mostrar una lista en cuatro ventanas diferentes. La lista puede contener hasta 10 campos. Las flechas
izquierda y derecha se mueven entre los campos. Las flechas hacia arriba y hacia abajo se mueven dentro de un campo.
• curs_st_coles la columna inicial del cursor para cada campo. El rango es 0-39 para la consola portátil.
• curs_en_coles la columna final del cursor para cada campo. El rango es 0-39 para la consola portátil.
• curr_fieldes el campo actual en el que se encuentra el cursor. El conteo comienza en cero (0 colocará el
cursor en el primer campo).
Ejemplo:Referirse aSección B.12, "Visualización de una lista desde un archivo de diccionario" (DCLIST_EX.KL), para ver un
ejemplo de programa detallado.
Parámetros de entrada/salida:
A–127
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Detalles:
programa dfinfo
%NOLOCKGROUP
variable
valor: cadena[60]
estado: entero
empezar
valor = ''
DOSFILE_INF('UD1:', DF_MANUFNAME, valor, estado) write (cr, '1:
', estado, ', ', valor, cr) valor = ''
A–128
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
valor = ''
DOSFILE_INF('UD1:', DF_PRODID, valor, estado) escritura (cr,
'4: ', estado, ', ', valor, cr) valor = ''
dónde:
Detalles:
• Cuando un controlador de condiciones está habilitado, sus condiciones se prueban cada vez que se escanea el
controlador de condiciones. Si se cumplen las condiciones, se realizan las acciones correspondientes y se desactiva
el controlador de condiciones. Emita una sentencia o acción ENABLE CONDITION para reactivarla.
• Utilice la instrucción o acción DISABLE CONDITION para desactivar un controlador de condiciones que se
haya habilitado.
• Los manejadores de condiciones solo son conocidos por la tarea que los define. Una tarea no puede habilitar la
condición de otra tarea.
Ejemplo:Referirse aSección B.1, "Configuración de puertos de salida digital para monitoreo" (DOUT_EX.KL) para un
ejemplo de programa detallado.
A–129
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
dónde:
Detalles:
• Cuando un controlador de condiciones está habilitado, sus condiciones se prueban cada vez que se escanea el
controlador de condiciones. Si se cumplen las condiciones, se realizan las acciones correspondientes y se desactiva
el controlador de condiciones. Emita una sentencia o acción ENABLE CONDITION para reactivarla.
• Utilice la instrucción o acción DISABLE CONDITION para desactivar un controlador de condiciones que se
haya habilitado.
• Los manejadores de condiciones solo son conocidos por la tarea que los define. Una tarea no puede habilitar la
condición de otra tarea.
Sintaxis:%ENTORNO ruta_nombre
• Lo utiliza el traductor fuera de línea para especificar que se debe cargar el archivo binario, path_name.ev. Los archivos de
entorno contienen definiciones para constantes, puertos, tipos, variables del sistema e integrados predefinidos.
A–130
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• Todos los archivos .EV se cargan al instalar el software del controlador. Por lo tanto, el traductor del
controlador ignorará las declaraciones %ENVIRONMENT ya que ya tiene los archivos .EV cargados.
— BYNAM
— CTDEF (permite el acceso del programa a las variables del sistema CRT/KB)
— ERRORES
— FDEV
— FLBT
— CONFIGURACIÓN DE IOS
— KCLOP
— NOTA
— MIR
— MOTN
— MÚLTIPLES
— PATHOP
— PBCORE
— PBQMGR
— REGOPE
— FUERTE
— SYSDEF (permite el acceso del programa a la mayoría de las variables del sistema)
- SISTEMA
— TIM
— TPE
— TRANS
— UIF
— VECTR
• Si no se especifican instrucciones %ENVIRONMENT en su programa KAREL, el traductor fuera de línea
cargará todos los archivos .EV especificados en TRMNEG.TX. El traductor debe poder encontrar estos
archivos en el directorio actual o en uno de los directorios PATH.
• Si se especifica al menos una instrucción %ENVIRONMENT, el traductor fuera de línea solo cargará los
archivos que especifique en su programa KAREL. Especificar sus propias sentencias %ENVIRONMENT
reducirá la cantidad de memoria requerida para traducir y será más rápido, especialmente si no necesita
variables del sistema ya que SYSDEF.EV es el archivo más grande.
A-131
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
sin símbolos definidos por el sistema" si no puede encontrar SYSTEM.EV. No ignore este mensaje. Asegúrese
de que el archivo SYSTEM.EV esté cargado.
Parámetros de entrada/salida:
— Si el valor inicial deseq_numes mayor que el número de secuencia del error más reciente en el registro,
seq_numse devuelve como cero y no se devuelve ningún otro dato.
A-132
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
— Si el valor inicial deseq_numes menor que el número de secuencia del error más antiguo del registro, se
devuelve el error más antiguo.
ffccc (decimal)
Consulte el Capítulo 6, "Manejadores de condiciones", para conocer los códigos de función de error.
• Si el error es publicado por POST_ERR, o si el error no está asociado con un programa en particular (por
ejemplo, E-STOP),prog_namse devuelve como '""'.
• Es posible que llamar a ERR_DATA inmediatamente después de POST_ERR no devuelva el error recién publicado, ya que
POST_ERR regresa antes de que el error esté realmente en el registro de errores.
Sintaxis:ERROR[n]
dónde:
Detalles:
• Sinortees un número ENTERO, representa un número de código de error. La condición se cumple cuando se
produce el error especificado.
• Sinortees un asterisco (*), representa un comodín. La condición se cumple cuando se produce cualquier error.
A–133
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
• La condición es una condición de evento, lo que significa que se cumple solo para el análisis realizado
cuando se detectó el error. El error no se recuerda en los análisis posteriores.
Ver también:Capítulo 6MANEJADORES DE CONDICIONES,para obtener más información sobre las condiciones de uso. La aplicación
específica apropiadaManual de operaciones y configuración de FANUC America Corporationpara obtener una lista de todos los
códigos de error
Ejemplo:Referirse aSección B.1, "Configuración de puertos de salida digital para monitoreo" (DOUT_EX.KL) para un
ejemplo de programa detallado.
Sintaxis:EVAL(expresión)
dónde:
Detalles:
• expresiónpuede ser cualquier expresión válida que no contenga una llamada de función.
Ver también:Capítulo 6MANEJADORES DE CONDICIONES,,para obtener más información sobre las condiciones de uso
Ejemplo:El siguiente ejemplo provoca un retraso hasta AIN[fuerza]es mayor que la expresión
evaluada (10 *f_escala).
Cláusula EVAL
ESCRIBIR ('Ingresar escala de fuerza:')
LEER (f_escala)
REPETIR
RETARDO(1000)
HASTA AIN[fuerza] > EVAL(10 * f_escala)
Objetivo:Especifica el número de un evento que satisface una condición cuando se ejecuta una
declaración o acción SIGNAL EVENT con ese número de evento
A–134
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Sintaxis:EVENTO[event_no]
dónde:
Detalles:
• Los eventos se pueden usar como códigos de eventos definidos por el usuario que se vuelven VERDADEROS cuando se señalan.
• La instrucción o acción SIGNAL EVENT se utiliza para señalar que se ha producido un evento.
Ejemplo:Referirse aSección B.1, "Configuración de puertos de salida digital para monitoreo" (DOUT_EX.KL) para un
ejemplo de programa detallado.
Objetivo:Devuelve un valor REAL igual a e (aproximadamente 2,71828) elevado a la potencia especificada por
un argumento REAL
Sintaxis:EXP(x)
Parámetros de entrada/salida:
[en] x :REAL
Detalles:
Ejemplo:El siguiente ejemplo usa el EXP incorporado para evaluar el exponente de la expresión (-6.44 +
var.tiempo/(var.tiempo + 20)).
A-135
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Sintaxis:file
Detalles:
• Debe utilizar una variable de ARCHIVO en las instrucciones OPEN FILE, READ, WRITE, CANCEL FILE
y CLOSE FILE.
• Varias rutinas integradas requieren una variable FILE como parámetro, como
BYTES_LEFT, CLR_IO_STAT, GET_FILE_POS, IO_STATUS, SET_FILE_POS.
• Las variables FILE tienen estas restricciones:
— Los tipos de ARCHIVO no están permitidos en las estructuras, pero sí en las matrices.
— No se permite ningún otro uso de este tipo de datos variables, incluida la asignación entre sí.
Objetivo:Genera una lista de archivos con el nombre y el tipo especificados en el dispositivo especificado.
Parámetros de entrada/salida:
A-136
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Detalles:
• file_specespecifica el dispositivo, el nombre y el tipo de la lista de archivos que se van a encontrar.file_specse puede
especificar utilizando el carácter comodín (*).
• n_saltarse utiliza cuando existen más archivos que la longitud declarada deary_nam.Establecern_saltara 0 la
primera vez que usa FILE_LIST. Siary_namestá completamente lleno de nombres de variables, copie la matriz a
otra ARRAY de STRINGs y ejecute FILE_LIST nuevamente conn_saltarigual a n_archivos.La segunda llamada a
FILE_LIST omitirá los archivos encontrados en la primera pasada y solo ubicará los archivos restantes.
• formatoespecifica el formato del nombre de archivo y el tipo de archivo. Los siguientes valores son válidos para
formato:
Fecha y horasolo se devuelven si el dispositivo admite marcas de tiempo; de lo contrario, solo se almacena el
tamaño de filename.ext.
• ary_names un ARRAY de STRINGs para almacenar los nombres de los archivos. Si la longitud de la cadena de ary_nam no es lo
suficientemente grande para almacenar la información formateada, se devolverá un error.
A–137
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
DO{stmnt} ENDFOR
dónde:
Detalles:
• Nunca incluya una etiqueta GO TO en un bucle FOR. Ingresar un bucle FOR mediante una declaración GO TO generalmente hace
que el programa se aborte con un error de "desbordamiento insuficiente de la pila de tiempo de ejecución" cuando se encuentra la
declaración ENDFOR.
A–138
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Ver también:Apéndice E, “Diagramas de sintaxis”, para obtener información adicional sobre la sintaxis.
Parámetros de entrada/salida:
Detalles:
• spmenu_idyscreen_noespecificar el menú a forzar. Las constantes predefinidas que comienzan con SPI_
definen elspmenu_idy las constantes predefinidas que comienzan con SCR_ definen el screen_no.Si no
aparece ningún SCR_, utilice 1.
A–139
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
A–140
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
SPI_TPFILS — ARCHIVO
SPI_TPUSER — USUARIO
SPI_TPSELECT — SELECCIONAR
SPI_TPTCH — EDITAR
SPI_TPPOSN — POSICIÓN
A-141
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Parámetros de entrada/salida:
Detalles:
• nombre_volumenactúa como una etiqueta para una unidad particular de medios de almacenamiento.
nombre_volumenpuede tener un máximo de 11 caracteres y se truncará a 11 caracteres si se especifican más.
• Sinoesperar_swes TRUE, la ejecución del programa continúa mientras se ejecuta el comando. Si es FALSO, el
programa se detiene, incluidos los controladores de condiciones, hasta que finaliza la operación. Si tiene
manejadores de condiciones críticas de tiempo en el programa, colóquelos en otro programa que se ejecute
como una tarea separada.
Ejemplo:Referirse aSección B.9, "Uso de las funciones integradas de archivo y dispositivo" (FILE_EX.KL), para obtener un ejemplo de
programa detallado.
A–142
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Objetivo:Devuelve un marco con un tipo de datos de POSICIÓN que representa la transformación al marco de
coordenadas especificado por tres (o cuatro) argumentos de POSICIÓN.
Parámetros de entrada/salida:
[en]pos1 :POSICIÓN
[en]pos2 :POSICIÓN
[en]pos3 :POSICIÓN
[en]pos4 :POSICIÓN
Detalles:
— pos1se supone que es el origen a menos que unpos4se proporciona el argumento. VerFigura A–2.
- Sipos4se suministra, el origen se desplaza apos4,y el nuevo marco de coordenadas conserva la misma
orientación en el espacio que el primer marco de coordenadas. VerFigura A–2.
• pos1ypos2Los argumentos deben estar separados por al menos 10 milímetros ypos3debe estar al
menos a 10 milímetros de la línea que conectapos1ypos2.
A–143
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
TPV 2
+X +X
+Z +Z
TPV 4
POS 1
+Y +Y
TPV 3
Ejemplo:El siguiente ejemplo le permite al operador configurar un marco para una paleta de modo que una rutina
de paletización pueda mover el TCP a lo largo de la dirección x, y, z en el marco de coordenadas de la paleta.
Objetivo:Indica una variable o rutina que es externa al programa, lo que permite compartir datos y/o
rutinas entre programas
Sintaxis:DESDE prog_name
dónde:
Detalles:
• La cláusula FROM puede ser parte de una declaración de tipo, variable o rutina.
• En una cláusula FROM,prog_namepuede ser el nombre de cualquier programa, incluido el programa en el que se
declara el tipo, la variable o la rutina.
A-144
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• Si la cláusula FROM se usa en una declaración de rutina y se llama durante la ejecución del programa, el
cuerpo de la declaración debe aparecer en el programa especificado y ese programa debe cargarse.
• La cláusula FROM no se puede utilizar cuando se declaran variables en la sección de declaración de una rutina.
Parámetros de entrada/salida:
Detalles:
• número_atributoes el atributo cuyo valor se va a devolver. Los siguientes atributos son válidos:
A-145
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
AT_DEF_GROUP: máscara de grupo de movimiento predeterminada (para atributo de tarea). VerTabla A–16.
• El tipo de programa devuelto para AT_PROG_TYPE será una de las siguientes constantes:
A–146
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• Si los datos del atributo son un número, se devuelven envalor_intyvalor de cadenano se modifica.
• Si los datos del atributo son una cadena, se devuelven envalor de cadenayvalor_intno se modifica.
17027valor de cadenano es lo suficientemente grande para contener la cadena de atributos. El valor se ha truncado para
que quepa.
Objetivo:Devuelve la posición actual del archivo (donde tendrá lugar la siguiente operación de LECTURA o ESCRITURA) en
el archivo especificado
Sintaxis:GET_FILE_POS(file_id)
Parámetros de entrada/salida:
Detalles:
• GET_FILE_POS devuelve el número de bytes antes del siguiente byte que se leerá o escribirá en el archivo.
• El archivo asociado afile_iddebe estar abierto De lo contrario, el programa se cancela con un error.
• Si el archivo asociado confile_idestá abierto para solo lectura, no puede estar en los discos FROM o RAM como
un archivo comprimido.
A–147
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Advertencia
Ejemplo:El siguiente ejemplo abre elfilepos.dtarchivo de datos, almacena las posiciones enmi caminoen el
archivo y crea un directorio para acceder a ellos.
Parámetros de entrada/salida:
Detalles:
A–148
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Ejemplo:Referirse aSección B.5, "Uso de registros integrados" (REG_EX.KL) para ver un ejemplo de programa
detallado.
Objetivo:Obtiene un valor JOINTPOS de la posición especificada en el programa del Teach Pendant especificado
Parámetros de entrada/salida:
Detalles:
• id_abiertoespecifica el programa del colgante de enseñanza. Se debe abrir un programa antes de llamar a este incorporado.
• No se realiza ninguna conversión para la representación de la posición. Los datos de posición deben estar en formato
JOINTPOS. Si la posición almacenada no está en JOINTPOS, se devuelve un estado de error. Utilice GET_POS_TYP para
obtener la representación de la posición.
A–149
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Objetivo:Permite que un programa KAREL determine los puertos físicos a los que se asigna un puerto lógico
específico.
Parámetros de entrada/salida:
Detalles:
• log_port_typeespecifica el código para el tipo de puerto cuya asignación se está accediendo. Los códigos
se definen en FR:KLIOTYPS.KL.
• rack_nose devuelve con el bastidor que contiene el módulo de puerto. Para tarjetas de E/S de proceso,
imagen de memoria y puertos ficticios, esto es cero; para puertos Allen-Bradley, esto es 16.
• tipo_de_puerto_físicose devuelve con el tipo de puerto asignado. A menudo, esto será lo mismo que log_port_type. Las
excepciones son si log_port_type es un tipo de grupo (io_gpin o io_gpout) o si un puerto está asignado a una imagen de
memoria o puertos ficticios.
• phy_port_nose devuelve con el número del puerto asignado. Si log_port_type es un grupo, este es el
número de puerto para el bit menos significativo del grupo.
A–150
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• n_puertosse devuelve con el número de puertos físicos asignados al puerto lógico. Será 1 en todos
los casos excepto cuando log_port_type sea un tipo de grupo. En este caso, n_ports indica el
número de bits del grupo.
• estadose devuelve con cero si los parámetros son válidos y se asigna el puerto especificado. De lo
contrario, se devuelve con un código de error.
Ejemplo:El siguiente ejemplo devuelve a la persona que llama el bastidor del módulo y el número de ranura, el número de
puerto y el número de bits asignados a un puerto de entrada de grupo específico. Se devuelve un valor booleano que indica si
el puerto está asignado a un puerto DIN. Si el puerto no está asignado, se devuelve un estado distinto de cero.
%INCLUDE FR:\kliotipos
RUTINA get_gin_asg(gin_port_no: ENTERO;
rack_no: ENTERO;
slot_no: ENTERO;
primer_puerto_no: ENTERO;
n_puertos: ENTERO;
asgd_to_din: BOOLEANO): ENTERO
VAR
phy_port_typ: ENTERO
estado: ENTERO
EMPEZAR
FIN getasgprog
Parámetros de entrada/salida:
A–151
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Detalles:
• port_idespecifica qué puerto se va a consultar. Utilice una de las siguientes constantes predefinidas:
puerto_1
puerto_2
puerto_3
puerto_4
puerto_5
• tipo_atrespecifica el atributo cuya configuración actual se devolverá. Utilice una de las siguientes
constantes predefinidas:
atr_parity :Paridad
atr_xonoff :Xon/Xoff
Ejemplo:El siguiente ejemplo configura el puerto con la configuración deseada, si aún no está configurado con la
configuración especificada.
A-152
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
FIN port_atr
A-153
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Objetivo:Permite que un programa KAREL determine el comentario que se establece para un puerto lógico específico
Parámetros de entrada/salida:
Detalles:
• tipo_puertoespecifica el código para el tipo de puerto cuyo comentario se devuelve. Los códigos
se definen en FR:KLIOTYPS.KL.
• comentario_strse devuelve con el comentario para el puerto especificado. Esto debe declararse como una
CADENA con una longitud de al menos 16 caracteres.
• estadose devuelve con cero si los parámetros son válidos y se devuelve el comentario para el puerto
especificado.
Objetivo:Permite que un programa KAREL determine qué modos de puerto especiales se establecen para un puerto lógico
específico
Parámetros de entrada/salida:
A–154
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Detalles:
• tipo_puertoespecifica el código para el tipo de puerto cuyo modo se está devolviendo. Los códigos se
definen en FR:KLIOTYPS.KL.
• mode_maskse devuelve con una máscara que especifica qué modos están activados. Se definen los siguientes
modos:
1: modo inverso
El sentido del puerto se invierte; si el puerto se establece en VERDADERO, la salida física se establece en FALSO. Si el puerto
se establece en FALSO, la salida física se establece en VERDADERO. Si una entrada física es VERDADERO, cuando se lee el
puerto, se devuelve FALSO. Si una entrada física es FALSO, cuando se lee el puerto, se devuelve VERDADERO.
2: modo complementario
El puerto lógico se asigna a dos puertos físicos cuyos valores son complementarios. En este caso, port_no debe ser un número
impar. Si el puerto n se establece en VERDADERO, entonces el puerto n se establece en VERDADERO y el puerto n + 1 se establece
en FALSO. Si el puerto n se establece en FALSO, entonces el puerto n se establece en FALSO y el puerto n + 1 se establece en
VERDADERO. Esto es efectivo solo para los puertos de salida.
• estadose devuelve con cero si los parámetros son válidos y se devuelve el modo especificado para el puerto
especificado.
GET_PORT_MOD_Procedimiento integrado
PROGRAMA getmodprog
%AMBIENTE CONFIGURACIÓN DE IOS
%INCLUIR FR:\kliotipos
RUTINA get_mode( tipo_puerto: ENTERO;
port_no: ENTERO;
reverso: BOOLEANO;
complementario: BOOLEANO): ENTERO
VAR
modo: ENTERO
estado: ENTERO
EMPEZAR
A-155
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
reverso = CIERTO
MÁS
reverso = FALSO
TERMINARA SI
RETORNO (estado)
FIN get_mode
EMPEZAR
FIN getmodprog
Parámetros de entrada/salida:
Detalles:
• tipo_puertoespecifica el código para el tipo de puerto a obtener. Los códigos se definen en FRS:KLIOTYPS.KL.
A–156
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Objetivo:Permite que un programa KAREL determine el valor actual de un puerto lógico especificado
Parámetros de entrada/salida:
Detalles:
• tipo_puertoespecifica el código para el tipo de puerto cuyo comentario se devuelve. Los códigos
se definen en FR:KLIOTYPS.KL.
• valorse devuelve con el valor actual (estado) del puerto especificado. Para los tipos de puerto BOOLEAN (es decir,
DIN), será 0 = APAGADO o 1 = ENCENDIDO.
• estadose devuelve con cero si los parámetros son válidos y se devuelve el comentario para el puerto
especificado.
Objetivo:Obtiene el número de uframe y el número de utool de la posición especificada en el programa de consola de programación
especificado.
Parámetros de entrada/salida:
A–157
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Detalles:
• id_abiertoespecifica el programa del Teach Pendant abierto. Se debe abrir un programa antes de llamar a este
incorporado.
Parámetros de entrada/salida:
Detalles:
A–158
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Ejemplo:Referirse aSección B.5, "Uso de registros integrados" (REG_EX.KL), para ver un ejemplo de programa
detallado.
Parámetros de entrada/salida:
Detalles:
• id_abiertoespecifica el programa del Teach Pendant abierto. Se debe abrir un programa antes de llamar a este
incorporado.
• No se realiza ninguna conversión para la representación de la posición. Los datos posicionales deben estar en XYZWPR o
XYZWPREXT, de lo contrario, se devuelve un estado de error. Utilice GET_POS_TYP para obtener la representación de la
posición.
A–159
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Parámetros de entrada/salida:
Detalles:
• id_abiertoespecifica el programa del Teach Pendant abierto. Se debe abrir un programa antes de llamar a este
incorporado.
A–160
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• Si la posición especificada en el programa no está inicializada, el estado se establece en 17038, "Posición TPE no
inicializada".
Parámetros de entrada/salida:
Detalles:
• Register_no especifica de qué registro de posición recuperar los comentarios. El comentario del
registro de posición dado se devuelve en comment_string.
Parámetros de entrada/salida:
A–161
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Detalles:
• estadose devuelve con el cero si se obtiene con éxito una entrada de la cola. De lo contrario, se
devuelve un valor de 61002, "La cola está vacía".
EMPEZAR
GET_QUEUE(cola_error, datos_error, valor, número_secuencia, estado) SI (estado =
0) ENTONCES
DEVOLVER (valor)
MÁS
DEVOLVER (0)
TERMINARA SI
FIN get_nxt_err
EMPEZAR
FIN get_queue_x
A-162
Traducido del inglés al español - www.onlinedoctranslator.com
Parámetros de entrada/salida:
Detalles:
• bandera_realse establece en VERDADERO yvalor realal contenido del registro si el registro especificado tiene un valor
real. De lo contrario,bandera_realse establece en FALSO yvalor_intse establece en el contenido del registro.
Ejemplo:Referirse aSección B.5, "Uso de registros integrados" (REG_EX.KL), para ver un ejemplo de programa
detallado.
A.8.18 GET_REG_CMT
Objetivo:Para recuperar la información de comentarios de un registro KAREL en función de un número de registro determinado.
Parámetros de entrada/salida:
A-163
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Detalles:
• Register_no especifica de qué registro recuperar los comentarios. El comentario del registro dado
se devuelve en comment_string.
Parámetros de entrada/salida:
Detalles:
Parámetros de entrada/salida:
A-164
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Detalles:
Objetivo:Recupera la hora actual (en representación de números enteros) desde dentro del sistema KAREL
Sintaxis:GET_TIME(yo)
Parámetros de entrada/salida:
[fuera] i :ENTERO
Detalles:
• icontiene la representación INTEGER de la hora actual almacenada en el sistema KAREL. Este valor se representa
en formato INTEGER de 32 bits de la siguiente manera:
- FECHA:
A-165
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
• Los valores INTEGER se pueden comparar para determinar si una vez es más reciente que otra.
Ejemplo:Referirse aSección B.9, "Uso de las funciones integradas de archivo y dispositivo" (FILE_EX.KL), para obtener un ejemplo de
programa detallado.
Objetivo:Esta función integrada proporciona la capacidad para que un programa KAREL lea el comentario asociado con
una posición específica en un programa de consola portátil.
Parámetros de entrada/salida:
Detalles:
• comentarioestá asociado con posiciones específicas y se devuelve con una cadena de longitud cero si la posición
no tiene comentarios. Si la variable de cadena es demasiado corta para el comentario, se devuelve un error y la
cadena no cambia.
A–166
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Objetivo:Obtiene los valores de los parámetros cuando los parámetros se pasan en una instrucción TPE CALL o
MACRO.
Parámetros de entrada/salida:
Detalles:
• param_noindica el número del parámetro. Puede haber como máximo diez parámetros.
— 1 : ENTERO
— 2 : REAL
— 3 : CADENA
• valor_intes el valor del parámetro si el tipo_datos es INTEGER.
• valor reales el valor del parámetro si data_type es REAL.
• str_valuees el valor del parámetro si data_type es STRING.
• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ha ocurrido un error.
Ver también:Específico de la aplicaciónManual de operaciones y configuración de FANUC America Corporation, para obtener
información sobre el uso de parámetros en las instrucciones CALL o MACRO del colgante de programación.
Ejemplo:El siguiente ejemplo muestra la implementación de una macro (Evento de envío) con parámetros
CALL que son recuperados por un programa KAREL que usa el GET_TPE_PRM incorporado.
A-167
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
TERMINARA SI
TERMINARA SI
A–168
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
TERMINARA SI
...
Parámetros de entrada/salida:
Detalles:
• nombre de la tareaes el nombre de la tarea de interés.nombre de la tarease utiliza como entrada sólo sitarea_nono está
inicializado o se establece en 0, de lo contrario,nombre de la tarease considera un parámetro de salida.
• tarea_noes el número de tarea de interés. Sitarea_nono está inicializado o se establece en 0, se devuelve como un
parámetro de salida.
• atributoes el atributo de la tarea cuyo valor se devolverá. será devuelto envalor_inta menos que se
especifique lo contrario. Los siguientes atributos son válidos:
A–169
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
A–170
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Parámetros de entrada/salida:
Detalles:
• El valor devuelto es la representación INTEGER del tiempo transcurrido us2 - us1 en microsegundos.
• Esto está destinado a medir las operaciones rápidas. El resultado terminará después de 2 minutos y ya
no será válido.
yo = 0
= GET_USEC_TIM
nosotros1
yo = yo + 1
us_delta = GET_USEC_SUB(GET_USEC_TIM, us1)
ESCRIBIR ('Tiempo para incrementar un número: ', us_delta, 'us', CR)
A–171
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Objetivo:Devuelve un valor INTEGER que indica la hora actual en microsegundos (1/1 000 000) desde
el sistema KAREL.
Sintaxis:nosotros = GET_USEC_TIM
Parámetros de entrada/salida:
Ninguna
Detalles:
• Esta función se utiliza con la función integrada GET_USEC_SUB para determinar el tiempo transcurrido de
una operación.
Parámetros de entrada/salida:
Detalles:
A–172
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• prog_nameespecifica el nombre del programa que contiene la variable especificada. Siprog_nameestá en blanco, por
defecto se ejecutará el nombre de la tarea actual. Selecciona elprog_namea '*SYSTEM*' para obtener una variable del
sistema.prog_nametambién puede acceder a una variable del sistema en un robot en un anillo.
• Si ambosnombre_varyvalorson ARRAY, el número de elementos copiados será igual al tamaño del más
pequeño de los dos arreglos.
• Los nombres designados de todos los robots se pueden encontrar en la variable del sistema $PH_MEMBERS[]. Esto
también incluye información sobre el estado del robot. El índice de anillo es el índice de matriz para esta variable del
sistema. Los usuarios de KAREL pueden escribir programas de propósito general consultando los nombres y otra
información en esta variable del sistema en lugar de nombres explícitos.
Ver también:Procedimiento integrado SET_VAR,manual de opciones de internetpara obtener información sobre cómo acceder a las
Precaución
El uso de GET_VAR para modificar las variables del sistema podría generar resultados inesperados.
A–173
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
PROGRAMA util_prog
VAR
j, num_of_parts : ENTERO
part_array : MATRIZ[5] DE CADENA[10]
EMPEZAR
num_de_partes = 0
PARA j = 1 a 20 DO
num_of_parts = num_of_parts + 1
ENDFOR
part_array[1] = 10
part_array[2] = 20
part_array[3] = 30
part_array[4] = 40
part_array[5] = 50
FIN util_prog
tarea PROGRAMA
VAR
entrada, estado : ENTERO
cuenta, nueva_cuenta : INTEGER
parte_nombre : CADENA[20]
EMPEZAR
GET_VAR(entrada, 'util_prog', 'part_array[3]', part_name, status) WRITE('Part Name is
Now....>', part_name, cr)
Tarea final
EnProcedimiento integrado GET_VAR SET_VAR, se establece una matriz [ipgetset]set_data[x,y] en todos los robots del
anillo de todos los robots del anillo. En esta matriz,Xes el índice del robot de origen yyes el índice del robot de
destino:
A–174
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
ENDSELECT
TERMINARA SI
ENDFOR
Ejemplo 3GET_VAR y SET_VAR también se pueden usar para establecer valores de registro.
Esto funcionará para el robot local con los nombres de programa *posreg* y *numreg*. Para el robot local, esto tiene
una funcionalidad similar a las funciones integradas GET_POS_REG, GET_REG y SET_REG, SET_POS_REG. Los integrados
solo funcionan para el robot local. Puede acceder a los robots en el anillo a través de GET_VAR y SET_VAR usando el
nombre del robot como parte del nombre del programa.
Para el caso de GET_VAR en registros numéricos, el tipo de la variable KAREL debe coincidir con el tipo de
registro o se devuelve el error “Valor incompatible”. En el siguiente ejemplo, si el registro numérico 10 es
un valor real, se devolverá un error y se establecerá el valor real en caso de error.
Si un registro de posición está bloqueado e intenta configurarlo, se devuelve el registro de posición de error
bloqueado. VerUso de GET_VAR y SET_VAR para establecer valores de registro.
programa GETREG
%nolockgroup
VAR
entrada: entero
estado: entero
datos_int: entero
A–175
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
datos_reales: reales
posext_data: xyzwprext
EMPEZAR
A.8.28 IR A Declaración
Sintaxis:||IR A | IR A || etiqueta_stmnt
dónde:
Detalles:
• etiqueta_stmntdebe definirse en la misma rutina o cuerpo del programa que la sentencia GO TO.
• Los identificadores de etiqueta van seguidos de dos puntos dobles (::). Las sentencias ejecutables pueden seguir o
no en la misma línea.
• GOTO solo debe usarse en circunstancias especiales en las que las estructuras de control normales,
como los bucles WHILE, REPEAT y FOR, serían incómodas o difíciles de implementar.
Ver también:Sección 2.1.5, "Etiquetas", para obtener más información sobre las reglas para las etiquetas,Apéndice E, “Diagramas de sintaxis”,
para obtener información adicional sobre la sintaxis
Ejemplo:El siguiente ejemplo mueve el TCP de una posición a otra según el estado de
DIN[1].
IR A Declaración
EMPEZAR
SI NO DIN[1] ENTONCES
move_to_p1 —— Llamar al programa TP para mover
ELSE
A–176
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
IR A end_it
TERMINARA SI
SI NO DIN[1] ENTONCES
move_to_p2 —— Llamar al programa TP para mover
ELSE
IR A end_it
TERMINARA SI
END_IT::
Objetivo:Hace que se retenga el movimiento actual y evita que comiencen los movimientos subsiguientes
Sintaxis:MANTENER <GRUPO[n,{,n}]>
Detalles:
• Cualquier moción en curso se mantiene. El robot y los ejes auxiliares o extendidos se desaceleran hasta detenerse.
• También se retiene un intento de movimiento después de ejecutar HOLD. HOLD no puede ser anulado por un
controlador de condiciones que emite un movimiento.
• Si la cláusula de grupo no está presente, todos los grupos para los que la tarea tiene control (cuando se define la
condición) se cancelarán.
• Si una moción que se lleva a cabo es parte de una moción SIMULTÁNEA o COORDINADA con otros grupos, se llevarán
a cabo las mociones de todos los grupos.
Ver también:Capítulo 8DATOS DE POSICIÓN,para obtener más información sobre los movimientos de inicio y detención
Ejemplo:El siguiente ejemplo muestra un controlador de condiciones que mantiene el movimiento cuando se enciende
DIN[1].
ESPERA Acción
CONDICIÓN[1]:
CUANDO DIN[1] = ON HACER
MANTENER
CONDICIÓN FINAL
A–177
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Objetivo:Hace que se retenga el movimiento actual y evita que comiencen los movimientos subsiguientes
Sintaxis:MANTENER <GRUPO[n{,n}]>
Detalles:
• Cualquier moción en curso se mantiene. El robot y los ejes auxiliares o extendidos se desaceleran hasta detenerse.
• También se retiene un intento de movimiento después de ejecutar HOLD. HOLD no puede ser anulado por un
controlador de condiciones que emite un movimiento.
• Todos los movimientos retenidos se cancelan si se ejecuta una instrucción RELEASE mientras se retiene el movimiento.
• Si la cláusula de grupo no está presente, se cancelarán todos los grupos para los que la tarea tiene control.
• Si una moción que se detiene, reanuda, cancela o retiene es parte de una moción SIMULTÁNEA o
COORDINADA con otros grupos, las mociones de todos los grupos se detienen, reanudan, cancelan o
retienen.
Ver también:Capítulo 8DATOS DE POSICIÓN,para obtener más información sobre los movimientos de inicio y detención,
Apéndice E, “Diagramas de sintaxis”, para obtener información adicional sobre la sintaxis
{ true_stmnt } <OTRO
{ false_stmnt } >ENDIF
dónde:
bool_exp : BOOLEANO
A–178
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Detalles:
• Sibool_expse evalúa como FALSO y no se especifica ninguna cláusula ELSE, la ejecución salta directamente a la
primera declaración después de ENDIF.
• Si bool_exp se evalúa como FALSO y se especifica una cláusula ELSE, las declaraciones contenidas en el
false_stmntson ejecutados. La ejecución luego continúa con la primera declaración después de ENDIF.
Ver también:Apéndice E, “Diagramas de sintaxis”, para obtener información adicional sobre la sintaxis
A.10.2 Cláusula IN
Detalles:
• La cláusula IN puede ser parte de una declaración de variable. Debe especificarse antes de la cláusula FROM.
A–179
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
• ENSOMBRAespecifica que cualquier cambio realizado en la variable se mantendrá en CMOS. Las escrituras en este tipo
de variable son más lentas, pero las lecturas son mucho más rápidas. Este es un buen tipo de memoria para usar con
parámetros de configuración que están actualmente en CMOS.
• Si no se especifica la cláusula IN, todas las variables se crean en la memoria temporal; a menos que se
especifique la directiva %CMOSVARS o %SHADOW, en cuyo caso todas las variables se crearán en la
memoria permanente.
• La cláusula IN no se puede utilizar cuando se declaran variables en la sección de declaración de una rutina.
Sintaxis:%INCLUYE file_spec
Detalles:
• Los archivos especificados suelen contener declaraciones, como declaraciones CONST o VAR. Sin embargo,
pueden contener cualquier parte de un programa, incluidas sentencias ejecutables e incluso otras
directivas %INCLUDE.
• Los archivos incluidos pueden incluir otros archivos hasta una profundidad máxima de tres archivos incluidos
anidados. No hay límite en el número total de archivos incluidos.
• Cuando el traductor de idiomas KAREL encuentra una directiva %INCLUDE durante la traducción de un
archivo, comienza a traducir el archivo incluido como si fuera parte del archivo original. Cuando se ha
incluido todo el archivo, el traductor continúa con el archivo original.
A–180
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
%INCLUIR FR:\klevkmsk
%INCLUYE FR:\klevkeys
%INCLUIR FR:\klevccdf
%INCLUDE FR:\kliotipos
Estos archivos contienen constantes que pueden usarse en sus programas KAREL. Si está traduciendo en el
controlador, puede incluirlos directamente desde el disco DESDE.
Los archivos de inclusión también se instalan con ROBOGUIDE en la carpeta de soporte y se copian en el
disco duro como parte del proceso de instalación.
Objetivo:Devuelve el índice del primer carácter de la primera aparición de un argumento de CADENA especificado en
otro argumento de CADENA especificado. Si no se encuentra el argumento, se devuelve un valor 0.
Parámetros de entrada/salida:
Detalles:
• El valor devuelto es la posición del índice enprincipalcorrespondiente al primer carácter de la primera aparición defi
Dakota del Norteo 0 sifiDakota del Norteno ocurre enprincipal.
A–181
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Ejemplo:El siguiente ejemplo utiliza la función integrada ÍNDICE para buscar la primera aparición de la
cadena "Old" enpart_desc.
Parámetros de entrada/salida:
Detalles:
A–182
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• La visualización dinámica se inicia en función del valor deb_var.Sib_varEs falso,cuerdas[1]se visualiza; sib_vares
verdad,cuerdas[2]se visualiza. Sib_varno está inicializado, se muestra una cadena de *. Ambas cosasb_vary
instrumentos de cuerdadeben ser variables estáticas (no locales).
• Sifiancho_eldes distinto de cero, la pantalla se amplía con espacios en blanco si el elemento decuerdas[n]es
más corto que este ancho especificado. El área se borra cuando se cancela la visualización dinámica.
• attr_maskes una máscara bit a bit que indica los atributos de visualización de caracteres. Esta debe ser una
de las siguientes constantes:
0 :Normal
4 :subrayado
8: vídeo inverso
• Para tener múltiples atributos de visualización, use el operador OR para combinar los valores de atributos
constantes. Por ejemplo, para que el texto se muestre en negrita y subrayado, use 1 O 4.
• char_sizeespecifica si los datos se mostrarán en tamaño normal, doble ancho o doble alto,
doble ancho. Esta debe ser una de las siguientes constantes:
0 :Normal
Ejemplo:Referirse aSección B.10, "Uso de pantallas dinámicas incorporadas" (DYN_DISP.KL), para ver un
ejemplo de programa detallado.
A–183
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Objetivo:Inicia la visualización dinámica de una variable INTEGER. Este procedimiento muestra elementos
de un STRING ARRAY dependiendo del valor actual de la variable INTEGER.
Parámetros de entrada/salida:
Detalles:
• Consulte el procedimiento incorporado INI_DYN_DISB para obtener una descripción de los otros parámetros enumerados anteriormente.
Ejemplo:Referirse aSección B.10, "Uso de pantallas dinámicas incorporadas" (DYN_DISP.KL), para ver un
ejemplo de programa detallado.
A–184
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Parámetros de entrada/salida:
Detalles:
• Sifiancho_eldes distinto de cero, la pantalla se amplía con espacios en blanco sii_vares más corto que este ancho
especificado. El área se borra cuando se cancela la visualización dinámica.
• formatose utiliza para imprimir la variable. Esto se puede pasar como un literal entre comillas simples. La
cadena de formato comienza con un % y termina con un carácter de conversión. Entre el % y el carácter de
conversión puede haber, en orden:
A–185
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
— Un número que especifica el ancho de campo mínimo. El argumento convertido se imprimirá en un campo de al menos
este ancho. Si es necesario, se rellenará a la izquierda (oa la derecha, si se requiere un ajuste a la izquierda) para
compensar el ancho del campo.
El especificador de formato debe contener uno de los caracteres de conversión enTabla A–12.
F REAL; notación decimal de la forma [-]mmm.dddddd, donde el número de d viene dado por
la precisión. La precisión predeterminada es 6; una precisión de 0 suprime el punto
decimal.
• Consulte el procedimiento incorporado INI_DYN_DISB para obtener una descripción de los otros parámetros enumerados anteriormente.
Ejemplo:Referirse aSección B.10, "Uso de pantallas dinámicas incorporadas" (DYN_DISP.KL), para ver un
ejemplo de programa detallado.
A–186
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Objetivo:Inicia la visualización dinámica de un valor de un puerto en una ventana específica, según el tipo de
puerto y el número de puerto.
Parámetros de entrada/salida:
Detalles:
• tipo_puertoespecifica el tipo de puerto que se mostrará. Los códigos se definen en FROM: KLIOTYPS.KL.
- Si eltipo_puertoes un puerto BOOLEAN (p. ej., DIN). Si es FALSO, se muestra strings[1]; Si la variable
es VERDADERO, se muestra strings[2].
- Si eltipo_puertoes un puerto INTEGER (por ejemplo, GIN), si el valor del puerto es n,cadenas[n+1]
será mostrado. Si el valor del puerto es mayor o igual que la longitud de la matriz de cadenas, se
muestra una cadena de '?'.
• Consulte el procedimiento incorporado INI_DYN_DISB para obtener una descripción de otros parámetros enumerados anteriormente.
A–187
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Ejemplo:Referirse aSección B.10, "Uso de pantallas dinámicas incorporadas" (DYN_DISP.KL), para ver un
ejemplo de programa detallado.
Parámetros de entrada/salida:
Detalles:
• Consulte el procedimiento incorporado INI_DYN_DISI para obtener una descripción de otros parámetros enumerados anteriormente.
A–188
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Ejemplo:Referirse aSección B.10, "Uso de pantallas dinámicas incorporadas" (DYN_DISP.KL), para ver un
ejemplo de programa detallado.
Parámetros de entrada/salida:
Detalles:
• Consulte el procedimiento incorporado INI_DYN_DISI para obtener una descripción de otros parámetros enumerados anteriormente.
A–189
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Ejemplo:Referirse aSección B.10, "Uso de pantallas dinámicas incorporadas" (DYN_DISP.KL), para ver un
ejemplo de programa detallado.
Objetivo:Establece una entrada de variable de cola para que no tenga entradas en la cola
Sintaxis:INIT_QUEUE(cola)
Parámetros de entrada/salida:
Detalles:
Parámetros de entrada/salida:
A–190
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Detalles:
• Las rutinas integradas INIT_TBL y ACT_TBL solo deben usarse en lugar de DISCTRL_TBL si es necesario realizar un
procesamiento especial con cada pulsación de tecla o si es necesario realizar un procesamiento de tecla de
función sin salir del menú de la tabla.
• nombre_dictes el nombre de cuatro caracteres del diccionario que contiene el encabezado de la tabla.
• col_datoses una matriz de estructuras de descriptores de columna, una para cada columna de la tabla. Contiene los
siguientes campos:
— tipo de artículo:Tipo de datos de valores en esta columna. Se definen las siguientes constantes de tipo de datos:
A–191
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
— inicio_col:Columna de caracteres inicial (1..40) del campo de visualización para esta columna de datos.
— num_ele:Elemento de diccionario utilizado para mostrar valores para ciertos tipos de datos. El formato de los
elementos del diccionario para estos tipos de datos es el siguiente:
– TPX_FKY_ITEM: los valores enumerados se colocan en las etiquetas de las teclas de función. Puede haber
hasta 2 páginas de etiquetas de teclas de función, para un máximo de 10 etiquetas. Cada etiqueta es una
cadena de hasta 8 caracteres. Sin embargo, el último carácter de una etiqueta seguido de otra etiqueta
debe dejarse en blanco o las dos etiquetas se ejecutarán juntas.
– Un solo elemento de diccionario define todos los valores de etiqueta. Cada valor debe colocarse en una línea
separada usando &new_line. Los valores se asignan a las teclas de función F1..F5, F6..F10 y los valores numéricos
1..10 en secuencia. Las teclas de función sin etiqueta deben dejarse en blanco. Si hay etiquetas en la segunda
página de teclas de función, F6..F10, las etiquetas para las teclas 5 y 10 deben tener el carácter “>” en la columna
8. Si no hay etiquetas en las teclas F6..F10, las líneas no debe especificarse para cualquier etiqueta de tecla
después de la última etiqueta que no esté en blanco.
Ejemplo:
ps ejemplo_fkey_label_c
"" &nueva línea
"F2" &nueva línea
"F3" &nueva línea
"F4" &nueva línea
"F5 > " &nueva_línea
"F6" &nueva línea
"F7" &nueva línea
"" &nueva línea
"" &nueva línea
" >"
A–192
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
– Una secuencia de elementos de diccionario consecutivos, empezando por enum_dict, define los valores.
Cada valor debe colocarse en un elemento separado y no debe terminar con &new_line. A los caracteres
se les asignan los valores numéricos 1..35 en secuencia. El último elemento del diccionario debe ser "\a".
Ejemplo:
ps ejemplo_sub_win_enum_c
"Rojo"
ps
"Azul"
ps
"Verde"
ps
"Amarillo"
ps
"\a"
– TPX_KBL_ITEM, TPX_PBL_ITEM: los valores "verdadero" y "falso" se colocan en las etiquetas de las teclas
de función F4 y F5, en ese orden. Cada etiqueta es una cadena de hasta 8 caracteres. Sin embargo, el
último carácter de la etiqueta "verdadero" debe dejarse en blanco o las dos etiquetas se ejecutarán
juntas.
– Un solo elemento de diccionario los valores de la etiqueta. Cada valor debe colocarse en una línea separada
usando &nueva_línea, con el valor "falso" primero.
Ejemplo:
ps ejemplo_booleano_c
"DESACTIVADO" &nueva_línea
"EN"
— format_spec:La cadena de formato se utiliza para imprimir el valor de los datos. La cadena de formato contiene un
especificador de formato. La cadena de formato también puede contener cualquier carácter deseado antes o
después del especificador de formato. El especificador de formato en sí comienza con un % y termina con un
carácter de conversión. Entre el % y el carácter de conversión puede haber, en orden:
A–193
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
– Un número que especifica el ancho de campo mínimo. El argumento convertido se imprimirá en un campo de
al menos este ancho. Si es necesario, se rellenará a la izquierda (oa la derecha, si se requiere un ajuste a la
izquierda) para compensar el ancho del campo.
– Un número, la precisión, que especifica el número máximo de caracteres que se imprimirán de una
cadena, o el número de dígitos después del punto decimal de un valor de coma flotante, o el número
mínimo de dígitos para un número entero.
• El especificador de formato debe contener uno de los caracteres de conversión de la siguiente tabla:
F REAL; notación decimal de la forma [-]mmm.dddddd, donde el número de d viene dado por
la precisión. La precisión predeterminada es 6; una precisión de 0 suprime el punto decimal.
Ejemplo:"%d" o "%-10s"
Los especificadores de formato que se pueden usar con los tipos de datos especificados en el campo item_type en
col_datosson como sigue:
TPX_FKY_ITEM %s
TPX_SUB_ITEM %s
A–194
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
TPX_KST_ITEM %s
TPX_KSL_ITEM %s
TPX_KBL_ITEM %s
TPX_PBL_ITEM %s
— minúsculas:Si el tipo de datos es TPX_KST_ITEM, 1 permite que los caracteres se ingresen en la cadena
en mayúsculas o minúsculas y 0 los restringe a mayúsculas.
• inact_arrayes una matriz de valores booleanos que corresponde a cada columna de la tabla.
— Puede establecer cada booleano en VERDADERO, lo que hará que esa columna esté inactiva. Esto significa que no se puede
colocar el cursor en la columna.
— El tamaño de la matriz puede ser menor o mayor que el número de elementos de la tabla.
• cambiar_matrizes una matriz bidimensional de valores booleanos que corresponde al elemento de datos formateado en
la tabla.
— El tamaño de la matriz puede ser menor o mayor que la cantidad de elementos de datos en la tabla.
• valor_matrizes una matriz de nombres de variables que corresponden a las columnas de datos de la tabla. Cada
nombre de variable se puede especificar como '[prog_name]var_name'.
A–195
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
— Cada una de estas variables con nombre debe ser una matriz KAREL de longitudnúm_filas.Su tipo de
datos y valores deben ser coherentes con el valor del campo item_type encol_datospara la columna
correspondiente, como sigue:
– TPX_SUB_ITEM: ARRAY OF INTEGER con valores que se refieren a elementos en el elemento del diccionario
especificado en el campo enum_ele encol_datos.Puede haber como máximo 28 valores de enumeración
de subventana.
– TPX_KSL_ITEM: ARRAY OF STRING que contiene los valores deseados. Estos valores no pueden
ser editados por el usuario. Si se selecciona uno, ACT_TBL regresará.
– TPX_KBL_ITEM: ARRAY OF BOOLEAN que contiene los valores deseados. El elemento del diccionario
especificado por el campo enum_ele encol_datosdebe tener exactamente dos elementos, con el
elemento falso primero y el elemento verdadero en segundo lugar. TPX_BYT_ITEM: ARRAY OF
BYTE que contiene los valores deseados. "–" TPX_SHT_ITEM: ARRAY OF SHORT que contiene los
valores deseados. "–" TPX_PBL_ITEM: ARRAY OF STRING que contiene los nombres de los puertos,
por ejemplo “DIN[5]”. "–" TPX_PIN_ITEM: ARRAY OF STRING que contiene los nombres de los
puertos, por ejemplo “GOUT[3]”.
– TPX_PBL_ITEM: ARRAY OF STRING que contiene los nombres de los puertos, por ejemplo
“DIN[5]”.
– TPX_PIN_ITEM: ARRAY OF STRING que contiene los nombres de los puertos, por ejemplo
“GOUT[3]”.
• matriz_vptres una matriz de enteros que corresponde a cada nombre de variable envalor_matriz.No
cambie estos datos; se usa internamente.
• tabla_datosse utiliza para mostrar y controlar la tabla.No cambie estos datos; se usa internamente.
Ejemplo:En este ejemplo, TPXTABEG.TX se carga como 'XTAB' en el controlador. TPEXTBL llama a INIT_TBL
para inicializar una tabla con cinco columnas y cuatro filas. Llama a ACT_TBL en un bucle para leer y
procesar cada tecla presionada.
A–196
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
TPXTABEG.TX
------------------------------------------------
$título
&reverse "DATA Test Schedule" &standard &new_line "E1: "
&nueva línea
" PRUEBA W(mm) C(%%) G(123456) COLOR"
^1
?2
$función_teclas
"f1" &nueva línea
"f2" &nueva línea
"f3" &nueva línea
"f4" &nueva línea
" AYUDA > " &nueva línea
"f6" &nueva línea
"f7" &nueva línea
"f8" &nueva línea
"f9" &nueva línea
"f10 >"
$help_text "El texto de ayuda va aquí...
"$enum1
"" &nueva línea
"" &nueva línea
"CIERTO" &nueva línea
"FALSO" &nueva línea
""
$enum2
"Rojo"
ps
"Azul"
ps
"Verde"
ps
"Amarillo"
ps
"Marrón"
ps
"Rosado"
ps
"Color de malva"
ps
"Negro"
ps
"......"
--------------------------------------------------
TPEXTBL.KL
--------------------------------------------------
A–197
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
PROGRAMA tpextbl
%AMBIENTE uif
%INCLUIR DESDE:\klevccdf
%INCLUIR DESDE:\klevkeysVAR
dict_name: CADENA[6]
ele_number: ENTERO
núm_filas: ENTERO
num_columnas: ENTERO
col_data: ARRAY[5] OF COL_DESC_T inact_array:
ARRAY[5] OF BOOLEAN change_array:
ARRAY[4,5] OF BOOLEAN value_array: ARRAY[5]
OF STRING[26] vptr_array: ARRAY[4,5] OF
INTEGER table_data:
XTRABAJO_T
estado: ENTERO
acción: ENTERO
elemento_def: ENTERO
term_char: ENTERO
adjuntar_sw: BOOLEANO
guardar_acción: ENTERO
hecho: BOOLEANO
valor1: ARRAY[4] OF INTEGER valor2:
ARRAY[4] OF INTEGER value3: ARRAY[4]
OF REAL value4: ARRAY[4] OF
STRING[10] value5: ARRAY[4] OF
INTEGER BEGIN
elemento_definido = 1
matriz_valor[1] = 'valor1'
matriz_valor[2] = 'valor2'
matriz_valor[3] = 'valor3'
matriz_valor[4] = 'valor4'
matriz_valor[5] = 'valor5'
valor1[1] = 21
valor1[2] = dieciséis
valor1[3] = 1
valor1[4] = 4
valor2[1] = 3
valor2[2] = 2
valor2[3] = 3
valor2[4] = 2
valor3[1] = - 13
valor3[2] = 4.1
valor3[3] = 23,9
valor3[4] = - 41
valor4[1] = 'XXX---'
valor4[2] = '--XX-'
A–198
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
valor4[3] = 'XXX-XX'
valor4[4] = '-XX--'
valor5[1] = 1
valor5[2] = 1
valor5[3] = 2
valor5[4] = 3
inact_array[1] = FALSO
inact_array[2] = FALSO
inact_array[3] = FALSO
inact_array[4] = FALSO
matriz_inactiva[5] = FALSO
col_data[1].item_type = TPX_INT_ITEM
col_data[1].start_col = 6
col_data[1].field_width = 4
col_data[1].format_spec = '%3d'
col_data[1].max_integer = 99
col_data[1].min_integer = - 99
col_data[2].item_type = TPX_FKY_ITEM
col_data[2].start_col = 12
col_data[2].field_width = 5
col_data[2].format_spec = '%s'
col_data[2].enum_ele = 3 - - número de elemento enum1
col_data[2].enum_dict = 'XTAB'
col_data[3].item_type = TPX_REL_ITEM
col_data[3].start_col = 18
col_data[3].field_width = 5
col_data[3].format_spec = '%3.1f'
col_data[4].item_type = TPX_KST_ITEM
col_data[4].start_col = 26
col_data[4].field_width = 6
col_data[4].format_spec = '%s'
col_data[5].item_type = TPX_SUB_ITEM
col_data[5].start_col = 34
col_data[5].field_width = 6
col_data[5].format_spec = '%s'
col_data[5].enum_ele = 4 - - número de elemento enum2
col_data[5].enum_dict = 'XTAB'
nombre_dict = 'XTAB'
ele_number = 0 - - número de elemento de título
núm_filas = 4
num_columnas = 5
def_item = 1
adjuntar_sw = CIERTO
INIT_TBL(dict_name, ele_number, num_rows, num_columns, col_data,
inact_array, change_array, value_array, vptr_array, table_data,
estado)
SI estado <> 0 ENTONCES
A–199
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
elemento_definido = 1
- - Visualización inicial de la tabla
ACT_TBL(ky_disp_updt, def_item, table_data, term_char,
adjuntar_sw, estado)
SI estado <> 0 ENTONCES
ESCRIBIR(CR, 'ACT_TBL estado = ', estado) ENDIF
TERMINARA SI
SI estado = 0 ENTONCES
- - Bucle hasta que se seleccione una clave de terminación.
hecho = FALSO
action = ky_reissue -- leer nueva clave
MIENTRAS NO se haya hecho
- - Leer nueva clave, actuar sobre ella y devolverla
ACT_TBL(action, def_item, table_data, term_char,
adjuntar_sw, estado)guardar_acción = acción
acción = ky_reissue -- leer clave nueva
- - Solo depuración
ESCRIBIR TPERROR (CHR(cc_home) + CHR(cc_clear_win))
- - Claves de terminación de procesos.
(term_char)
SELECCIONE DE
CASO (ky_seleccionar, ky_nuevo_menú):
hecho = VERDADERO;
CASO (ky_f1):
- - Llevar a cabo F1
SET_CURSOR(TPERROR, 1, 1, estado) WRITE
TPERROR ('F1 presionado')
CASO (ky_f2):
- - Realizar F2
SET_CURSOR(TPERROR, 1, 1, estado) WRITE
TPERROR ('F2 presionado')
CASO (ky_f3):
- - Realizar F3
SET_CURSOR(TPERROR, 1, 1, estado) WRITE
TPERROR ('F3 presionado')
CASO (ky_f4):
- - Realizar F4
SET_CURSOR(TPERROR, 1, 1, estado) WRITE
TPERROR ('F4 presionado')
CASO (ky_f5):
- - Realizar la acción de
ayuda F5 = ky_ayuda
CASO (ky_f6):
- - Ejecutar F6
SET_CURSOR(TPERROR, 1, 1, estado)
A-200
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
ENDSELECT
MÁS:
action = term_char -- actuar sobre esta clave
ENDSELECT
ENTREVISTA
IF term_char <> ky_new_menu ENTONCES
- - Cancelar la visualización dinámica ACT_TBL(ky_cancel, def_item,
table_data, term_char,
adjuntar_sw, estado)
TERMINARA SI
TERMINARA SI
FINAL tpextbl
Objetivo:Devuelve un valor BOOLEAN que indica si un grupo de ejes puede alcanzar o no el argumento
de posición especificado.
Sintaxis:IN_RANGE(posición)
A–201
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Parámetros de entrada/salida:
Detalles:
• El valor devuelto es VERDADERO siposiciónestá dentro de la envolvente de trabajo del grupo de ejes; de lo contrario, se
devuelve FALSO.
Ejemplo:El siguiente ejemplo verifica si la nueva posición está en el área de trabajo antes de
mover el TCP a ella.
Objetivo:Inserta un nodo no inicializado en el argumento PATH especificado que precede al número de nodo de
ruta especificado
Parámetros de entrada/salida:
Detalles:
A–202
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• núm_nodoespecifica el número de índice del nodo de ruta antes del cual se insertará el nuevo nodo no
inicializado.
• Se pueden asignar valores al nuevo nodo haciendo referencia directamente a su estructura NODEDATA.
• Si el programa no tiene suficiente RAM para una solicitud INSERT_NODE, se producirá un error.
Ejemplo:En el siguiente ejemplo, el PATH_LEN incorporado se usa para establecer la longitud variable igual al
número de nodos enruta_var.INSERT_NODE inserta un nuevo nodo de ruta antes del último nodo en path_var.
longitud = PATH_LEN(ruta_var)
INSERT_NODE(ruta_var, longitud, estado)
Parámetros de entrada/salida:
Detalles:
A–203
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
• estadose devuelve con 61002, "La cola está llena", si no hay espacio para la entrada en la cola, con 61003,
"Secuencia incorrecta no", si el número de secuencia especificado no está en la cola.
Objetivo:Define una variable, tipo de retorno de función o parámetro de rutina como tipo de datos INTEGER
Sintaxis:ENTERO
Detalles:
• Una variable o parámetro INTEGER puede asumir valores de números enteros en el rango
-2147483648 a +2147483646.
A–204
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• Los literales INTEGER constan de una serie de dígitos, opcionalmente precedidos por un signo más o
menos. No pueden contener puntos decimales, comas, espacios, signos de dólar ($) u otros caracteres de
puntuación. (VerTabla A–14)
• Solo las expresiones INTEGER pueden asignarse a variables INTEGER, devolverse desde rutinas de
función INTEGER o pasarse como argumentos a parámetros INTEGER.
Ver también:Capítulo 5RUTINAS,para obtener más información sobre cómo pasar por valor,Capítulo 7OPERACIONES DE
ENTRADA/SALIDA DE ARCHIVOS,para obtener más información sobre los especificadores de formato
Objetivo:Se utiliza en transformaciones de marcos de coordenadas con el operador de posición relativa (:) para
determinar los valores de coordenadas de una POSICIÓN en un marco que difiere del marco en el que se registró
esa POSICIÓN
Parámetros de entrada/salida:
Detalles:
A–205
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Ejemplo:El siguiente ejemplo utiliza el INV integrado para determinar la POSICIÓN depart_poscon referencia al
marco de coordenadas que tienerack_poscomo su origen. Ambas cosaspart_posyrack_posse enseñaron y
grabaron originalmente en User Frame. Luego se le indica al robot que se mueva a esa posición.
p1 = INV(rack_pos):part_pos
SET_POS_REG(1, p1, estado)
move_to_pr1 –— Llamar al programa TP para moverse a PR[1]
END p_inv
Parámetros de entrada/salida:
Detalles:
• rack_noes el bastidor que contiene el módulo de puerto. Para tarjetas de E/S de proceso, esto es cero;
para puertos Allen-Bradley y Genius, esto es 16.
• slot_noes la ranura que contiene el módulo de puerto. Para tarjetas de E/S de proceso, esta es la posición de la
tarjeta en la cadena SLC-2.
6 A16B-2202-470
A–206
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
7 A16B-2202-472
8 A16B-2202-480
• estadose devuelve con cero si los parámetros son válidos y hay un módulo o placa con el número de bastidor/ranura
especificado de la siguiente manera:
Ejemplo:El siguiente ejemplo devuelve al autor de la llamada el módulo en el bastidor y el número de ranura
especificados.
FIN iomodtipo
Objetivo:Devuelve un valor INTEGER que indica el éxito o el tipo de error de la última operación en el
argumento del archivo
Sintaxis:IO_STATUS(file_id)
Parámetros de entrada/salida:
Detalles:
• IO_STATUS se puede usar después de una instrucción OPEN FILE, READ, WRITE, CANCEL FILE o CLOSE FILE.
Según los resultados de la operación, devolverá 0 si tiene éxito o uno de los errores enumerados en la
aplicación específica.Manual de operaciones y configuración de FANUC America Corporation.Algunos de
los errores comunes se muestran enTabla A–15.
A–207
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
• Sifile_idno corresponde a un archivo abierto o uno de los "archivos" predefinidos abiertos en las
respectivas ventanas CRT/KB, Teach Pendant y Vision, el programa se cancela con un error.
Ejemplo:Referirse aSección B.12, "Visualización de una lista desde un archivo de diccionario" (DCLIST_EX.KL), para ver un
ejemplo de programa detallado.
A–208
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Objetivo:Devuelve un valor BOOLEAN que indica si un grupo de ejes puede alcanzar o no el argumento
de posición conjunta especificado.
Sintaxis:J_IN_RANGE(posición)
Parámetros de entrada/salida:
Detalles:
• El valor devuelto es VERDADERO siposiciónestá dentro del sobre de trabajo; de lo contrario, se devuelve FALSO.
Objetivo:Define una variable, tipo de devolución de función o parámetro de rutina como tipo de datos JOINTPOS.
Detalles:
• Un JOINTPOS consiste en una representación REAL de la posición de cada eje del grupo,
expresada en grados o milímetros (mm).
• A JOINTPOS puede ir seguido de IN GROUP[m], donde m indica el grupo de movimiento con el que se
utilizarán los datos. El valor predeterminado es el grupo especificado por la directiva %DEFGROUP o 1.
• Los incorporados CNV_REL_JPOS y CNV_JPOS_REL se pueden utilizar para acceder a los valores reales.
• Un JOINTPOS se puede asignar a otros tipos posicionales. Tenga en cuenta que algunos grupos de movimiento, por
ejemplo, los posicionadores de un solo eje, no tienen representación XYZWPR. Si intenta asignar un JOINTPOS a un
tipo XYZWPR o POSITION para dicho grupo, se producirá un error de tiempo de ejecución.
A–209
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Objetivo:Esta rutina se usa para convertir ángulos de articulación (in_jnt) a una posición cartesiana (out_pos)
llamando a la rutina de cinemática directa.
Sintaxis:JOINT2POS (in_jnt: los ángulos de articulación se pueden convertir a cartesiano, uframe, utool,
config_ref, out_pos, wjnt_cfg, ext_ang y estado).
Parámetros de entrada/salida:
Detalles:
• la entradaconfig_refes un número entero que representa el tipo de solución deseada. Los valores enumerados a
continuación son válidos. Además, se pueden usar las constantes predefinidas entre paréntesis y se pueden
agregar los valores según sea necesario. Un ejemplo incluye: config_ref = HALF_SOLN + CONFIG_TCP.
— 0 :(FULL_SOLN) = Predeterminado
A–210
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
— 4 :(APPROX_SOLN) = Solución aproximada. Este valor reduce el tiempo de cálculo para algunos
robots.
— 8 :(NO_TURNS) = Ignora los números de giro de muñeca. Use la ruta más cercana para las juntas 4, 5 y 6
(usa ref_jnt).
— 16 :(NO_M_TURNS) = Ignorar el número de giro del eje principal (solo J1). Usa el camino más cercano.
• La salidaext_angcontiene los valores de los ángulos de articulación para los ejes extendidos, si existen.
Objetivo:Envía el comando KCL especificado por el argumento STRING a KCL para su ejecución.
Parámetros de entrada/salida:
Detalles:
• La ejecución del programa espera hasta que se completa la ejecución del comando KCL o hasta que se detecta
un error.
• Todos los comandos de KCL se ejecutan como si se ingresaran en el nivel de comando, con la excepción de
los comandos destructivos, como CLEAR ALL, para los cuales no se requiere confirmación.
A–211
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
• Si se está ejecutando un archivo de comando de KCL y $STOP_ON_ERR es FALSO, el KCL incorporado continuará
ejecutándose hasta completarse. Se devolverá el primer error detectado o un 0 si no se produjeron errores.
Ejemplo:El siguiente ejemplo mostrará programas y esperará hasta que termine. El estado será el resultado
de esta operación.
Ejemplo:Referirse aPrograma de ejemplo para mostrar solo elementos de datospara otro ejemplo.
Objetivo:Envía el comando KCL especificado por el argumento STRING a KCL para su ejecución, pero no
espera a que se complete el comando antes de continuar con la ejecución del programa.
Parámetros de entrada/salida:
Detalles:
A–212
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Ejemplo:El siguiente ejemplo cargará un programa, pero no esperará a que se cargue el programa
antes de regresar. El estado indicará si el comando fue aceptado o no.
Objetivo:Devuelve el estado del último comando ejecutado desde los procedimientos integrados KCL
o KCL_NO_WAIT.
Sintaxis:KCL_STATUS
Detalles:
• Devuelve elestadodel último comando ejecutado desde los integrados KCL o KCL_NO_WAIT.
• La ejecución del programa espera hasta que KCL pueda devolver el estado.
Sintaxis:LN(x)
A–213
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Parámetros de entrada/salida:
[en] x : REAL
Detalles:
Función incorporada de LN
ESCRIBIR(CR, CR, 'ingrese un número =')
LEER(a,CR)
b = LN(a)
Parámetros de entrada/salida:
Detalles:
• file_specespecifica el dispositivo, el nombre y el tipo de archivo que se va a cargar. Son válidos los siguientes tipos:
. Programa PC KAREL
. Variables VR KAREL
A–214
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
NotaPara R-30iB y R-30iControladores B Mate, la opción KAREL debe estar instalada en el controlador
del robot para poder cargar los programas KAREL.
Parámetros de entrada/salida:
A–215
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Detalles:
Sintaxis:LOCK_GROUP(máscara_de_grupo, estado)
Parámetros de entrada/salida:
Detalles:
• máscara_de_grupoespecifica el grupo de ejes para bloquear para la tarea en ejecución. Los números de grupo deben
estar en el rango de 1 al número total de grupos definidos en el controlador.
Grupo 1 1 1
A–216
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Grupo 2 2 2
Grupo 3 4 3
Para especificar varios grupos, seleccione los valores decimales, que se muestran enTabla A–16, que
corresponden a los grupos deseados. Luego conéctelos usando el operador OR. Por ejemplo, para especificar los
grupos 1, 3, ingrese "1 O 4".
• Si uno o más de los grupos no se pueden bloquear, se devuelve un error y se bloquearán todos los grupos
disponibles.
• Mover un grupo bloquea automáticamente el grupo si no ha sido bloqueado previamente por otra tarea.
• Si una tarea intenta mover un grupo que ya está bloqueado por otra tarea, se pausará.
Ejemplo:El siguiente ejemplo desbloquea los grupos 1, 2 y 3 y luego bloquea el grupo 3. Consultecapitulo
16MULTITAREA,para más ejemplos.
REPETIR
- - Desbloquear grupos 1, 2 y 3
UNLOCK_GROUP(1 O 2 O 4, estado) SI
estado = 17040 ENTONCES
CNCL_STP_MTN -- o REANUDAR
ENDIF
DEMORA 500
HASTA estado = 0
- - Bloquear solo el grupo 3
LOCK_GROUP(4, estado)
FIN lock_grp_ex
Objetivo:Especifica los grupos de movimiento que se bloquearán al llamar a este programa o una rutina desde
este programa.
A–217
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Detalles:
• Cuando se llama al programa o la rutina, la tarea intentará obtener el control de movimiento para todos los
grupos especificados si aún no los tiene bloqueados. La tarea se detendrá si no puede obtener el control de
movimiento.
Parámetros de entrada/salida:
Detalles:
A–218
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• No se garantiza que la posición reflejada devuelta sea una posición alcanzable, ya que la posición
reflejada puede estar fuera del área de trabajo del robot.
Ejemplo:El siguiente ejemplo obtiene la posición actual del robot, crea un marco de espejo y
genera una posición reflejada que se refleja sobre el eje y.
PROGRAMA mir_examen
VAR
cur_pos: XYZWPREXT
pos_org: POSICIÓN
mir_pos: XYZWPREXT
mir_posa: POSICIÓN
marco_pos: XYZWPREXT
marco: POSICIÓN
orient_flag: BOOLEANO
EMPEZAR
cur_pos = curpos(0,0) -- Obtener la posición actual del robot cur_pos.x = 1000.00
- - Crear una nueva posición que esté en (1000,0,300,w,p,r)
cur_pos.y = 0.0
cur_pos.z = 300.00
SET_EPOS_REG(1, cur_pos, estado)
move_to_pr1 — Llamar al programa TP para pasar a PR[1]
- - El robot está ahora en una posición conocida:
- - (1000,0,300,w,p,r) donde (w,p,r) no tienen
- - cambiado de la posición original.
pos_frame = curpos(0,0) -- Crea un marco usado para reflejar. marco_pos.w = 0
- - Poniendo (w,p,r) a 0, el plano xz de
marco_pos.p = 0 - - pos_frame será paralelo al xz del mundo
marco_pos.r = 0 - - plano. pos_frame ahora establecido en (1000,0,300,0,0,0)
marco = pos_marco - - Convierta el marco del espejo a un tipo POSICIÓN.
cur_pos.y = 200 - - Muévase 200 mm en la dirección y.
SET_EPOS_REG(1, cur_pos,
estado)
mover_a_pr1 - - La posición actual es (1000,200,300,w,p,r)
org_pos = cur_pos - - Convierta org_pos en un tipo de POSICIÓN.
orient_flag = FALSO - - Enviar la posición actual del espejo: (1000, 200, 300,
- - w,p,r), y marco del espejo: (1000,0,300,0,0,0).
- - Refleja sobre el eje y sin reflejar el
- - orientación (w,p,r).
mir_pos = mirror(org_pos, frame, orient_flag)
- - mir_pos es la posición reflejada: (1000, -200,
- - 300, w, p, r).
- - La orientación es la misma que org_pos.
A–219
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Parámetros de entrada/salida:
Detalles:
• estadose devuelve con 61003, "Número de secuencia incorrecta", si el número de secuencia especificado no está en
la cola.
A–220
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
END update_queue
EMPEZAR
FIN mod_queue_x
Objetivo:Determina si el programa KAREL tiene control de movimiento para el grupo de ejes especificado
Sintaxis:MOTION_CTL<(grupo_máscara)>
Parámetros de entrada/salida:
Detalles:
Grupo 1 1 1
Grupo 2 2 2
Grupo 3 4 3
A-221
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Para especificar varios grupos, seleccione los valores decimales, que se muestran enTabla A–17, que
corresponden a los grupos deseados. Luego conéctelos usando el operador OR. Por ejemplo, para especificar los
grupos 1, 3, ingrese "1 O 4".
• Devuelve TRUE si el programa KAREL tiene control de movimiento para el grupo de ejes especificado.
Parámetros de entrada/salida:
Detalles:
Ejemplo:Referirse aSección B.9, "Uso de las funciones integradas de archivo y dispositivo" (FILE_EX.KL), para obtener un ejemplo de
programa detallado.
Parámetros de entrada/salida:
Detalles:
A-222
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• file_specespecifica el dispositivo, el nombre y el tipo de archivo que se va a mover. El archivo debe existir en los
discos FROM o RAM.
• El carácter comodín (*) se puede utilizar para reemplazar el nombre de archivo completo, la primera parte del nombre
de archivo, la última parte del nombre de archivo o la primera y la última parte del nombre de archivo. El tipo de archivo
también puede usar el comodín de la misma manera. Si file_spec especifica varios archivos, todos se mueven al otro
disco.
Ejemplo:En el siguiente ejemplo, todos los archivos .KL se mueven del disco RAM al disco FROM.
MOVER_ARCHIVO('RD:\*.KL', estado)
SI estado <> 0 ENTONCES
POST_ERR(estado, '', 0, 0) ENDIF
FIN move_files
Objetivo:Conecte un puerto de cliente o servidor a otra computadora para usar en Socket Messaging.
Parámetros de entrada/salida:
Detalles:
A-223
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Ejemplo:El siguiente ejemplo se conecta a S8: y lee mensajes. Los mensajes se muestran en la pantalla
de la consola portátil.
PROGRAMA tcpserv8
VAR
archivo_var : EXPEDIENTE
tmp_int : ENTERO
tmp_int1 : ENTERO
tmp_str : cuerda [128]
tmp_str1 : cuerda [128]
estado : entero
entrada : entero
EMPEZAR
SI estado = 0 ENTONCES
- - ABRIR S8:
escribir ('Apertura',cr)
ABRIR ARCHIVO file_var ('rw','S8:') estado
= io_status(file_var) FOR tmp_int 1 TO
1000 DO
escribir ('Lectura',cr)
BYTES_AHEAD(archivo_var, entrada, estado)
- - Leer 10 bytes LEER
file_var (tmp_cadena::10)
estado = i/o_status(archivo_var)
- - Escribe 10 bytes
A–224
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
escribe (tmp_str::10,cr)
estado = io_status(archivo_var)
ENDFOR
CERCA EXPEDIENTE archivo_var
escribe ('Desconectando..',cr)
MSG_DISCO('S8:',estado)
escribir ('Listo.',cr)
TERMINARA SI
TERMINARA SI
FIN tcpserv8
Parámetros de entrada/salida:
Detalles:
A.14.8 MSG_PING
Parámetros de entrada/salida:
A–225
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Detalles:
• Nombre de host es el nombre del host para realizar la verificación. Una entrada para el host debe estar presente
en las tablas de entradas de host (o la opción DNS cargada y configurada en el robot).
Ver también:hacer ping en elManual de operaciones y configuración de opciones de Internet de FANUC America Corporation.
Ejemplo:El siguiente ejemplo realiza una verificación de PING en el nombre de host "fido". Escribe los
resultados en el Teach Pendant.
ESCRIBIR('hacer ping...',cr)
MSG_PING('fido',status) WRITE('ping Status =
',status,cr) END prueba de ping
Objetivo:Evita que se cancele la ejecución del programa cuando se produce un error externo
Detalles:
Ejemplo:El siguiente ejemplo utiliza un controlador de condición global para probar el error número 11038,
"Pulse Mismatch". Si ocurre este error, la acción NOABORT evitará que se cancele la ejecución del programa.
A–226
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Acción NO ABORTAR
PROGRAMA noabort_ex
%NOLOCKGROUP
EMPEZAR
CONDICIÓN FINAL
HABILITAR CONDICIÓN[801]
FIN noabort_ex
Detalles:
• Si el programa se aborta solo (por ejemplo, al ejecutar una declaración ABORT, error de tiempo de
ejecución), la directiva %NOABORT se ignorará y la ejecución del programa se abortará.
• Esta directiva solo es efectiva para programas con %NOLOCKGROUP. Si el programa tiene control de
movimiento, se ignorará la directiva %NOABORT y se cancelará la ejecución del programa.
Sintaxis:%NOBUSYLAMP
Detalles:
• La lámpara de ocupado se puede configurar durante la ejecución de la tarea mediante el SET_TSK_ATTR incorporado.
A–227
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Sintaxis:NODE_SIZE(ruta_var)
Parámetros de entrada/salida:
Detalles:
• El valor devuelto es el tamaño de un nodo PATH individual, incluido el tamaño del tipo de datos posicionales y
cualquier dato asociado.
• El valor devuelto se puede utilizar para calcular las posiciones de los archivos para el acceso aleatorio a los nodos de los archivos.
Ejemplo:El siguiente programa de ejemplo lee una ruta, mientras que las lecturas se superponen con los movimientos
anteriores. La rutinaleer_encabezadolee el encabezado de la ruta y se prepara para la lectura de los nodos. La rutina
leer_nodolee un nodo de ruta.
pos_xyz: XYZWPR
ruta_base: ENTERO
tamaño_nodo: ENTERO
max_node_no: ENTERO
i: ENTERO
var_archivo: ARCHIVO
--
RUTINA leer_encabezado
EMPEZAR
LEER file_var(mi_ruta[0])
SI IO_STATUS(file_var) <> 0 ENTONCES
ESCRIBIR('ENCABEZADO ERROR DE LECTURA:',IO_STATUS(file_var),cr)
ABORTAR
TERMINARA SI
max_node_no = RUTA_LEN(mi_ruta)
tamaño_nodo = NODE_SIZE(mi_ruta)
ruta_base = GET_FILE_POS(archivo_var)
FIN read_header
--
RUTINA read_node(node_no: ENTERO)
A–228
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Objetivo:Especifica que no es necesario bloquear los grupos de movimiento al llamar a este programa o una
rutina definida en este programa.
Sintaxis:%NOLOCKGROUP
Detalles:
• Si no se especifica %NOLOCKGROUP, todos los grupos se bloquearán cuando se llame al programa o la rutina,
y la tarea intentará obtener el control de movimiento. La tarea se detendrá si no puede obtener el control de
movimiento.
• La tarea mantendrá el control de movimiento mientras ejecuta el programa o rutina. Cuando sale del programa o
rutina, la tarea desbloquea automáticamente todos los grupos de movimiento.
• Si la tarea contiene movimiento en ejecución o detenido, la ejecución de la tarea se detiene hasta que se completa el
movimiento. El movimiento detenido debe reanudarse y completarse o cancelarse.
• Si un programa que tiene control de movimiento llama a un programa con la directiva %NOLOCKGROUP o una
rutina definida en dicho programa, el programa mantendrá el control de movimiento aunque no sea necesario.
A–229
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
• Si se encuentra una declaración de movimiento en un programa que tiene la directiva %NOLOCKGROUP, la tarea
intentará obtener el control de movimiento para todos los grupos requeridos si aún no lo tiene.
La tarea se detendrá si no puede obtener el control de movimiento.
Sintaxis:SIN MENSAJE
Detalles:
• La visualización y el registro de los mensajes de error se suprimen solo para el número de error especificado en
la condición correspondiente.
• Los mensajes de error de cancelación seguirán mostrándose y registrándose incluso si se utiliza NOMESSAGE.
Ejemplo:Referirse aSección B.1, "Configuración de puertos de salida digital para monitoreo" (DOUT_EX.KL) para un
ejemplo de programa detallado.
Objetivo:Reanuda la ejecución del programa si el programa estaba en pausa o evita que la ejecución del programa
se detenga
Sintaxis:SIN PAUSA
A–230
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Detalles:
Ejemplo:El siguiente ejemplo utiliza un controlador de condición global para probar el error número 12311. Si
se produce este error, la acción NOPAUSE evitará que se pause la ejecución del programa y la acción
NOMESSAGE suprimirá el mensaje de error que normalmente se muestra para el error número 12311. Esto
permitirá que rutinauninit_errorpara ser ejecutado sin interrupción.
Detalles:
A–231
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
• Esta directiva solo es efectiva para programas con %NOLOCKGROUP. Si el programa tiene control de
movimiento, se ignorará la directiva %NOPAUSE y se pausará la ejecución del programa.
Sintaxis:%NOPAUSESHFT
Detalles:
• Este atributo se puede establecer durante la ejecución de la tarea mediante la rutina integrada SET_TSK_ATTR.
dónde:
file_var : ARCHIVO
Detalles:
• file_vardebe ser una variable estática que no esté siendo utilizada por otra instrucción OPEN FILE.
'AP': Agregar
'UD': Actualizar
• losfile_cadenaidentifica un nombre y tipo de archivo de datos, una ventana o teclado, o un puerto de comunicación.
A–232
Traducido del inglés al español - www.onlinedoctranslator.com
• La rutina integrada SET_FILE_ATR se puede utilizar para establecer los atributos de un archivo.
• Cuando se cancela un programa o se cierra normalmente, se cierran todos los archivos abiertos. Los archivos no se cierran
cuando un programa está en pausa.
• Utilice la función integrada IO_STATUS para verificar si la operación de abrir el archivo fue exitosa.
dónde:
Detalles:
• El efecto real de la declaración depende de cómo se configuran las señales de MANO. Consulte el Capítulo
13, “Sistema de entrada/salida”.
• mano_numdebe ser un valor en el rango 1-2. De lo contrario, el programa se cancela con un error.
• La declaración no tiene efecto si el valor demano_numestá dentro del alcance pero la mano no está conectada.
• Si el valor demano_numestá dentro del rango pero la señal MANO representada por ese valor no ha sido
asignada, el programa se aborta con un error.
Ver también:Apéndice D, "Diagramas de sintaxis" para obtener más información sobre la sintaxis
Ejemplo:El siguiente ejemplo mueve el TCP al registro de posiciónPR[2]y abre la mano del
robot especificado por la variable INTEGERmano_num.
A–233
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Parámetros de entrada/salida:
Detalles:
• prog_nameespecifica el nombre del programa del colgante de enseñanza que se abrirá.prog_namedebe estar en todas
las letras mayúsculas.
• modo_abiertodetermina el código de acceso al programa. Los códigos de acceso se definen de la siguiente manera:
0 : ninguno
• modo_de_rechazodetermina el código de rechazo al programa. El programa que ha estado con un código de rechazo no
puede ser abierto por otro programa. Los códigos de rechazo se definen de la siguiente manera:
TPE_NOREJ: ninguno
A–234
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• Todos los programas abiertos del Teach Pendant se cierran automáticamente cuando el programa KAREL se aborta o
sale normalmente.
Objetivo:Devuelve el código ASCII numérico correspondiente al carácter del argumento CADENA al que
hace referencia el argumento de índice
Sintaxis:ORD(str, str_index)
Parámetros de entrada/salida:
Detalles:
• Sistr_indexes menor que uno o mayor que la longitud actual decalle,el programa está en pausa con
un error.
Ejemplo:Referirse aSección B.12, "Visualización de una lista desde un archivo de diccionario" (DCLST_EX.KL), para ver un
ejemplo de programa detallado.
Objetivo:Devuelve un VECTOR unitario que representa el eje y (vector de orientación) del argumento de POSICIÓN
especificado
A–235
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Sintaxis:ORIENT(posición)
Parámetros de entrada/salida:
Detalles:
• En lugar de usar este incorporado,puede acceder directamente al Vector de Orientación de una POSICIÓN.
Sintaxis:SENDERO
Detalles:
• Una RUTA es una lista de longitud variable de elementos llamados nodos de ruta, numerados del 1 al número de
nodos en la RUTA.
• Una variable PATH está indexada (o subíndice) como si fuera una variable ARRAY. Por ejemplo, pista_herramienta[1]
se refiere al primer nodo de un PATH llamadoseguimiento_de_herramientas.
• Las variables PATH no se pueden declarar locales para las rutinas y no se pueden devolver desde las funciones.
• Solo las expresiones PATH pueden asignarse a variables PATH o pasarse como argumentos a
parámetros PATH.
• Una variable PATH puede especificar una estructura de datos que constituye los datos para cada nodo de ruta.
• Una variable PATH puede especificar una estructura de datos que constituye el encabezado de la ruta. Esto se puede usar para
especificar el UFRAME y/o UTOOL que se usará con la grabación de la ruta. También puede especificar un grupo de ejes cuya
posición actual define un marco de coordenadas de la parte superior de la mesa con respecto al cual se registran los datos del
robot.
A–236
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• Una RUTA se puede declarar con cualquiera, ninguna o ambas de las siguientes cláusulas después de la
palabra RUTA:
Si ambos campos están presentes, pueden aparecer en cualquier orden y están separados por una coma y, opcionalmente, por una
nueva línea.
• La estructura del encabezado de la ruta se puede copiar de una ruta a otra con la instrucción path_var1 =
path_var2.
• La estructura del nodo de ruta se puede copiar de un nodo a otro con la instrucción
path_var[2] = path_var[1].
• Se puede pasar una ruta como argumento a una rutina siempre que coincidan los tipos PATHHEADER y
NODEDATA. Una ruta que se pasa como argumento a una rutina integrada puede ser de cualquier tipo.
• Se puede pasar un nodo de ruta como argumento a una rutina siempre que el parámetro de la rutina sea del
mismo tipo que la estructura NODEDATA.
• Se puede declarar una ruta con una estructura NODEDATA que no tenga elementos de tipo de posición. Esta puede ser
una forma útil de mantener una estructura de lista.
ESCRIBE
node_struct = ESTRUCTURA
node_posn: XYZWPR EN GRUPO[1]
aux_posn: JOINTPOS EN GRUPO[2]
sold_time: INTEGER
corriente_de_soldadura: ENTERO
ESTRUCTURA FINAL
hdr_struct = ESTRUCTURA
uframe1: POSICIÓN
utool: POSICIÓN
A–237
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
velocidad: REAL
ESTRUCTURA FINAL
VAR
path_1a: PATH PATHHEADER = hdr_struct, NODEDATA = node_struct path_1b:
PATH NODEDATA = node_struct, PATHHEADER = hdr_struct path_2:
PATH NODEDATA = node_struct -- sin encabezado
camino_3: PATH -- NODEDATA es STD_PTH_NODE
camino_4: PATH PATHHEADER = hdr_struct -- NODEDATA es STD_PTH_NODE
El siguiente ejemplo muestra cómo se puede hacer referencia a los elementos de las estructuras
NODEDATA y PATHHEADER.
Sintaxis:RUTA_LEN(ruta_nombre)
Parámetros de entrada/salida:
Detalles:
A–238
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Sintaxis:PAUSAR <PROGRAMA[n]>
Detalles:
— Se completan todas las acciones, excepto las acciones de llamada de rutina. Las acciones de llamada de rutina se realizan
cuando se reanuda el programa.
• La acción PAUSA puede ir seguida de la cláusula PROGRAM[n], donde n es el número de tarea que se
pausará.
Detalles:
A–239
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
• La condición de PAUSA se cumple cuando un programa está en pausa, por ejemplo, por un error, una
declaración de PAUSA o la acción de PAUSA.
• Si una de las acciones correspondientes a una condición de PAUSA es una llamada de rutina, es necesario
especificar una acción NO PAUSA para permitir la ejecución de la rutina.
Además, la rutina a la que se llama debe incluir una declaración de PAUSA para que el sistema pueda
manejar completamente la causa de la pausa original.
• La condición PAUSE puede ir seguida de la cláusula PROGRAM[n], donde n es el número de tarea que se
pausará.
PAUSA Condición
CONDICIÓN[1]:
CUANDO PAUSA HACER
SALIDA[1] = CIERTO
SEGUIR
HABILITAR CONDICIÓN[1]
CONDICIÓN FINAL
Detalles:
— Se completan todas las acciones, excepto las acciones de llamada de rutina. Las acciones de llamada de rutina se realizan
cuando se reanuda el programa.
A–240
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• La instrucción PAUSE puede ir seguida de la cláusula PROGRAM[n], donde n es el número de tarea que se
pausará.
Ver también:Apéndice E, “Diagramas de sintaxis”, para obtener más información sobre la sintaxis
Ejemplo:Si DIN[1] es VERDADERO, el siguiente ejemplo detiene el programa KAREL usando la instrucción
PAUSE. El mensaje, “El programa está en pausa. Presione la tecla de función REANUDAR para continuar” se
mostrará en la pantalla CRT/KB.
Declaración de PAUSA
PROGRAMA p_pausa
EMPEZAR
SI DIN[1] ENTONCES
ESCRIBIR ('El programa está en pausa.')
ESCRIBIR ('Presione la tecla de función REANUDAR para continuar', CR)
PAUSA
TERMINARA SI
FINAL p_pausa
Parámetros de entrada/salida:
Detalles:
• nombre de la tareaes el nombre de la tarea a pausar. Si el nombre de la tarea es '*TODAS*', todas las tareas en ejecución se
pausan, excepto las tareas que tienen establecido el atributo "ignorar solicitud de pausa".
• fuerza_swespecifica si una tarea debe pausarse incluso si la tarea tiene establecido el atributo "ignorar
solicitud de pausa". Este parámetro se ignora si task_name es '*ALL*'.
A-241
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
• parada_mtn_swespecifica si se detienen todos los grupos de movimiento que pertenecen a la tarea especificada.
Ejemplo:El siguiente ejemplo pausa la tarea especificada por el usuario y detiene cualquier movimiento.
Referirse a capitulo 16MULTITAREA,para más ejemplos.
Objetivo:Suspende la ejecución de la tarea hasta que el valor del semáforo sea mayor que cero o
expire max_time
Parámetros de entrada/salida:
Detalles:
A-242
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• A continuación,se acabó el tiempose establece en VERDADERO si max_time expiró sin que el semáforo sea distinto de cero; de
lo contrario, se establece en FALSO.
Parámetros de entrada/salida:
Detalles:
• pipe_name es el nombre del archivo de tubería. Si el archivo no existe, se creará con esta
operación.
• CMOS_flag si se establece en TRUE colocará los datos de la tubería en CMOS. Por defecto, los datos de tubería están en DRAM.
• n_sectors número de sectores de 1024 bytes para asignar a la tubería. El valor predeterminado es 8.
• record_size el tamaño de un registro binario en una tubería. Si se establece en 0, la tubería se trata como ASCII. Si una tubería es
binaria y se imprimirá como datos formateados, entonces debe establecerse en la longitud del registro.
A–243
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Ver también:Para obtener más información, consulte "PIP: Dispositivo" enSección 9.3.4.
Parámetros de entrada/salida:
Detalles:
• Si no había solicitudes de lectura activas cuando se suspendió, esta operación no reanudará ninguna entrada.
Esto no es un error.
• pop_idse devuelve desde PUSH_KEY_RD y debe usarse para reactivar las solicitudes de lectura.
Sintaxis:port_id[n] = expresión
A–244
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
dónde:
n : un ENTERO
Detalles:
• La matriz de puertos debe ser una matriz de puertos de salida en la que se pueda escribir mediante un programa KAREL. Consulte
el Capítulo 2, “Elementos del idioma”.
• expresiónpuede ser una variable estática definida por el usuario, una variable del sistema que puede ser leída por un programa
KAREL, cualquier constante o una cláusula EVAL.
• Siexpresiónes una variable, el valor utilizado es el valor actual de la variable en el momento en que se realiza la
acción, no cuando se define el controlador de condiciones.
• Siexpresiónes una cláusula EVAL, se evalúa cuando se define el controlador de condiciones y ese
valor se asigna cuando se realiza la acción.
• Si la expresión es una variable que no está inicializada cuando el controlador de condiciones está habilitado,
el programa se cancelará con un error.
Ejemplo:Referirse aSección B.1, "Configuración de puertos de salida digital para monitoreo" (DOUT_EX.KL) para un
ejemplo de programa detallado.
dónde:
n : un ENTERO
Detalles:
A-245
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
• port_iddebe ser uno de los identificadores de matriz de puertos BOOLEAN predefinidos con acceso de lectura. Consulte el
Capítulo 2, “Elementos del idioma”.
Ejemplo:Referirse aSección B.1, "Configuración de puertos de salida digital para monitoreo" (DOUT_EX.KL) para un
ejemplo de programa detallado.
Objetivo:Devuelve un XYZWPR compuesto por los argumentos de ubicación especificados (x,y,z), los argumentos de
orientación (w,p,r) y el argumento de configuración (c)
Sintaxis:POS(x, y, z, w, p, r, c)
Parámetros de entrada/salida:
[en] x, y, z, w, p y r :REAL
[en] c :CONFIG
Detalles:
• Cdebe ser una configuración válida para el robot conectado al controlador. CNV_STR_CONF se puede utilizar para
convertir una cadena en una variable CONFIG.
• X,y,yzson los valores cartesianos de la ubicación (en milímetros). Cada argumento debe estar en el rango de
±10000000 mm (±10 km). De lo contrario, el programa se detiene con un error.
• w,pags,yrson los valores de guiñada, cabeceo y balanceo de la orientación (en grados). Cada argumento debe
estar en el rango de ±180 grados. De lo contrario, el programa se detiene con un error.
Ejemplo:El siguiente ejemplo utiliza el POS integrado para designar numéricamente la POSICIÓN
pos_siguiente.
A-246
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Objetivo:Esta rutina se utiliza para convertir posiciones cartesianas (in_pos) en ángulos de articulación (out_jnt)
llamando a la rutina de cinemática inversa.
Parámetros de entrada/salida:
Detalles:
• la entradaref_jntson los ángulos de articulación de referencia que representan la posición del robot justo antes de
moverse a la posición actual.
• la entradaconfig_refes un número entero que representa el tipo de solución deseada. Los valores enumerados a
continuación son válidos. Además, se pueden usar las constantes predefinidas entre paréntesis y se pueden
agregar los valores según sea necesario. Un ejemplo incluye: config_ref = HALF_SOLN + CONFIG_TCP.
A–247
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
— 0 :(FULL_SOLN) = Predeterminado
— 8 :(NO_TURNS) = Ignora los números de giro de muñeca. Use la ruta más cercana para las juntas 4, 5 y 6
(usa ref_jnt).
— 16 :(NO_M_TURNS) = Ignorar el número de giro del eje principal (solo J1). Usa el camino más cercano.
• la entradawjnt_cfges la configuración de la articulación de la muñeca. Este valor debe ser ingresado cuando
config_ref corresponde a HALF_SOLN.
• la entradaext_angcontiene los valores de los ángulos de articulación para los ejes extendidos, si existen.
Parámetros de entrada/salida:
Detalles:
A–248
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
— 1 :POSICIÓN
— 2 :XYZWPR
— 6 :XYZWPREXT
— 9 :PUNTOS CONJUNTOS
Ejemplo:El siguiente ejemplo determina el tipo de posición en el registro y usa el incorporado apropiado para
obtener datos.
A–249
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
ENDSELECT
ENDFOR
FIN get_reg_data
Objetivo:Define una variable, tipo de retorno de función o parámetro de rutina como tipo de datos de POSICIÓN
Detalles:
• Una POSICIÓN consta de una matriz que define los vectores normal, de orientación, de aproximación y de ubicación y un
componente que especifica una cadena de configuración, para un total de 56 bytes.
• La cadena de configuración indica las ubicaciones de las articulaciones y los múltiples giros que describen la
configuración del robot cuando se encuentra en una posición particular.
• Siempre se hace referencia a una POSICIÓN con respecto a un marco de coordenadas específico.
• El tipo de datos POSITION se puede utilizar para representar un marco de referencia en cuyo caso se
ignora el componente de configuración.
• Las transformaciones del marco de coordenadas se pueden realizar utilizando el operador de posición relativa (:).
• Una POSICIÓN puede ir seguida de IN GROUP[n], donde n indica el grupo de movimiento con el que se
utilizarán los datos. El valor predeterminado es el grupo especificado por la directiva %DEFGROUP, o 1.
• Se puede acceder a los componentes de las variables de POSICIÓN o configurarlos como si estuvieran definidos de la siguiente manera:
A–250
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Ejemplo:Referirse aSección B.1, "Configuración de puertos de salida digital para monitoreo" (DOUT_EX.KL) para un
ejemplo de programa detallado.
Objetivo:Publica el código de error y el código de razón en el sistema de informe de errores para mostrar y mantener el
historial de errores
Parámetros de entrada/salida:
Detalles:
ffccc (decimal)
dónde
A-251
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Ejemplo:Referirse aSección B.13, "Uso de DISCTRL_ALPHA incorporado" (DCALP_EX.KL), para ver un ejemplo de
programa detallado.
Objetivo:Publica el código de error con gravedad local en el sistema de informe de errores para mostrar y mantener el
historial de errores
Parámetros de entrada/salida:
Detalles:
ffccc (decimal)
dónde
A-252
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
ERSEV_PAUSE: PAUSE Global, pausa todas las tareas y detiene todo el movimiento después del segmento de movimiento actual
ERSEV_PAUSEL: PAUSE Local, pausa la tarea local y detiene todo el movimiento para la tarea local después del segmento de
movimiento actual
ERSEV_STOP: STOP Global, pausar todas las tareas y detener todo el movimiento
ERSEV_STOPL: DETENER Local, pausar la tarea local y detener todo el movimiento para la tarea local
ERSEV_SERVO: SERVO Global, apague toda la potencia del servo y pause todas las tareas
ERSEV_SERVOL: SERVO Local, apague la alimentación del servo para los grupos de movimiento de tareas locales y pause las
tareas locales
ERSEV_ABORT: ABORT Global, cancelar todas las tareas y cancelar todo el movimiento
ERSEV_ABORTL: ABORTAR Local, cancelar la tarea local y cancelar todo el movimiento para la tarea local
ERSEV_SYSTEM: SYSTEM Global, existe un problema en el sistema e impide cualquier otra operación
Sintaxis:POST_SEMA(n°_semáforo)
Parámetros de entrada/salida:
Detalles:
A–253
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Parámetros de entrada/salida:
Detalles:
• Sinoesperar_swes TRUE, la ejecución del programa continúa mientras se ejecuta el comando. Si es FALSO, el
programa se detiene, incluidos los controladores de condiciones, hasta que se complete la operación.
Si tiene manejadores de condiciones críticas de tiempo en su programa, colóquelos en otro programa que se ejecute
como una tarea separada.
Sintaxis:%PRIORIDAD = n
Detalles:
A–254
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• La prioridad predeterminada es 50. ConsulteSección 16.4, "Programación de tareas" para obtener más información
sobre cómo la prioridad especificada se convierte en la prioridad del sistema.
• La prioridad se puede establecer durante la ejecución de la tarea mediante la rutina integrada SET_TSK_ATTR.
Ejemplo:Por lo general, una tarea de manejo de errores depende de un error y, cuando ocurre un error, procesa la
recuperación del error lo antes posible. En este caso, es posible que la tarea de manejo de errores deba tener una prioridad
más alta que otras tareas, por lo que "n" debe ser inferior a 50.
A–255
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Objetivo:Guarda el programa especificado y todos los programas llamados desde la memoria de ejecución a un dispositivo
de almacenamiento. Si los programas llamados llaman a otros programas, se guardarán recursivamente. Puede especificar
que se guarden las variables de programa asociadas.
Parámetros de entrada/salida
Detalles:
• tipo_progespecifica el tipo de programas que se van a guardar. Los tipos válidos son:
• tamaño máximoespecifica el tamaño máximo de espacio en disco en kilobytes necesarios para realizar copias de seguridad de los programas. Si no hay
suficiente memoria disponible en el dispositivo de almacenamiento, no se realizará una copia de seguridad de ningún programa y el estado será igual a
A–256
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• Si el espacio en disco necesario para realizar la copia de seguridad de los programas supera max_size, la copia de seguridad continuará. La
copia de seguridad aún puede fallar si no hay suficiente espacio para guardar todos los programas. El estado de retorno será igual a 2002,
"ARCHIVO-002 El dispositivo está lleno". En este caso existirá una copia de seguridad parcial. Para evitar este caso, asegúrese de que
• escribir_prot,si es verdadero, especifica que se deben guardar los programas protegidos contra escritura. Si es falso, especifica que los
programas protegidos contra escritura no deben guardarse.
• El sistema se mantendrá informado y manejará tantos programas como pueda incluso cuando reciba un
error. Por ejemplo, si falta un programa de los ocho, se guardan los siete programas restantes. En este caso
se devuelve al usuario en estado el error "Programa no existe". En este caso, se publica un error con el
nombre del programa en el error de cada programa. El código de causa es lo que se devuelve de la rutina de
guardar.
• Debe existir en memoria un programa KAREL o Teach Pendant del mismo nombre con variables como programa
llamado o de lo contrario el sistema no guardará el VR.
Ejemplo:El siguiente ejemplo guarda ANS00003 con la extensión adecuada en el subdirectorio GMX_211 en FR:
dispositivo. Guardará todos los programas a los que ANS00003 llama recursivamente, independientemente del
tipo de programa. No guardará las variables KAREL. Fallará si hay menos de 200k de espacio libre en el
dispositivo FR:.
VAR
estado: ENTERO
EMPEZAR
PROG_BACKUP('FR:\GMX_211\ANS00003', PBR_NVRTYPE, 200, VERDADERO, estado)
Ejemplo:El siguiente ejemplo guarda ANS00003 con la extensión de archivo adecuada en el subdirectorio
GMX_211 en FR: dispositivo. Guardará los programas JB, PR, MR o TP que son llamados recursivamente por
ANS00003. No guardará los programas protegidos contra escritura. Fallará si hay menos de 100k de espacio
libre en el dispositivo FR:.
A–257
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
VAR
estado: ENTERO
EMPEZAR
PROG_BACKUP('FR:\GMX_211\ANS00003', PBR_MNTYPE, 100, FALSO, estado)
Ejemplo:El siguiente ejemplo guarda MAIN en MC: dispositivo con la extensión de archivo adecuada.
Guardará todos los programas y variables que sean llamados recursivamente por MAIN. Fallará si hay menos
de 300k de espacio libre en el dispositivo MC:.
VAR
estado: ENTERO
EMPEZAR
PROG_BACKUP('MC:\MAIN', PBR_ALLTYPE, 300, VERDADERO, estado)
A–258
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Objetivo:Borra el programa especificado y todos los programas llamados de la memoria de ejecución. Si los
programas llamados llaman a otros programas, se borrarán recursivamente. Puede especificar que también se borre
cualquier variable de programa asociada. Las variables a las que se hace referencia desde otros programas no se
borrarán.
Parámetros de entrada/salida:
Detalles:
• El sistema se mantendrá informado y borrará tantos programas como pueda. Si falta uno de los
programas llamados, esto no es un error. Sin embargo, si ese programa faltante llama a otros programas,
esos otros programas no se encontrarán y no se borrarán. Los errores se publican con el nombre del
programa en el error de cada programa que no se borra. El código de causa es lo que devuelve la rutina
de borrado.
A–259
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
• La eliminación de cualquier dato de VR está sujeta a que otro programa haga referencia a ella. Este error se ignorará para
cualquier operación de borrado de variables.
Ejemplo:El siguiente ejemplo borra ANS00003.TP de la memoria. Borrará todos los programas que ANS00003
llama recursivamente independientemente del tipo de programa y los borrará de la memoria. No borrará los
programas protegidos contra escritura. No borrará ninguna variable de KAREL.
VAR
estado: ENTERO
EMPEZAR
PROG_CLEAR('ANS00003.TP', PBR_NVRTYPE, estado)
Ejemplo:El siguiente ejemplo borra el programa ANS00003.TP de la memoria. Solo borrará los programas
JB, PR, MR y TP que ANS00003 llama recursivamente. No borrará los programas protegidos contra
escritura.
VAR
estado: ENTERO
EMPEZAR
PROG_CLEAR('ANS00003.TP', PBR_MNTYPE, estado)
A–260
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Objetivo:Restaura (carga) el programa especificado y todos los programas llamados en la memoria de ejecución. Si
los programas llamados llaman a otros programas, se cargarán recursivamente. Cualquier variable de programa
asociada también se cargará si existen los archivos VR.
Parámetros de entrada/salida:
Detalles:
• file_specespecifica el dispositivo de almacenamiento y el programa para restaurar. Si se especifica un tipo de archivo, se ignora.
• El sistema se mantendrá informado y manejará tantos programas como pueda incluso cuando reciba un
error. Por ejemplo, si falta un programa de los ocho, se cargan los siete programas restantes. En este
caso se devuelve al usuario en estado el error "El archivo no existe". En este caso, se publica un error con
el nombre del programa en el error de cada programa. El código de causa es lo que se devuelve de la
rutina de carga.
• Si se especifica un subdirectorio, los programas llamados se cargan desde ese subdirectorio. Cualquier archivo
adicional en ese subdirectorio no se cargará automáticamente.
• Ya debe existir en memoria un programa KAREL o TP del mismo nombre como programa llamado o de lo
contrario el sistema no cargará el VR.
• Los tipos de VR se restaurarán incluso si las variables ya existen. Es decir, el sistema sobrescribirá cualquier
valor de variable existente con los valores guardados en el archivo VR.
Ejemplo:El siguiente ejemplo restaura ANS00003.TP desde el subdirectorio GMX_211 en FR: dispositivo. Restaurará
todos los programas a los que ANS00003 llama recursivamente, independientemente del tipo de programa.
Restaurará archivos VR si están en el directorio de restauración.
A–261
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
VAR
estado: ENTERO
EMPEZAR
PROG_RESTORE('FR:\GMX_211\ANS00003.TP', estado)
VAR
estado: ENTERO
EMPEZAR
PROG_RESTORE('FR:\GMX_211\ANS00003', estado)
Ejemplo:El siguiente ejemplo restaura MAIN desde MC: dispositivo encontrando su tipo de archivo. Restaurará
todos los programas y variables que sean llamados recursivamente por MAIN.
VAR
estado: ENTERO
EMPEZAR
PROG_RESTORE('MC:\PRINCIPAL', estado)
A–262
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Parámetros de entrada/salida:
Detalles:
• tipo_progespecifica el tipo de programas que se van a recuperar. Los tipos válidos son:
A–263
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
• n_saltarEste parámetro solo se puede usar cuando se usa * para el nombre del programa y 7 para el tipo de
programa. De lo contrario, usó el parámetro f_index para múltiples llamadas cuando existen más
programas que la longitud declarada de ary_name. Establezca n_skip en 0 la primera vez que use
PROG_LIST. Si ary_name está completamente lleno de nombres de programas, copie la matriz a otra ARRAY
de STRINGS y ejecute PROG_LIST nuevamente con n_skip igual a n_skip + n_progs. La llamada a PROG_LIST
omitirá los programas encontrados en los pases anteriores y ubicará solo los programas restantes.
• formatoespecifica el formato del nombre del programa. Los siguientes valores son válidos paraformato:
• tipo_prog=2 personajes
• nombre_arioes un ARRAY de STRING utilizado para almacenar los nombres de los programas.
• f_índicees un parámetro opcional para la indexación rápida. Si especifica prog_name como un comodín complejo
(cualquier cosa que no sea *), entonces debe usar este parámetro. La primera llamada al conjunto PROG_LIST
f_índiceyn_saltarambos a cero.f_índiceluego se usará internamente para encontrar rápidamente el siguiente
prog_name. No cambiesf_índiceuna vez que un listado para un particularprog_name ha comenzado.
Sintaxis:PROGRAMA prog_name
dónde:
A–264
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Detalles:
• El identificador que se usa para nombrar un programa no se puede usar en el programa para ningún otro propósito, como para
identificar una variable o una constante.
• prog_nametambién debe aparecer en la instrucción END que marca el final de la sección ejecutable del
programa.
• El nombre del programa se puede usar para llamar al programa como una rutina de procedimiento desde dentro de un programa de la
misma manera que los nombres de rutina se usan para llamar a las rutinas de procedimiento.
Ejemplo:Referirse aapéndice B, "Programas de ejemplo de KAREL", para ver ejemplos más detallados de
cómo utilizar la instrucción PROGRAM.
dónde:
time_in_ms : un ENTERO
Detalles:
• Un pulso siempre enciende el puerto al comienzo del pulso y lo apaga al final del
pulso.
• Si el puerto está "normalmente encendido", se pueden lograr pulsos negativos configurando el puerto en
polaridad inversa o ejecutando la siguiente secuencia:
DOUT[n] = FALSO
RETRASO x
DOUT[n] = CIERTO
• Si el programa se detiene mientras hay un pulso en curso, el pulso terminará en el momento correcto.
A–265
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
• Si el programa se cancela mientras hay un pulso en curso, el puerto permanece en el estado en el que se
encontraba cuando ocurrió la cancelación.
Ejemplo:Referirse aSección B.1, "Configuración de puertos de salida digital para monitoreo" (DOUT_EX.KL) para un
ejemplo de programa detallado.
dónde:
time_in_ms : un ENTERO
Detalles:
La duración real del pulso será de cero a 8 milisegundos menos que el valor redondeado.
Por ejemplo, si se especifica 100, se redondea a 104 (el siguiente múltiplo de 8) milisegundos. La
duración real será de 96 a 104 milisegundos.
• Un pulso siempre enciende el puerto al comienzo del pulso y lo apaga al final del
pulso.
• Si el puerto está "normalmente encendido", se pueden lograr pulsos negativos configurando el puerto en
polaridad inversa o ejecutando la siguiente secuencia:
DOUT[n] = FALSO
RETRASO x
DOUT[n] = CIERTO
A–266
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Ver también:Apéndice E, "Diagramas de sintaxis" para obtener más información sobre la sintaxis
Ejemplo:En el siguiente ejemplo, se pulsa una salida digital, seguida de la pulsación de una segunda salida
digital. Debido a que se especifica NOWAIT,DOUT[start_air]se ejecutará antesSALIDA[5]esta completado.
Declaración de pulso
PULSE DOUT[5] POR (segundos * 1000) NOWAIT PULSE
DOUT[start_air] POR 50 NOWAIT
Sintaxis:CONDICIÓN DE PURGA[cond_hand_no]
dónde:
Detalles:
• La declaración no tiene efecto si no hay un controlador de condición definido con el número especificado.
• La instrucción PURGE CONDITION se usa solo para depurar los controladores de condiciones globales.
A–267
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
MÁS
HABILITAR CONDICIÓN[1]
TERMINARA SI
Objetivo:Purga el dispositivo de archivo de memoria especificado liberando los bloques usados que ya no son necesarios
Parámetros de entrada/salida:
Detalles:
• dispositivoespecifica el dispositivo de archivo de memoria para purgar.dispositivodebe establecerse en 'FR:' para DESDE el
disco, 'RD:' para el disco RAM o 'MF:' para ambos discos.
• La operación de purga solo es necesaria cuando el dispositivo no tiene suficiente memoria para realizar una
operación. El dispositivo 'FR:' devolverá 85001 si el disco FROM está lleno. El dispositivo 'RD:' devolverá
85020 si el disco RAM está lleno.
• La operación de purga borrará los bloques de archivos que se usaron anteriormente, pero que ya no se necesitan. Estos
se llaman bloques de basura. El disco FROM puede contener muchos bloques de basura si los archivos se eliminan o
sobrescriben. El disco RAM normalmente no contiene bloques de basura, pero pueden ocurrir cuando se desconecta la
energía durante una copia de archivo.
• El VOL_SPACE incorporado se puede usar para determinar la cantidad de bloques de basura en el disco FROM. Las
limitaciones de hardware pueden reducir la cantidad de bloques realmente liberados.
• El dispositivo debe estar montado y no se pueden abrir archivos en el dispositivo o se devolverá un error.
Ejemplo:Volver aSección B.9, "Uso de las funciones integradas de archivo y dispositivo" (FILE_EX.KL), para obtener un ejemplo
de programa más detallado.
A–268
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Parámetros de entrada/salida:
Detalles:
• Suspende todas las solicitudes de lectura en el dispositivo de teclado especificado que usa (ya sea como accept_mask o
term_mask) cualquiera de las clases de teclas especificadas.
• Si no hay solicitudes de lectura activas, un conjunto nulo de entradas se registra como suspendido. Esto no es un error.
• máscara_clavees una máscara bit a bit que indica las clases de caracteres que se suspenderán. Debe
ser un OR de las constantes definidas en el archivo de inclusión klevkmsk.kl.
• pop_idse devuelve y debe usarse en una llamada a POP_KEY_RD para reactivar las solicitudes de lectura.
A–269
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Sintaxis:tipo_cola = ESTRUCTURA
n_entradas : ENTERO
secuencia_no : ENTERO
cabeza : ENTERO
cola : ENTERO
ESTRUCTURA FINAL
Detalles:
• tipo_colase utiliza para inicializar y mantener los datos de la cola para las rutinas integradas QUEUE.No
cambie estos datos; se usa internamente.
dónde:
A–270
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Detalles:
• Sifile_varno se especifica en una instrucción READ, se utiliza TPDISPLAY predeterminado. La directiva %CRTDEVICE
cambiará el valor predeterminado a INPUT.
• Sifile_varse especifica, debe ser uno de los dispositivos de entrada (INPUT, CRTPROMPT, TPDISPLAY,
TPPROMPT) o una variable que se estableció en la sentencia OPEN FILE.
• Sifile_varatributo se estableció con la opción UF, los datos se transmiten a las variables especificadas en forma
binaria. De lo contrario, los datos se transmiten como texto ASCII.
• dato_elementopuede ser una variable del sistema que tenga acceso RW o una variable definida por el usuario.
• Cuando se ejecuta la instrucción READ, los datos se leen comenzando con el siguiente carácter de entrada que no esté en
blanco y terminando con el último carácter antes del siguiente espacio en blanco, final de línea o final de archivo para todos
los tipos de entrada excepto STRING.
• Sidato_elementoes del tipo PATH, puede especificar que se lea la ruta completa, se lea un nodo específico
([n]) o se lea un rango de nodos ([n .. m]).
• Se pueden usar especificadores de formato opcionales para controlar la cantidad de datos leídos para cadadato_elemento
. El efecto de los especificadores de formato depende del tipo de datos del elemento que se lee y de si los datos están en
formato de texto (ASCII) o binario (sin formato).
• La palabra reservada CR, que se puede utilizar como un elemento de datos, especifica que cualquier dato restante en la línea de
entrada actual debe ignorarse. El siguiente elemento de datos se leerá desde el comienzo de la siguiente línea de entrada.
• Si al leer de un archivo se produce algún error durante la entrada, la variable que se lee y todas las variables subsiguientes hasta
CR en la lista de datos se configuran como no inicializadas.
• Sifile_vares un dispositivo de ventana y se producen errores durante la entrada, se muestra un mensaje de error que indica el
elemento de datos incorrecto y se le solicita que ingrese un reemplazo para el elemento de datos no válido y que vuelva a ingresar
todos los elementos posteriores.
Ver también:Capítulo 7OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS,para obtener más información sobre los especificadores de
formato READ, la función incorporada IO_STATUS,Apéndice E, “Diagramas de sintaxis”, para obtener más información sobre la sintaxis
A–271
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Parámetros de entrada/salida:
Detalles:
• kstaes un KAREL STRING ARRAY que se utiliza para almacenar la información que se lee del archivo de texto del
diccionario.
• Sikstaes demasiado pequeño para almacenar todos los datos, entonces los datos se truncan y el estado se establece en
33008, "Elemento de diccionario truncado".
• &new_line es el único código de atributo reservado que se puede leer de archivos de texto de diccionario usando
READ_DICT. El READ_DICT incorporado ignora todos los demás códigos de atributos reservados.
Ejemplo:Referirse aSección B.12, "Visualización de una lista desde un archivo de diccionario" (DCLST_EX.KL), para ver un
ejemplo de programa detallado.
A–272
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Parámetros de entrada/salida:
Detalles:
• elemento_noespecifica el número de elemento a leer. Este número se designa con un $ en el archivo del
diccionario.
• valor_matrizes una matriz de nombres de variables que corresponde a cada elemento de datos con formato en el
texto del diccionario. Cada nombre de variable se puede especificar como '[prog_name]var_name'.
• kstaes un KAREL STRING ARRAY que se utiliza para almacenar la información que se lee del archivo de texto
del diccionario.
• Sikstaes demasiado pequeño para almacenar todos los datos, entonces los datos se truncan y el estado se establece en
33008, "Elemento de diccionario truncado".
• &new_line es el único código de atributo reservado que se puede leer de los archivos de texto del diccionario
mediante READ_DICT_V. El READ_DICT_V incorporado ignora todos los demás códigos de atributos reservados.
A–273
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
FINAL util_prog
Parámetros de entrada/salida:
A–274
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Detalles:
• Hace que los datos de clases específicas de caracteres se almacenen en un búfer proporcionado por el usuario hasta que se
cumpla una condición de finalización o el búfer esté lleno. Vuelve a la persona que llama cuando finaliza la lectura.
• Si usa READ_KB para CRT/KB, obtendrá caracteres CRT "en bruto" devueltos. Para obtener los códigos de
tecla equivalentes de la consola portátil, debe realizar la siguiente función:
clave_tp = $CRT_KEY_TBL[clave_crt + 1]
Este mapeo le permite usar software común entre el CRT/KB y los dispositivos colgantes de
enseñanza.
• READ_KB y algunas otras utilidades usan una variable en su programa KAREL llamada device_stat
para establecer la asociación entre el programa KAREL y la pantalla de la interfaz de usuario. Por
ejemplo, si tiene una tarea [MAINUIF] que llama a READ_KB, la variable que se utiliza para realizar la
asociación es [MAINUIF]device_stat. Si no establece device_stat, solo podrá leer caracteres en el
modo de pantalla única o en el panel izquierdo.
• device_stat debe establecerse en el panelID en el que se ejecuta su aplicación. Para el colgante monocromático/de modo
único estándar, device_stat =1. Para interactuar en el panel derecho, establezca device_stat=2. Para interactuar en el panel
inferior derecho, establezca device_stat=3. Las conexiones externas de Internet Explorer usan los paneles 4-9. Para CRT/
KB, establezca device_stat=255.
• file_vardebe estar abierto a un dispositivo de teclado. Sifile_vartambién está asociado con una ventana, los
caracteres se repiten en la ventana.
• Los caracteres se almacenan enbuffer,hasta un máximo detamaño del búfero el tamaño de la cuerda, el que
sea más pequeño.
• aceptar_máscaraes una máscara bit a bit que indica las clases de caracteres que se aceptarán como entrada. Debe
ser un OR de las constantes definidas en el archivo de inclusión klevkmsk.kl.
A–275
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
• es razonable paraaceptar_máscaraser cero; esto significa que no se aceptan caracteres como entrada.
Esto se usa cuando se espera una sola clave que se devolverá como term_char. En este caso, tamaño del
búfersería cero.
— Eliminar caracteres: si el cursor no está en la primera posición del campo, se elimina el carácter
a la izquierda del cursor.
— Flechas hacia arriba y hacia abajo: recupera la entrada ingresada previamente en las lecturas del mismo archivo.
• term_maskes una máscara bit a bit que indica las condiciones que terminarán la solicitud. Debe ser un OR
de las constantes definidas en el archivo de inclusión klevkmsk.kl.
A–276
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• init_data_papunta a una cadena que se muestra como el valor inicial del campo de entrada. Esto no
debe ser más largo que buffer_size.
• term_charrecibe un código que indica el carácter u otra condición que finalizó el formulario. Los códigos para las
condiciones de terminación de clave se definen en el archivo de inclusión klevkeys.kl. Las claves que normalmente se
devuelven son constantes predefinidas de la siguiente manera:
ky_up_arw
ky_dn_arw
ky_rt_arw
ky_lf_arw
ky_enter
ky_prev
ky_f1
ky_f2
ky_f3
ky_f4
ky_f5
ky_siguiente
Ejemplo:Referirse aSección B.2, "Copia de variables de ruta" (CPY_PTH.KL), para ver un ejemplo de programa
detallado.
El siguiente ejemplo suspende cualquier lectura del colgante de enseñanza, usa READ_KB para leer una sola tecla y
luego reanuda las lecturas suspendidas.
A–277
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
n_chars_got: ENTERO
índice_pop: ENTERO
estado: ENTERO
cadena: CADENA[1]
EMPEZAR
- - Suspender cualquier lectura pendiente del teclado TP
PUSH_KEY_RD('TPKB', 255, pop_index, status) IF (status = 0)
THEN
ESCRIBIR (CR, 'pop_index is', pop_index) OTRO
FIN leer KB
Objetivo:Define una variable, tipo de retorno de función o parámetro de rutina como un tipo de datos REAL con un
valor numérico que incluye un punto decimal y una parte fraccionaria, o números expresados en notación científica.
Sintaxis:REAL
Detalles:
A–278
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• El punto decimal es obligatorio cuando se define una constante o literal REAL (excepto cuando se usa
notación científica). El punto decimal no es obligatorio al definir una variable REAL siempre que se haya
declarado como REAL.
— El punto decimal se desplaza a la izquierda para que solo quede un dígito en la parte INTEGER.
• Todas las variables REALES con magnitudes entre -1.175494E- 38 y +1.175494E-38 se tratan como
0.0.
• Solo las expresiones REAL o INTEGER pueden asignarse a variables REAL, devolverse desde rutinas de
función REAL o pasarse como argumentos a parámetros REAL.
• Si se usa una expresión INTEGER en cualquiera de estos casos, se trata como un valor REAL. Si se utiliza
una variable INTEGER como argumento de un parámetro REAL, siempre se pasa por valor, no por
referencia.
A–279
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
dónde:
variable : una variable INTEGER o REAL estática o un elemento de matriz de puertos BOOLEAN
Detalles:
• Las condiciones relacionales son condiciones de estado, lo que significa que la relación se prueba durante cada exploración.
= :igual
• variablepuede ser cualquiera de las señales del conjunto de puertos, una variable estática definida por el usuario o una variable
del sistema que puede leer un programa KAREL.
• expresiónpuede ser una variable estática definida por el usuario, una variable del sistema que puede leer un programa
KAREL, cualquier constante o una cláusula EVAL.
• Las variables utilizadas en las condiciones relacionales deben inicializarse antes de habilitar el controlador de condiciones.
A–280
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Ejemplo:Referirse aSección B.1, "Configuración de puertos de salida digital para monitoreo" (DOUT_EX.KL) para un
ejemplo de programa detallado.
Objetivo:Desactiva la señal de apertura para una herramienta controlada por una señal o desactiva las señales de apertura y cierre
para una herramienta controlada por un par de señales.
dónde:
Detalles:
• El efecto real de la declaración depende de cómo se configuran las señales de MANO. Consulte el Capítulo
13, “Sistema de entrada/salida”.
• mano_numdebe ser un valor en el rango 1-2. De lo contrario, el programa se cancela con un error.
• La declaración no tiene efecto si el valor demano_numestá dentro del alcance pero la mano no está conectada.
• Si el valor demano_numestá dentro del rango pero la señal MANO representada por ese valor no ha sido
asignada, el programa se aborta con un error.
Ver también:Capítulo 13, "Sistema de entrada/salida", Apéndice D, "Diagramas de sintaxis", para obtener más información sobre la
sintaxis
Ejemplo:En el siguiente ejemplo, la mano del robot, especificada porpinza,se relaja usando la
instrucción RELAX HAND. El robot luego se mueve a la POSICIÓNpstartantes de cerrar la mano.
A–281
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Objetivo:Libera todo el control de movimiento del brazo robótico y los ejes auxiliares o extendidos del programa KAREL
para que puedan ser controlados por la consola portátil mientras se ejecuta un programa KAREL.
Sintaxis:LIBERAR
Detalles:
• El movimiento detenido antes de la ejecución de la instrucción RELEASE solo se puede reanudar después de la
ejecución de la siguiente instrucción ATTACH.
• Si el movimiento se inicia desde el programa mientras está en un estado liberado, el programa se aborta con el
siguiente error, "MCTRL Denegado porque liberado".
• Si se ejecuta RELEASE mientras el movimiento está en progreso o en una condición HOLD, el programa se
aborta con el siguiente error, "Error en la solicitud de separación".
Ver también:Apéndice E, “Diagramas de sintaxis”, para obtener más información sobre la sintaxis
Ejemplo:Referirse aSección B.1, "Configuración de puertos de salida digital para monitoreo" (DOUT_EX.KL) para un
ejemplo de programa detallado.
Objetivo:Elimina el diccionario especificado del idioma especificado o de todos los idiomas existentes.
Parámetros de entrada/salida:
Detalles:
A–282
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
dp_predeterminado
dp_inglés
dp_japonés
dp_frances
dp_german
dp_español
Ejemplo:Referirse aSección B.12, "Visualización de una lista desde un archivo de diccionario" (DCLST_EX.KL), para ver un
ejemplo de programa detallado.
Parámetros de entrada/salida:
Detalles:
• Sinoesperar_swes TRUE, la ejecución del programa continúa mientras se ejecuta el comando. Si es FALSO, el
programa se detiene, incluidos los controladores de condiciones, hasta que se complete la operación.
A–283
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Si tiene manejadores de condiciones críticas de tiempo en su programa, colóquelos en otro programa que se ejecute
como una tarea separada.
Objetivo:Cambia el nombre de una variable especificada en un programa especificado a un nuevo nombre de variable.
Parámetros de entrada/salida:
Detalles:
Objetivo:Cambia el nombre de todas las variables en un programa especificado a un nuevo nombre de programa.
Parámetros de entrada/salida:
A–284
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Detalles:
Objetivo:Repite las declaraciones hasta que una expresión BOOLEAN se evalúe como VERDADERO.
Sintaxis:REPETIR
{ declaración }
HASTA boolean_exp
dónde:
Detalles:
• boolean_expse evalúa después de la ejecución de las declaraciones en el cuerpo del ciclo REPEAT para
determinar si las declaraciones deben ejecutarse nuevamente.
Precaución
A–285
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Ver también:Apéndice E, “Diagramas de sintaxis”, para obtener más información sobre la sintaxis
Objetivo:Restablece el controlador.
Sintaxis:REINICIO (exitoso)
Parámetros de entrada/salida:
Detalles:
• Para determinar si la operación de reinicio fue exitosa, espere 1 segundo y verifique OPOUT[3] (LED
DE FALLA). Si esto es FALSO, la operación de reinicio fue exitosa.
• La instrucción que sigue a RESET Built-In no se ejecuta hasta que el restablecimiento falla o se completa. La
pantalla de estado en el CRT o la consola portátil indicará PAUSA durante el restablecimiento.
• El controlador parece estar en un estado PAUSADO mientras se realiza un restablecimiento pero, durante este tiempo,
los controladores de condición PAUSA no se activarán.
Ejemplo:Referirse aSección B.1, "Configuración de puertos de salida digital para monitoreo" (DOUT_EX.KL) para un
ejemplo de programa detallado.
A–286
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Sintaxis:REANUDAR <GRUPO[n{,n}]>
Detalles:
• Un conjunto de mociones es un grupo de mociones emitidas pero aún no finalizadas cuando se emite una
declaración o acción STOP.
• Si se ha detenido más de un conjunto de movimiento, RESUME reinicia el conjunto de movimiento no reanudado que se detuvo más
recientemente. Los RESUMIOS subsiguientes iniciarán los demás en la secuencia de último en entrar, primero en salir.
• Las mociones contenidas en un conjunto de movimiento detenido se reanudan en el mismo orden en que se
emitieron originalmente.
• Si una moción está en progreso cuando se emite la acción REANUDAR, cualquier moción reanudada ocurre después
de que se completa la moción actual.
• Si la cláusula de grupo no está presente, se reanudarán todos los grupos para los que la tarea tiene control
(cuando se define la condición).
• Si la moción que se detiene, reanuda, cancela o retiene es parte de una moción SIMULTÁNEA o
COORDINADA con otros grupos, las mociones de todos los grupos se detienen, reanudan,
cancelan o retienen.
Ejemplo:Referirse aSección B.1, "Configuración de puertos de salida digital para monitoreo" (DOUT_EX.KL) para un
ejemplo de programa detallado.
Sintaxis:REANUDAR <GRUPO[n{,n}]>
• Un conjunto de mociones es un grupo de mociones emitidas pero aún no finalizadas cuando se emite una
declaración o acción STOP.
• Si se ha detenido más de un conjunto de movimiento, RESUME reinicia el conjunto de movimiento no reanudado que se detuvo más
recientemente. Los RESUMIOS subsiguientes iniciarán los demás en la secuencia de último en entrar, primero en salir.
• Esos movimientos en un conjunto de movimiento detenido se reanudan en el mismo orden en que se emitieron
originalmente.
A–287
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
• Si una moción está en progreso cuando se emite la instrucción RESUME, cualquier moción reanudada se produce
después de que se complete la moción actual.
• Si la cláusula de grupo no está presente, se reanudarán todos los grupos para los que la tarea tiene control.
• Si la moción que se detiene, reanuda, cancela o retiene es parte de una moción SIMULTÁNEA o
COORDINADA con otros grupos, las mociones de todos los grupos se detienen, reanudan,
cancelan o retienen.
Ver también:Apéndice E, "Diagramas de sintaxis" para obtener más información sobre la sintaxis
Declaración de RESUMEN
CONDICIÓN[1]:
CUANDO DIN[1] = ON HACER
DETÉNGASE
CONDICIÓN FINAL
move_to_pr1 —— Llamar al programa TP para pasar a PR[1] IF
DIN[1] DESPUÉS
TERMINARA SI
Objetivo:Devuelve el control de una rutina/programa a la rutina/programa que realiza la llamada y, opcionalmente, devuelve un
resultado.
Detalles:
• valorse requiere al regresar de las funciones, pero no se permite al regresar de los procedimientos. El tipo
de datos devalordebe ser el mismo que el tipo utilizado en la declaración de la función.
A–288
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• Si una rutina de función regresa con la declaración END en lugar de una declaración RETURN,
el programa se cancela con el error 12321, "END STMT of a func rtn".
Ver también:Apéndice E, “Diagramas de sintaxis”, para obtener más información sobre la sintaxis
Objetivo:En V7.70 y posteriores, para permitir que un programa KAREL determine un comentario que se establece para un
puerto lógico específico de un host remoto.
Parámetros de entrada/salida:
Detalles:
• Puerto hostes una dirección IP o nombre de host del controlador de robot remoto.
• tipo_puertoespecifica el código para el tipo de puerto cuyo comentario se devuelve. Los códigos se definen en
kliotyps.kl.
• comentario_strse devuelve con el comentario para el puerto especificado. Esto debe declararse como una
CADENA con una longitud de al menos 16 caracteres. Solo se devuelven 16 caracteres incluso si el comentario
del servidor es más largo.
Ejemplo:
A–289
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
PROGRAMA RGTPCMT
%COMENTARIO='RC1DO[10] CMT'
%NOLOCKGROUP %AMBIENTE RPCC
%INCLUIR kliotipos
VAR
estado : ENTERO
comentario : CADENA[16]
EMPEZAR
Objetivo:En V7.70 y posteriores, para obtener el estado de simulación del puerto desde el control remoto.
Parámetros de entrada/salida
[en]puerto_host: STRING
[en]port_type: INTEGER
[en]port_no: INTEGER
Detalles:
• Puerto hostes una dirección IP o nombre de host del controlador de robot remoto.
• tipo_puertoespecifica el código para el tipo de puerto cuyo estado de simulación se devuelve. Los códigos se
definen en kliotyps.kl.
Ejemplo:
A–290
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Objetivo:En V7.70 y posteriores, para permitir que un programa KAREL determine el valor actual de un puerto lógico
específico de un host remoto.
Parámetros de entrada/salida:
[en]puerto_host: STRING
[en]port_type: INTEGER
[en]port_no:INTEGER
[out]port_value:INTEGER
Detalles:
• valorse devuelve con el valor actual (estado) del puerto especificado. Para los tipos de puerto BOOLEAN (DIN, por
ejemplo), será 0 = APAGADO o 1 = ENCENDIDO.
Ejemplo:
A–291
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Objetivo:En V7.70 y posteriores, para recuperar un comentario de un registro de posición de un host remoto.
Parámetros de entrada/salida:
[en]puerto_host: STRING
[en]register_no: INTEGER
[out]comment_str : STRING
Detalles:
• registro_noespecifica desde qué registro de posición recuperar el comentario. El comentario del registro
de posición dado se devuelve en el parámetrocomentario_str.
• comentario_strdebe declararse como una CADENA con una longitud de al menos 16 caracteres.
Ejemplo:
A–292
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
%NOLOCKGROUP
%AMBIENTE RPCC
VAR
estado : ENTERO
comentario : CADENA[16]
EMPEZAR
RGET_PREGCMT('RC1', 5, comentario, estado) END
RGTPRCMT
Objetivo:En V7.70 y posteriores, para obtener un valor INTEGER o REAL del registro especificado del host
remoto.
Parámetros de entrada/salida:
[en]puerto_host: STRING
[en]register_no: BOOLEAN
[out]real_flag: INTEGER
[out]int_value: ENTERO
[fuera]valor_real: REAL
Detalles:
• bandera_realse establece en VERDADERO yvalor realse establece en el contenido del registro si el registro especificado tiene un
valor real. De lo contrario,bandera_realse establece en FALSO yvalor_intse establece en el contenido del registro.
Ejemplo:
A–293
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
PROGRAMA RGTNREG
%COMENTARIO='OBTENER RC1 R[2]'
%NOLOCKGROUP
%AMBIENTE RPCC
VAR
estado : ENTERO
es real : BOOLEANO
int_val : ENTERO
valor_real : REAL
EMPEZAR
Objetivo:En V7.70 y posteriores, para obtener comentarios del registro especificado de un host remoto.
Parámetros de entrada/salida:
Detalles:
• comentario_strdebe declararse como una CADENA con una longitud de al menos 16 caracteres.
Ejemplo:
A–294
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
%NOLOCKGROUP
%AMBIENTE RPCC
VAR
estado : ENTERO
comentario : CADENA[16]
EMPEZAR
RGET_REG_CMT('RC1', 2, comentario, estado) FIN
RGTNRCMT
Objetivo:En V7.70 y posteriores, para obtener comentarios del registro de cadena especificado de un host remoto.
[en]register_no: INTEGER
[fuera]comment_str: STRING
Detalles:
• comentario_strdebe declararse como una CADENA con una longitud de al menos 16 caracteres.
Ejemplo:
A–295
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
EMPEZAR
Objetivo:En V7.70 y posteriores, para obtener un valor del registro de cadena especificado de un host remoto.
Parámetros de entrada/salida
Detalles:
Ejemplo:
A–296
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Objetivo:Envía una alerta al teléfono para que el usuario sea notificado inmediatamente sin necesidad de que la
aplicación móvil iRConnect esté activa. (disponible en v8.20 y posteriores).
Parámetros de entrada/salida
Detalles:
• alertaddres una dirección de correo electrónico de puerta de enlace SMS que llega como un mensaje de texto en un teléfono. Puede llevar
varias direcciones de correo electrónico separadas por punto y coma (;). Si ”, se utilizará la dirección de alerta que se muestra en la pantalla
• alertares el enlace que se muestra en el mensaje de texto. Al hacer clic, activará la aplicación móvil
iRConnect en el teléfono. Si ”, entonces se muestra el enlace predeterminado.
Ver también:Capítulo iRConnect en el Manual de operaciones y configuración de opciones de Internet para obtener más detalles.
Ejemplo:
El siguiente programa envía una alerta a iRConnect para su procesamiento inmediato por correo electrónico.
PROGRAMA RCMPRUEBA
%NOLOCKGROUP
VAR
alertaddr: CADENA[80]
tema: CADENA[80]
mensaje: CADENA[80]
alertar: CADENA[80]
estado: ENTERO
EMPEZAR
A–297
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
FIN RCMTEST
Objetivo:Envía un mensaje definido por el usuario como un correo electrónico a través de iRConnect (disponible en v8.10 y posteriores).
Parámetros de entrada/salida
Detalles:
• archivo_xmles un archivo de mensajes en formato XML. Este archivo se lee y elimina cuando el mensaje se pone en
cola, por lo que se puede reutilizar el mismo nombre de archivo si se llama a RMCN_SEND varias veces.
• archivos adjuntoses una matriz de archivos adjuntos. Los archivos adjuntos son opcionales. Estos archivos se leen
y eliminan cuando se envía el correo electrónico. Por lo tanto, pueden permanecer en la cola durante bastante
tiempo. Se deben usar nombres de archivo únicos si se llama a RMCN_SEND varias veces durante un período de
cola, o puede verificar si el archivo se eliminó para saber cuándo se envió. Los archivos adjuntos que utilizan el
dispositivo MD: no se eliminan. Siempre contendrán la información más actualizada cuando se envíen.
A–298
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• prioridades un indicador (0 o 1) que permite enviar un correo electrónico ahora o en la próxima actualización.
Ver también:Capítulo iRConnect en el Manual de operaciones y configuración de opciones de Internet para obtener más detalles.
Ejemplo:
El siguiente programa envía los datos del usuario a iRConnect para su procesamiento inmediato por correo electrónico.
PROGRAMA RCMPRUEBA
%NOLOCKGROUP
VAR
archivo_xml: CADENA[20]
prioridad : ENTERO
estado : ENTERO
adjunta: ARRAY[2] OF STRING[20] noattach:
ARRAY[1] OF STRING[1] BEGIN
prioridad = 1
archivo_xml = 'td:pick.xml'
adjunta[1] = 'md:errall.ls'
adjunta[2] = 'td:prod_datos.txt'
FIN RCMTEST
A–299
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Parámetros de entrada/salida
[en]puerto_host: STRING
[en]src_idx : ENTERO
Detalles:
• destino_idxespecifica un índice de registro de cliente. Los datos adquiridos se almacenan en este registro.
Valor Descripción
1 Se recibe valor.
2 Se recibe comentario.
Ejemplo:
A–300
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Parámetros de entrada/salida
[en]puerto_host: STRING
[en]src_idx : ENTERO
Detalles:
• src_idxespecifica un índice de registro de cliente. Los datos de este registro se envían al servidor del cliente.
Valor Descripción
1 Se establece el valor.
Ejemplo:
A–301
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
EMPEZAR
Sintaxis:REDONDO(x)
Parámetros de entrada/salida:
[en] x :REAL
Detalles:
• El valor devuelto es el valor INTEGER más cercano al valor REAL x, como lo demuestran las
siguientes reglas:
Objetivo:Especifica un nombre de rutina, con parámetros y tipos, y un tipo de datos de valor devuelto para rutinas
de función.
A-302
Traducido del inglés al español - www.onlinedoctranslator.com
dónde:
return_type : cualquier tipo de datos que puede devolver una función, es decir, cualquier tipo excepto ARCHIVO, RUTA y tipos
de visión
Detalles:
• Cuando el cuerpo de la rutina sigue a la instrucción ROUTINE, los nombres enparam_listse utilizan para
asociar argumentos pasados con referencias a parámetros dentro del cuerpo de la rutina.
• Cuando una rutina es de otro programa, los nombres en la lista de parámetros no tienen importancia, pero deben
estar presentes para especificar el número y los tipos de datos de los parámetros.
• Si la instrucción ROUTINE contiene untipo_retorno,la rutina es una rutina de función y devuelve un valor. De lo
contrario, es una rutina de procedimiento.
A–303
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Objetivo:En V7.70 y posteriores, para transferir el registro de posición de un grupo específico de servidores al registro de posición
de un grupo específico de clientes.
Parámetros de entrada/salida
[en]puerto_host: STRING
[en]src_idx: ENTERO
[en]src_grp: ENTERO
[en]dest_idx: ENTERO
[en]dest_grp: ENTERO
Detalles:
• src_grpespecifica el número de grupo del servidor. Se transfieren los datos de posición del grupo especificado.
• destino_idxespecifica el índice del registro de posición del cliente. El registro de posición especificado almacena los datos
adquiridos.
• dest_grpespecifica el número de grupo del cliente. Los datos de posición del grupo especificado de PR [“dest_idx”] se
cambian a datos recibidos.
A-304
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Valor Descripción
Ejemplo:
A: Grupo 2 de PR [6]
PROGRAMA RPREGRCV
%COMENTARIO='RC1 PR5G1->PR6G2'
%NOLOCKGROUP
%AMBIENTE RPCC
VAR
ESTADO: ENTERO
EMPEZAR
Objetivo:En V7.70 y posterior, para transferir el registro de posición de un grupo específico de clientes al registro de
posición de un grupo específico de servidores.
Parámetros de entrada/salida
[en]puerto_host: STRING
[en]dest_idx: ENTERO
[en]dest_grp: ENTERO
[en]src_idx: ENTERO
[en]src_grp: ENTERO
A-305
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Detalles:
• dest_grpespecifica el número de grupo del servidor. Los datos de posición del grupo especificado se cambian por los datos enviados
desde el cliente.
• src_idxespecifica el índice del registro de posición del cliente. Datos de posición desrc_grpde relaciones públicas [src_idx] se
envía al servidor.
VALOR DESCRIPCIÓN
Ejemplo:
A-306
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Objetivo:En V7.70 y posteriores, para almacenar un valor INTEGER en el registro especificado del host remoto.
Parámetros de entrada/salida
[en]puerto_host: STRING
[en]register_no: BOOLEAN
[en]int_value: ENTERO
Detalles:
Ejemplo:
Objetivo:En V7.70 y posteriores, para permitir que un programa KAREL establezca un comentario del puerto lógico especificado del
host remoto.
A-307
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Parámetros de entrada/salida
[en]puerto_host: STRING
[en]port_type: INTEGER
[en]port_no: INTEGER
[en]comment_str: INTEGER
Detalles:
• tipo_puertoespecifica el código de puerto cuyo comentario se está configurando. Los códigos se definen en kliotyps.kl.
• comentario_stres una cadena cuyo valor es el comentario del puerto especificado. Este no debe tener
más de 16 caracteres.
Ver también:
Ejemplo:
A–308
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Parámetros de entrada/salida
[en]puerto_host: STRING
[en]port_type: INTEGER
[en]port_no: INTEGER
Detalles:
• tipo_puertoespecifica el código para el tipo de puerto a simular. Los códigos se definen en kliotyps.kl
Ejemplo:
El siguiente programa establece GO [3] de RC1 simulado y establece su valor inicial simulado en 5.
PROGRAMA RSTPSIM
%COMENTARIO ='RC1 SIM IR[3], 5'
%NOLOCKGROUP
%AMBIENTE RPCC
%INCLUIR kliotipos
VAR
estado : ENTERO
EMPEZAR
RSET_PORTSIM('RC1', io_gpout, 3, 5, estado) FIN RSTPSIM
Objetivo:En V7.70 y posteriores, para permitir que el programa KAREL establezca una salida específica (o entrada simulada)
para un puerto lógico específico.
A–309
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Parámetros de entrada/salida
[en]puerto_host: STRING
[en]port_type: INTEGER
[en]port_no: INTEGER
[en]port_value: INTEGER
Detalles:
• tipo_puertoespecifica el código de puerto cuyo valor se está configurando. Los códigos se definen en kliotyps.kl
• valorindica el valor que se asignará a un puerto especificado. Si port_type es BOOLEAN (DOUT, por ejemplo), debería ser 0
= DESACTIVADO o 1 = ACTIVADO. Este campo se puede utilizar para configurar los puertos de entrada si el puerto es
simulado. -
Ejemplo:
Objetivo:En V7.70 y posteriores, para establecer el comentario de un registro de posición de un host remoto.
A–310
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Parámetros de entrada/salida
[en]puerto_host: STRING
[en]register_no: INTEGER
[en]comment_str : STRING
Detalles:
Ejemplo:
El siguiente programa establece el comentario “RC1 PR[5]” en PR [5] del host RC1
PROGRAMA RSTPRCMT
%COMENTARIO ='RC1 PR[5] CMT'
%NOLOCKGROUP
%AMBIENTE RPCC
VAR
estado : ENTERO
EMPEZAR
RSET_PRGCMT('RC1', 5, 'RC1 PR[5]', estado) FIN RSTPRCMT
Objetivo:En V7.70 y posteriores, para almacenar un valor REAL en el registro especificado del host remoto.
Parámetros de entrada/salida
A–311
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Detalles:
Ejemplo:
Objetivo:En V7.70 y posteriores, para configurar el comentario del registro numérico del host remoto.
Parámetros de entrada/salida
A–312
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Detalles:
• comentario_strrepresenta los datos que se utilizarán para establecer el comentario del registro dado. Si
"comment_str" excede más de 16 caracteres, la función integrada truncará la cadena.
Ejemplo:
El siguiente programa establece el comentario “RC1 R[15]” en R [15] del host RC1
PROGRAMA RSTNRCMT
%COMENTARIO ='RC1 R[15] CMT'
%NOLOCKGROUP
%AMBIENTE RPCC
VAR
estado : ENTERO
EMPEZAR
RSET_REG_CMT('RC1', 15, 'RC1 R[15]', estado) FIN
RSTNRCMT
Objetivo:En V7.70 y posteriores, establece el comentario para el registro de cadena especificado del controlador de robot
remoto.
Parámetros de entrada/salida
[en]puerto_host: STRING
[en]register_no: INTEGER
[en]comment_str : STRING
Detalles:
A–313
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Ejemplo:El siguiente programa establece el comentario "RC1_STRING_REG_3" en SR[3] del host RC1.
PROGRAMA RSTSRCMT
%COMENTARIO ='RC1 SR[3] CMT'
%NOLOCKGROUP
%AMBIENTE RPCC
VAR
estado : ENTERO
EMPEZAR
RSET_SREGCMT('RC1', 3, 'RC1_STRING_REG_3', estado) FIN
RSTSRCMT
Objetivo:En V7.70 y posteriores, para establecer el valor especificado para el registro de cadena especificado del host
remoto.
Parámetros de entrada/salida
Detalles:
Ejemplo:
A–314
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
ERR_ÉXITO =0
VAR
estado : ENTERO
EMPEZAR
RSET_STR_REG('RC1', 4, 'RC1 de SR[4] fue configurado por host remoto', estado) END
RSTSREG
Parámetros de entrada/salida:
Detalles:
• nombre de la tareaes el nombre de la tarea a ejecutar. Esto crea una tarea secundaria. La tarea que ejecuta esta
función integrada se denomina tarea principal.
• Sipausa_en_sftes VERDADERO, la tarea se detiene cuando se suelta la tecla shift de la consola portátil.
A-315
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
• Sitp_motiones VERDADERO, la tarea puede ejecutar movimiento mientras la consola portátil está habilitada. El TP
debe estar habilitado sitp_motiones verdad.
• El control de los grupos de movimiento especificados enlock_maskse transferirá de la tarea principal a la tarea
secundaria, sitp_motiones VERDADERO y la botonera de aprendizaje está habilitada. Los números de grupo deben estar
en el rango de 1 al número total de grupos definidos en el controlador. El bit 1 especifica el grupo 1, el bit 2 especifica el
grupo 2 y así sucesivamente.
Grupo 1 1 1
Grupo 2 2 2
Grupo 3 4 3
Para especificar varios grupos, seleccione los valores decimales, que se muestran enCuadro A–23, que
corresponden a los grupos deseados. Luego conéctelos usando el operador OR. Por ejemplo, para especificar los
grupos 1 y 3, ingrese "1 O 4".
Ejemplo:Referirse aSección B.10, "Uso de pantallas dinámicas incorporadas" (DYN_DISP.KL), para ver un
ejemplo de programa detallado.
Parámetros de entrada/salida:
A-316
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Detalles:
• prog_namespecifica el nombre del programa. Si el nombre del programa es '*', se guardan todos los programas o
variables del tipo especificado. prog_name debe establecerse en "*SYSTEM*" para guardar todas las variables del
sistema.
• file_specespecifica el dispositivo, el nombre y el tipo de archivo que se guarda. El tipo también implica si
se están guardando programas o variables.
. VR : Variables KAREL
Ejemplo:Referirse aSección B.3, "Guardar datos en el dispositivo predeterminado" (SAVE_VRS.KL), para obtener un
ejemplo de programa detallado.
Parámetros de entrada/salida:
Detalles:
• prog_nam especifica el nombre del programa. Esta operación guardará los valores actuales de cualquier variable
en DRAM a FlashROM para el programa especificado. Al encender, estos valores guardados se cargarán
automáticamente en DRAM.
A–317
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Sintaxis:SELECCIONE case_val OF
{declaración}
{ CASO(valor{, valor}):
{declaración} }
<OTRO:
{ declaración }>
ENDSELECT
dónde:
Detalles:
• case_valse compara con cada uno de los valores que siguen al CASO en cada cláusula. Si es igual a
cualquiera de estos, se ejecutan las sentencias entre el CASE y la siguiente cláusula.
• Si se utiliza la cláusula ELSE y la expresióncase_valno coincide con ninguno de los valores de las
cláusulas CASE, se ejecutan las declaraciones entre las palabras clave ELSE y ENDSELECT.
• Si no se utiliza la cláusula ELSE y la expresióncase_valno coincide con ninguno de los valores en las
cláusulas CASE, el programa se cancela con el error "No hay coincidencia en CASE".
Ver también:Apéndice E, “Diagramas de sintaxis”, para obtener más información sobre la sintaxis
A–318
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Sintaxis:SELECT_TPE(prog_name, estado)
Parámetros de entrada/salida:
Detalles:
• prog_nameespecifica el nombre del programa que se seleccionará como valor predeterminado de la consola
portátil. Este es el programa que está "en uso" por el dispositivo de enseñanza. También es el programa que se
ejecutará si se presiona el botón CYCLE START o la tecla FWD de la consola portátil.
Sintaxis:SEMA_COUNT (semáforo_no)
Parámetros de entrada/salida:
A–319
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Detalles:
Sintaxis:SEMÁFORO[semaphore_no]
Detalles:
• Cuando el valor del semáforo indicado es mayor que cero, la condición se cumple (VERDADERO).
Parámetros de entrada/salida:
A–320
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Detalles:
CONSTITUCIÓN
er_abortar = 2
VAR
búfer_dat: MATRIZ[100] DE BYTE
índice: ENTERO
estado: ENTERO
EMPEZAR
índice = 1
ADD_INTPC(dat_buffer,index,55,status)
ADD_REALPC(dat_buffer,index,123.5,status)
ADD_STRINGPC(dat_buffer,index,'YES',status)
Sintaxis:SEND_EVENTPC(event_no, estado)
A–321
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Parámetros de entrada/salida:
Detalles:
CONSTITUCIÓN
er_abortar = 2
VAR
estado: ENTERO
EMPEZAR
- - enviar el evento 12 a la PC
SEND_EVENTPC(12,status) IF - - llamada incorporada aquí
status<>0 THEN
POST_ERR(estado,'',0,er_abortar) ENDIF
FIN prueba
Objetivo:Establece los datos de atributos del programa Teach Pendant o KAREL especificado
Parámetros de entrada/salida:
A–322
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Detalles:
• número_atributoes el atributo cuyo valor se va a establecer. Los siguientes atributos son válidos:
A–323
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
• Si los datos del atributo son un número, se establece envalor_intyvalor de cadenase ignora
• Si los datos del atributo son una cadena, se establece envalor de cadenayvalor_intse ignora
Parámetros de entrada/salida:
Detalles:
• Establece el cursor actual del archivo especificado que está abierto en una ventana para que las escrituras posteriores
comiencen en la posición especificada.
• Afilael valor de 1 indica la fila superior de la ventana. Acolumnael valor de 1 indica la columna más a la
izquierda de la ventana.
A–324
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Parámetros de entrada/salida:
Detalles:
• Sigrupo_nose omite, se asume el grupo predeterminado para el programa. Los datos de otros grupos no se
modifican.
A-325
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
%ambiente REGOPE
VAR
cur_pos: XYZWPREXT
Posponer: XYZWPREXT
estado: ENTERO
v_mask, máscara_g: ENTERO
reg_no: ENTERO
EMPEZAR
reg_no = 1
cur_pos = CURPOS(v_mask,g_mask)
SET_EPOS_REG(reg_no,cur_pos,status) posget =
GET_POS_REG(reg_no,status) END spe
Parámetros de entrada/salida:
Detalles:
• id_abiertoespecifica el programa del Teach Pendant abierto. Se debe abrir un programa antes de llamar a este
incorporado.
• Ya debe existir una instrucción de movimiento que utilice elposition_noo la posición no será utilizada por el
programa de la consola portátil.
A-326
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• Sigrupo_nose omite, se asume el grupo predeterminado para el programa. Los datos de otros grupos no se
modifican.
Parámetros de entrada/salida:
Detalles:
• file_ides la variable de archivo que se usará en las declaraciones OPEN FILE, WRITE, READ y/o
CLOSE FILE.
• tipo_atrespecifica el tipo de atributo a establecer. Deben utilizarse las constantes predefinidas que se especifican en
la Tabla 7-2.
Sintaxis:SET_FILE_ATR(archivo_xml, ATR_XML)
Parámetros de entrada/salida:
Detalles:
A–327
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
• archivo_xmles la variable de archivo que se usará en las declaraciones OPEN FILE, WRITE, READ y/o
CLOSE FILE.
• ATR_XMLespecifica el tipo de atributo a establecer. Deben utilizarse las constantes predefinidas que se especifican
en la Tabla 7-2.
• A continuación, el archivo debe abrirse como un archivo RO. No puede realizar ninguna otra operación XML hasta que se
haya abierto el archivo.
Objetivo:Establece la posición del archivo para la siguiente operación de LECTURA o ESCRITURA que tendrá lugar en el archivo
especificado al valor de la nueva posición del archivo especificado
Parámetros de entrada/salida:
Detalles:
— Cualquier otro valor hace que el archivo se establezca en el número especificado de bytes desde el principio del
archivo.
• estadose establece en 0 si elnuevo_archivo_posestá entre -1 y el número de bytes en el archivo, lo que indica que la
posición del archivo se estableció correctamente. Si no es igual a 0, entonces ocurrió un error.
A–328
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Ejemplo:El siguiente ejemplo abre elfilepos.dtarchivo de datos, establece la posición del archivo desde un
directorio, lee las posiciones del archivo y almacena las posiciones en la RUTA,mi camino.
ENDFOR
Parámetros de entrada/salida:
Detalles:
Ejemplo:Referirse aSección B.5, "Uso de registros integrados" (REG_EX.KL), para ver un ejemplo de programa
detallado.
A–329
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Parámetros de entrada/salida:
Detalles:
• Sigrupo_nose omite, se asume el grupo predeterminado para el programa. Los datos de otros grupos no se
modifican.
Ejemplo:Referirse aSección B.5, "Uso de registros integrados" (REG_EX.KL), para ver un ejemplo de programa
detallado.
Objetivo:Almacena un valor JOINTPOS en la posición especificada en el programa del Teach Pendant especificado
Parámetros de entrada/salida:
A–330
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Detalles:
• id_abiertoespecifica el programa del Teach Pendant abierto. Antes de llamar a este integrado, se debe abrir un
programa utilizando el integrado OPEN_TPE y tener acceso de lectura/escritura.
• Sigrupo_nose omite, se asume el grupo predeterminado para el programa. Los datos de otros grupos no se
modifican.
Sintaxis:SET_LANG(nombre_idioma, estado)
Parámetros de entrada/salida:
Detalles:
dp_predeterminado
dp_inglés
A–331
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
dp_japonés
dp_frances
dp_german
dp_español
• La variable de sistema de solo lectura $LANGUAGE indica qué idioma está actualmente en uso.
• Se devolverá el error 33003, "No se encontró ningún diccionario para el idioma", si no se cargan
diccionarios en el idioma especificado. El comando KCL "MOSTRAR IDIOMAS" se puede usar para ver qué
idiomas se crean en el sistema.
Ejemplo:Referirse aSección B.13, "Uso de DISCTRL_ALPHA incorporado" (DCALP_EX.KL), para ver un ejemplo de
programa detallado.
Parámetros de entrada/salida:
Detalles:
A–332
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• El grupo de ejes está implícito desde la posición especificada,jpos.Si JOINTPOS no está en el grupo 1,
entonces se usa la variable de sistema $REFPOSn donde n corresponde al número de grupo dejpos y
índicedebe acosar a 1.
Ver también:La aplicación específica apropiadaManual de operaciones y configuración de FANUC America Corporationpara
configurar posiciones de referencia
VAR
perch_pos: JOINTPOS EN GRUPO[1]
COMENZAR
PARA i = 1 a 6 DO
tolerancia[i] = 0,01
ENDFOR
SET_PERCH (perch_pos, tolerancia, 2) FIN
Objetivo:Permite que un programa KAREL asigne uno o más puertos lógicos a puertos físicos específicos
Parámetros de entrada/salida:
A–333
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Detalles:
• rack_noes el bastidor que contiene el módulo de puerto. Para tarjetas de E/S de proceso, imagen de memoria
y puertos ficticios, esto es cero; para puertos Allen-Bradley y Genius, esto es 16.
• slot_noes la ranura que contiene el módulo de puerto. Para tarjetas de E/S de proceso, esta es la secuencia en
la cadena SLC-2. Para puertos de imagen de memoria y ficticios, esto es cero; para puertos Allen-Bradley y
Genius, es 1.
• tipo_de_puerto_físicoes el tipo de puerto que se va a asignar. A menudo esto será lo mismo quelog_port_type. Las
excepciones son silog_port_typees un tipo de grupo (io_gpinoio_gpout)o se asigna un puerto a imagen de
memoria o puertos ficticios.
• n_puertoses el número de puertos físicos que se asignarán al puerto lógico. Silog_port_typees un tipo de
grupo,n_puertosindica el número de bits en el grupo. Al configurar la E/S digital,n_puertoses el número de
puntos que está configurando. En la mayoría de los casos será 8, pero puede ser del 1 al 8.
• estadose devuelve con cero si los parámetros son válidos. De lo contrario, se devuelve con un código de
error. La asignación no es válida si los puertos especificados no existen o si la asignación de
log_port_typeatipo_de_puerto_físicono esta permitido.
Por ejemplo, los GIN no se pueden asignar a los DOUT. Ninguno de los doslog_port_typenitipo_de_puerto_físicopuede ser
un tipo de puerto del sistema (SOPIN, por ejemplo).
Ejemplo:Referirse aSección B.1, "Configuración de puertos de salida digital para monitoreo" (DOUT_EX.KL) para un
ejemplo de programa detallado.
Parámetros de entrada/salida:
A–334
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Detalles:
puerto_1
puerto_2
puerto_3
puerto_4
• tipo_atrespecifica el tipo de atributo a establecer. Se debe utilizar una de las siguientes constantes predefinidas:
atr_parity :Paridad
atr_xonoff :XON/XOFF
• valor_atrespecifica el valor para el tipo de atributo. VerCuadro A–24en la siguiente página que contiene
tipos de atributos predefinidos aceptables con los valores correspondientes.
ATR_TYPE ATR_VALUE
atr_readahd cualquier entero, representa múltiplos de 128 bytes (por ejemplo: atr_value=1 significa que la
longitud del búfer es de 128 bytes).
A–335
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
ATR_TYPE ATR_VALUE
atr_baud baudios_9600
baudios_4800
baudios_2400
baudios_1200
atr_paridad paridad_ninguna
paridad_incluso
paridad_impar
atr_sbits sbits_1
sbits_15
sbits_2
atr_dbits dbits_5
dbits_6
dbits_7
dbits_8
atr_xonoff xf_not_used
xf_usado
atr_modem md_not_used
md_use_dsr
md_nouse_dsr
md_use_dtr
md_nouse_dtr
md_use_rts
md_nouse_rts
Ver también:Procedimiento integrado SET_FILE_ATR,Sección 7.3.1, “Configuración de atributos de archivos y puertos”, para
obtener más información
Objetivo:Permite que un programa KAREL establezca el comentario que se muestra en la consola portátil, para un
puerto lógico específico
Parámetros de entrada/salida:
A–336
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Detalles:
• tipo_puertoespecifica el código para el tipo de puerto cuyo modo se está configurando. Los códigos se
definen en KLIOTYPS.KL.
• comentario_stres una cadena cuyo valor es el comentario del puerto especificado. Este no debe
tener más de 16 caracteres.
• estadose devuelve con cero si los parámetros son válidos y el modo especificado se puede establecer para el puerto
especificado.
Ejemplo:Referirse aSección B.1, "Configuración de puertos de salida digital para monitoreo" (DOUT_EX.KL) para un
ejemplo de programa detallado.
Objetivo:Permite que un programa KAREL establezca (o restablezca) modos de puerto especiales para un puerto lógico específico
Parámetros de entrada/salida:
Detalles:
A–337
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
• tipo_puertoespecifica el código para el tipo de puerto cuyo modo se está configurando. Los códigos se
definen en KLIOTYPS.KL.
• mode_maskes una máscara que especifica qué modos están activados. Se definen los siguientes modos:
1: modo inverso: se invierte el sentido del puerto; si el puerto se establece en VERDADERO, la salida física se establece en
FALSO. Si el puerto se establece en FALSO, la salida física se establece en VERDADERO. Si una entrada física es VERDADERA
cuando se lee el puerto, se devuelve FALSO. Si una entrada física es FALSA cuando se lee el puerto, se devuelve
VERDADERO.puertos.
2 :modo complementario - el puerto lógico se asigna a dos puertos físicos cuyos valores son complementarios. En este caso,
port_no debe ser un número impar. Si el puerto n se establece en VERDADERO, el puerto n se establece en VERDADERO y el
puerto n + 1 se establece en FALSO. Si el puerto n se establece en FALSO, el puerto n se establece en FALSO y el puerto n + 1 se
establece en VERDADERO. Esto es efectivo solo para la salida
• estadose devuelve con cero si los parámetros son válidos y el modo especificado se puede establecer para el puerto
especificado.
Ejemplo:Referirse aSección B.1, "Configuración de puertos de salida digital para monitoreo" (DOUT_EX.KL) para un
ejemplo de programa detallado.
Parámetros de entrada/salida:
Detalles:
• tipo_puertoespecifica el código para el tipo de puerto a simular. Los códigos se definen en KLIOTYPS.KL.
A–338
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Ejemplo:Referirse aSección B.1, "Configuración de puertos de salida digital para monitoreo" (DOUT_EX.KL) para un
ejemplo de programa detallado.
Objetivo:Permite que un programa KAREL establezca una salida específica (o entrada simulada) para un puerto lógico
específico
Parámetros de entrada/salida:
Detalles:
• tipo_puertoespecifica el código para el tipo de puerto cuyo modo se está configurando. Los códigos se
definen en KLIOTYPS.KL.
• valorindica el valor que se asignará a un puerto especificado. Si eltipo_puertoes BOOLEAN (es decir, DOUT), debe ser 0 =
APAGADO o 1 = ENCENDIDO. Este campo se puede utilizar para configurar los puertos de entrada si el puerto es
simulado.
• estadose devuelve con cero si los parámetros son válidos y el modo especificado se puede establecer para el puerto
especificado.
A–339
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
PROGRAMA setvalprog
%AMBIENTE CONFIGURACIÓN DE IOS
%INCLUIR FR:\kliotipos
RUTINA set_value(port_type: ENTERO;
port_no: ENTERO;
g_valor: BOOLEANO): ENTERO
VAR
valor: ENTERO
estado: ENTERO
EMPEZAR
SI g_valor DESPUÉS
valor = 1
MÁS
valor = 0;
TERMINARA SI
FIN setvalprog
Parámetros de entrada/salida:
Detalles:
A–340
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• Sigrupo_nose omite, se asume el grupo predeterminado para el programa. Los datos de otros grupos no se
modifican.
Ejemplo:Referirse aSección B.5, "Uso de registros integrados" (REG_EX.KL), para ver un ejemplo de programa
detallado.
Parámetros de entrada/salida:
Detalles:
• id_abiertoespecifica el programa del Teach Pendant abierto. Antes de llamar a este integrado, se debe abrir un
programa utilizando el integrado OPEN_TPE y tener acceso de lectura/escritura.
• Ya debe existir una instrucción de movimiento que utilice elposition_noo la posición no será utilizada por el
programa de la consola portátil.
• Sigrupo_nose omite, se asume el grupo predeterminado para el programa. Los datos de otros grupos no se
modifican.
A–341
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Parámetros de entrada/salida:
Parámetros de entrada/salida:
Detalles:
A-342
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Objetivo:Para establecer la información de comentario de un registro KAREL en función de un número de registro dado y
un comentario dado.
Parámetros de entrada/salida:
Detalles:
Parámetros de entrada/salida:
Detalles:
A–343
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Parámetros de entrada/salida:
Detalles:
Sintaxis:ESTABLECER_TIEMPO(i)
Parámetros de entrada/salida:
[en] i : ENTERO
Detalles:
• itiene la representación INTEGER del tiempo dentro del sistema KAREL. Este valor se representa en formato
INTEGER de 32 bits de la siguiente manera:
A–344
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
- FECHA:
• Este valor se puede determinar utilizando los procedimientos integrados GET_TIME y CNV_STR_TIME.
Ejemplo:El siguiente ejemplo convierte la variable STRINGstr_time,entrada por el usuario en formato “DD-
MMM-YYY HH:MM:SS”, a la representación INTEGER del tiempoint_timeutilizando el procedimiento integrado
CNV_STR_TIME. A continuación, SET_TIME se utiliza para establecer la hora dentro del sistema KAREL a la hora
especificada porint_time.
A–345
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Objetivo:Brinda la capacidad para que un programa KAREL establezca el comentario asociado con una posición específica en
un programa de control remoto.
Parámetros de entrada/salida:
Detalles:
• id_abiertoespecifica el open_id devuelto de una llamada anterior a OPEN_TPE. Se debe utilizar un modo
abierto de TPE_RWACC en la llamada OPEN_TPE.
• pos_idespecifica el número de la posición en el programa del dispositivo de aprendizaje para obtener un comentario. La
posición especificada debe haber sido registrada.
• comentarioes el comentario que se asociará con la posición especificada. Se puede utilizar una cadena de longitud cero
para garantizar que una posición no tenga comentarios. Si la cadena tiene más de 16 caracteres, se trunca y se usa y se
devuelve un error de advertencia.
Parámetros de entrada/salida:
A–346
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Detalles:
• id_abiertoespecifica el programa del Teach Pendant abierto. Se debe abrir un programa antes de llamar a este
incorporado.
Parámetros de entrada/salida:
Detalles:
• nombre de la tareaes el nombre de la tarea en ejecución especificada. Un espacionombre de la tareaindicará la tarea de llamada.
• atributoes el atributo de la tarea cuyo valor se va a establecer. Los siguientes atributos son válidos:
TSK_TIMESLIC: Duración del intervalo de tiempo, consulte %TIMESLIC para obtener información sobre el valor
A–347
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
TSK_TPMOTION :Activar movimiento TP, consulte %TPMOTION para obtener información sobre el valor
Parámetros de entrada/salida:
A–348
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Detalles:
Parámetros de entrada/salida:
Detalles:
• prog_nameespecifica el nombre del programa que contiene la variable especificada. Siprog_name es ", entonces
por defecto se ejecuta el nombre de la tarea actual.prog_nametambién puede acceder a una variable del sistema
en un robot en un anillo.
• Si ambosnombre_varyvalorson ARRAY, el número de elementos copiados será igual al tamaño del más
pequeño de los dos arreglos.
A–349
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
• Sivalorno está inicializado, el valor denombre_varse establecerá en no inicializado yestadose establecerá en 12311.
valordebe ser una variable estática dentro del programa de llamada.
Precaución
El uso de SET_VAR para modificar las variables del sistema podría generar resultados inesperados.
• Los nombres designados de todos los robots se pueden encontrar en la variable del sistema $PH_MEMBERS[]. Esto
también incluye información sobre el estado del robot. El índice de anillo es el índice de matriz para esta variable del
sistema. Los usuarios de KAREL pueden escribir programas de propósito general consultando los nombres y otra
información en esta variable del sistema en lugar de nombres explícitos.
Ejemplo 2:EnGET_VAR SET_VAR Ejemplo, se establece una matriz [ipgetset]set_data[x,y] en todos los robots del anillo de
todos los robots del anillo. En esta matriz, x es el índice del robot de origen e y es el índice del robot de destino:
A–350
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
ENDSELECT
TERMINARA SI
ENDFOR
Ejemplo 3:Referirse aSección B.2, "Copia de variables de ruta" (CPY_PTH.KL), para ver un ejemplo de programa
detallado.
Ejemplo 4GET_VAR y SET_VAR también se pueden usar para establecer valores de registro.
Esto funcionará para el robot local con los nombres de programa *posreg* y *numreg*. Para el robot local, esto tiene
una funcionalidad similar a las funciones integradas GET_POS_REG, GET_REG y SET_REG, SET_POS_REG. Los integrados
solo funcionan para el robot local. Puede acceder a los robots en el anillo a través de GET_VAR y SET_VAR usando el
nombre del robot como parte del nombre del programa.
Para el caso de SET_VAR en registros numéricos, el tipo de registro se establecerá en el tipo de la variable KAREL. En el
siguiente ejemplo, después de ejecutar este código, el registro numérico 20 será un número entero y el registro
numérico 21 será un real.
Si un registro de posición está bloqueado e intenta configurarlo, se devuelve el registro de posición de error
bloqueado. VerUso de GET_VAR y SET_VAR para establecer valores de registro.
programa GETREG
%nolockgroup
VAR
entrada: entero
estado: entero
datos_int: entero
datos_reales: real
posext_data: xyzwprext
A–351
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
EMPEZAR
GET_VAR(entrada, '\\mhrob01\*numreg*', '$NUMREG[10]', int_data, estado) IF estado <> 0
ENTONCES
GET_VAR(entrada, '\\mhrob01\*numreg*', '$NUMREG[10]', datos_reales, estado) ENDIF
Objetivo:Esta directiva especifica que todas las variables por defecto se crean en SHADOW.
Sintaxis:%SOMBRAS
Sintaxis:CORTO
Detalles:
• CORTO, se define como 2 bytes con el rango de (-32768 <= n >= 32766). Una variable CORTA
asignada a (32767) se considera no inicializada.
• Los SHORT solo se permiten dentro de una matriz o dentro de una estructura.
• Los SHORT se pueden asignar a BYTE y INTEGER, y los BYTE y INTEGER se pueden asignar a
SHORT. Un valor asignado fuera del rango CORTO se detecta durante la ejecución y hace que el
programa se cancele.
Objetivo:Señala un evento que podría satisfacer un manejador de condiciones o liberar un programa en espera
A-352
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Sintaxis:EVENTO DE SEÑAL[event_no]
dónde:
Detalles:
• Puede utilizar la acción SIGNAL EVENT para indicar que se ha producido un evento definido por el usuario.
• evento_noocurre cuando se señala y no se recuerda. Así, si una cláusula WHEN tiene como única condición
el evento, se producirán las acciones asociadas.
• Si se especifican otras condiciones que no se cumplen en el momento en que se señala el evento, no se ejecutan las
acciones, incluso si las demás condiciones se cumplen en otro momento.
• evento_nodebe estar en el rango de -32768 a 32767. De lo contrario, el programa se cancela con un error.
Ejemplo:Referirse aSección B.1, "Configuración de puertos de salida digital para monitoreo" (DOUT_EX.KL) para un
ejemplo de programa detallado.
Objetivo:Señala un evento que podría satisfacer un manejador de condiciones o liberar un programa en espera
dónde:
event_no : un ENTERO
Detalles:
• Puede utilizar la instrucción SIGNAL EVENT para indicar que se ha producido un evento definido por el usuario.
• evento_noocurre cuando se señala y no se recuerda. Así, si una cláusula WHEN tiene como única condición
el evento, se producirán las acciones asociadas.
• Si se especifican otras condiciones que no se cumplen en el momento en que se señala el evento, no se ejecutan las
acciones, incluso si las demás condiciones se cumplen en otro momento.
• evento_nodebe estar en el rango de -32768 a 32767. De lo contrario, el programa se cancela con un error.
Ver también:Apéndice E, “Diagramas de sintaxis” para obtener más información sobre la sintaxis, Condición de EVENTO
A–353
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Sintaxis:SEMÁFORO DE SEÑAL[semaphore_no]
dónde:
Detalles:
Ver también:Sección 16.8, "Comunicación de tareas" para obtener más información y ejemplos.
Sintaxis:SIN(ángulo)
Parámetros de entrada/salida:
Detalles:
• ángulodebe estar en el rango de ± 18000 grados. De lo contrario, el programa se cancelará con un error.
Ejemplo:Referirse aSección B.8, "Generación y movimiento a lo largo de una ruta hexagonal" (GEN_HEX.KL), para ver
un ejemplo de programa detallado.
Objetivo:Devuelve un valor REAL que es la raíz cuadrada positiva del argumento REAL especificado
A–354
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Sintaxis:SQRT(x)
Parámetros de entrada/salida:
[en] x : REAL
Detalles:
Ejemplo:El siguiente ejemplo calcula la raíz cuadrada de la expresión (a*a+b*b) e indica que esta es
la hipotenusa de un triángulo.
c = RAÍZ CUADRADA(a*a+b*b)
ESCRIBIR ('La hipotenusa del triángulo es ',c::6::2)
Sintaxis:%TAMAÑO DE LA APILA = n
Detalles:
Ver también:Sección 5.1.6, "Uso de la pila", para obtener información sobre el tamaño de la pila informática
Sintaxis:STD_PTH_NODE = ESTRUCTURA
A–355
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
ESTRUCTURA FINAL
Detalles:
Sintaxis:PARAR <GRUPO[n{,n}]>
Detalles:
• Cualquier movimiento en curso se desacelera hasta detenerse. El movimiento sin terminar, así como cualquier movimiento
pendiente, se agrupan en un conjunto de movimientos y se colocan en una pila.
• El conjunto de movimiento apilado se puede eliminar de la pila y reiniciar con una instrucción o
acción RESUME o emitiendo RESUME desde la interfaz del operador (CRT/KB).
• Si la cláusula de grupo no está presente, todos los grupos para los que la tarea tiene control (cuando se define
la condición) se detendrán.
• Si la moción que se detiene, reanuda, cancela o retiene es parte de una moción SIMULTÁNEA o
COORDINADA con otros grupos, las mociones de todos los grupos se detienen, reanudan,
cancelan o retienen.
Ejemplo:Referirse aSección B.1, "Configuración de puertos de salida digital para monitoreo" (DOUT_EX.KL) para un
ejemplo de programa detallado.
A–356
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Sintaxis:PARAR <GRUPO[n{,n}]>
Detalles:
• Cualquier movimiento en curso se desacelera hasta detenerse. El movimiento sin terminar, así como cualquier movimiento
pendiente, se agrupan en un conjunto de movimientos y se colocan en una pila.
• Más de un movimiento puede ser apilado por una sola instrucción STOP.
• Si la cláusula de grupo no está presente, se detendrán todos los grupos para los que la tarea tiene control.
• Si la moción que se detiene, reanuda, cancela o retiene es parte de una moción SIMULTÁNEA o
COORDINADA con otros grupos, las mociones de todos los grupos se detienen, reanudan,
cancelan o retienen.
Ver también:REANUDAR Acción, REANUDAR Declaración,Apéndice E, “Diagramas de sintaxis”, para obtener más información
sobre la sintaxis
Declaración DETENER
SI DIN[2] ENTONCES
DETÉNGASE
TERMINARA SI
Sintaxis:Longitud de la cuerda]
dónde:
A–357
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Detalles:
• longitud,la longitud física de la cadena, indica el número máximo de caracteres para los que se
asigna espacio para una variable STRING.
• longituddebe estar en el rango de 1 a 254 y debe especificarse en una declaración de variable STRING.
• Alongitudel valor no se usa cuando se declaran parámetros de rutina STRING; una STRING de cualquier longitud
se puede pasar a un parámetro STRING.
• Intentar asignar una STRING a una variable STRING que es más larga que la longitud física de la
variable da como resultado que el valor STRING se trunque a la derecha de la longitud física de la
variable STRING.
• Solo las expresiones STRING pueden asignarse a variables STRING o pasarse como argumentos a
parámetros STRING.
• Los literales STRING constan de una serie de caracteres ASCII entre comillas simples (apóstrofes). En
la siguiente tabla se dan ejemplos.
A–358
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Sintaxis:STR_LEN(cadena)
Parámetros de entrada/salida:
Detalles:
Ejemplo:Referirse aSección B.12, "Visualización de una lista desde un archivo de diccionario" (DCLST_EX.KL) para obtener un
ejemplo de programa detallado.
Sintaxis:new_type_name = ESTRUCTURA
nombre_campo_1: nombre_tipo_1
campo_nombre_2: tipo_nombre_2
...
ESTRUCTURA FINAL
Detalles:
• Una estructura definida por el usuario es un tipo de datos que consiste en una lista de campos componentes, cada uno de los cuales puede
ser un tipo de datos estándar u otro tipo de datos de usuario, previamente definido.
• Cuando se carga un programa que contiene variables de tipos definidos por el usuario, las definiciones
de estos tipos se comparan con una definición creada previamente. Si no existe, se crea.
• Los siguientes tipos de datos no están permitidos como parte de una estructura de datos:
A–359
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
— Tipos de RUTA
- Tipos de archivo
— Tipos de visión
— La propia estructura de datos, o cualquier tipo que la incluya, ya sea directa o indirectamente
• Una variable no puede definirse como una estructura, sino como un tipo de dato previamente definido como estructura
Ejemplo:Referirse aSección B.2, "Copia de variables de ruta" (CPY_PTH.KL), para ver un ejemplo de programa
detallado.
Parámetros de entrada/salida:
Detalles:
• calledebe ser positivo. De lo contrario, el programa se cancela con un error. Sicallees mayor que la
longitud deorigen,luego se devuelve una cadena vacía.
• Lendebe ser positivo. De lo contrario, el programa se cancela con un error. SiLenes mayor que la
longitud declarada de la CADENA devuelta, la CADENA devuelta se trunca para que quepa.
A–360
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Sintaxis:TAN (ángulo)
Parámetros de entrada/salida:
Detalles:
Ejemplo:El siguiente ejemplo utiliza la función integrada TAN para especificar la tangente de la
variableángulo.La tangente debe ser igual al SIN(ángulo)dividido por COS(ángulo).
relación = SIN(ángulo)/COS(ángulo) SI
relación = TAN(ángulo) ENTONCES
ESCRIBIR ('la relación es correcta', CR)
ENDIF
Objetivo:Admite división de tiempo de tipo round-robin para tareas con la misma prioridad
Sintaxis:%FRANJA DE TIEMPO = n
A–361
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Detalles:
• norteespecifica el tiempo de ejecución de la tarea en mseg para un segmento. El valor predeterminado es 256 mseg.
• Este valor es la duración máxima para ejecutar la tarea de forma continua si hay otras tareas con la
misma prioridad que están listas para ejecutarse.
• Esta función es efectiva solo cuando se está ejecutando más de una tarea KAREL con la misma
prioridad al mismo tiempo.
• La duración del intervalo de tiempo se puede establecer durante la ejecución de la tarea mediante la rutina integrada SET_TSK_ATTR.
Objetivo:Especifica que el movimiento de la tarea está habilitado cuando la consola portátil está encendida
Sintaxis:%MOVIMIENTO TP
Detalles:
• Este atributo se puede establecer durante la ejecución de la tarea mediante la rutina integrada SET_TSK_ATTR.
Objetivo:Traduce un archivo fuente KAREL (tipo de archivo .KL) a código p (tipo de archivo .PC), que puede
cargarse en la memoria y ejecutarse.
Parámetros de entrada/salida:
Detalles:
A–362
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• listado_swespecifica si se debe crear un archivo .LS. El archivo .LS contiene una lista de las líneas fuente y
cualquier error que pueda haber ocurrido. El archivo .LS se creará en el dispositivo predeterminado.
• El programa KAREL esperará mientras se ejecuta TRANSLATE Built-In. Si el programa KAREL está en
pausa, la traducción continuará hasta que se complete. Si se cancela el programa KAREL, también se
cancelará la traducción y no se creará el archivo .PC.
• Si el programa KAREL debe continuar ejecutándose durante la traducción, use el KCL_NO_WAIT incorporado
en su lugar.
35084 No se puede abrir o crear el archivo. No se puede encontrar el archivo KL o el dispositivo predeterminado no es el
disco RAM
- 1 La traducción no fue exitosa (consulte el archivo .LS para obtener más detalles)
Ejemplo:El siguiente programa de ejemplo creará, traducirá, cargará y ejecutará otro programa
llamado hola.
SI estado = 0 ENTONCES
CALL_PROG('hola', prog_index)
TERMINARA SI
A–363
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Sintaxis:TRUNC(x)
Parámetros de entrada/salida:
[en] x : REAL
Detalles:
• El valor devuelto es el valor deXdespués de que se haya eliminado cualquier parte fraccionaria. Por
ejemplo, si x = 2.3, se elimina el .3 y se devuelve un valor de 2.
• ROUND y TRUNC se pueden usar para convertir una expresión REAL en una expresión INTEGER.
Ejemplo:El siguiente ejemplo utiliza TRUNC integrado para determinar el valor INTEGER real de
millasdividido porhorasLlegarmph.
Detalles:
A–364
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• Se reanuda cualquier movimiento que estaba en progreso cuando se ejecutó la última HOLD.
• Si la cláusula de grupo no está presente, se reanudarán todos los grupos o aquellos en los que la tarea tenga control
(cuando se defina la condición).
Ejemplo:El siguiente ejemplo muestra un controlador de condición global que emite una acción UNHOLD para
reanudar el movimiento del robot cuando se presiona TPIN[1].
Acción UNHOLD
CONDICIÓN[1]:
CUANDO TPIN[1]+ HACER
DESMANEJAR
CONDICIÓN FINAL
Detalles:
• Se reanuda cualquier movimiento que estaba en progreso cuando se ejecutó la última HOLD.
• Si la cláusula de grupo no está presente, se reanudarán todos los grupos o aquellos en los que la tarea tenga control
(cuando se defina la condición).
Ver también:Apéndice E, “Diagramas de sintaxis”, para obtener más información sobre la sintaxis
Ejemplo:El siguiente ejemplo inicia un movimiento aPR[1]y DETIENE el movimiento. Siestruendo[1]está ENCENDIDO,
UNHOLD permite que el programa reanude el movimiento.
Declaración UNHOLD
move_to_pr1 —— Llamar al programa TP para pasar a PR[1]
HOLD
SI DIN[1] ENTONCES
A–365
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
DESMANEJAR
TERMINARA SI
Objetivo:Devuelve un valor BOOLEAN que indica si el argumento especificado no está inicializado o no.
Sintaxis:UNINIT(variable)
Parámetros de entrada/salida:
Detalles:
• variablepuede ser de cualquier tipo de datos excepto un ARRAY, PATH o estructura sin subíndice.
Ejemplo:Referirse aSección B.12, "Visualización de una lista desde un archivo de diccionario" (DCLST_EX.KL) para obtener un
ejemplo de programa detallado.
Objetivo:Esta directiva especifica que todas las variables no están inicializadas por defecto.
Sintaxis:%UNINIVADORES
Sintaxis:UNLOCK_GROUP(group_mask, estado)
Parámetros de entrada/salida:
A–366
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Detalles:
• máscara_de_grupoespecifica el grupo de ejes para desbloquear para la tarea en ejecución. Los números de grupo deben
estar en el rango de 1 al número total de grupos definidos en el controlador.
Grupo 1 1 1
Grupo 2 2 2
Grupo 3 4 3
Para especificar varios grupos, seleccione los valores decimales, que se muestran enCuadro A–27, que
corresponden a los grupos deseados. Luego conéctelos usando el operador OR. Por ejemplo, para especificar los
grupos 1, 3, ingrese "1 O 4".
• Cuando una tarea completa su ejecución (o se aborta), todos los grupos de movimiento que están bloqueados por el
programa se desbloquearán automáticamente.
• Si el movimiento se está ejecutando o está pendiente cuando se llama a UNLOCK_GROUP Built-In, entonces el estado
se establece en 17039, "Executing motion existe".
• Si el movimiento se detiene cuando se llama a UNLOCK_GROUP Built-In, entonces el estado se establece en 17040,
"Existe movimiento detenido".
• Si se encuentra una declaración de movimiento en un programa que tiene la directiva %NOLOCKGROUP, la tarea
intentará obtener el control de movimiento para todos los grupos requeridos si aún no lo tiene.
La tarea se detendrá si no puede obtener el control de movimiento.
A–367
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
estado: ENTERO
EMPEZAR
REPETIR
- - Desbloquear grupos 1, 2 y 3
UNLOCK_GROUP(1 O 2 O 4, estado) SI
estado = 17040 ENTONCES
CNCL_STP_MTN - - o REANUDAR
TERMINARA SI
DEMORA 500
HASTA estado = 0
- - Bloquear solo el grupo 3
LOCK_GROUP(4, estado)
FIN lock_grp_ex
Objetivo:Reanuda la ejecución del programa el tiempo suficiente para que se ejecute una acción de rutina
Sintaxis:DESPAUSAR
Detalles:
• Si se llama a una rutina como una acción, pero la ejecución del programa se detiene, la ejecución se reanuda solo durante
la duración de la rutina y luego se detiene nuevamente.
• Si se llama a más de una rutina, todas las rutinas se ejecutarán antes de que la ejecución se detenga
nuevamente.
• La reanudación y la pausa causadas por UNPAUSE no satisfacen ninguna condición de RESUME y PAUSE.
Ejemplo:Referirse aSección B.1, "Configuración de puertos de salida digital para monitoreo" (DOUT_EX.KL) para un
ejemplo de programa detallado.
Objetivo:Establece las variables REAL especificadas en los componentes de ubicación (x,y,z) y orientación (w,p,r)
de la variable XYZWPR especificada y establece la variable CONFIG especificada en el componente de
configuración de XYZWPR
Sintaxis:UNPOS(posición, x, y, z, w, p, r, c)
Parámetros de entrada/salida:
A–368
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
[fuera] x, y, z :REAL
[fuera] w, p, r :REAL
[fuera] c :CONFIG
Detalles:
• x, y, z, w, pag,yrLos argumentos se establecen en las coordenadas de ubicación x, y y z y los ángulos de orientación de guiñada,
cabeceo y balanceo deposición.
Ejemplo:El siguiente ejemplo utiliza UNPOS incorporado para agregar 100 alXargumento de ubicación
Objetivo:Define un rango de sentencias ejecutables en las que se puede acceder a los campos de una variable
de tipo ESTRUCTURA sin repetir el nombre de la variable.
{declaración} ENDUSING
dónde:
Detalles:
• Si el mismo nombre de campo aparece en más de una variable, se usa la variable más a la derecha en la
instrucción USING.
A–369
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
• Cuando el traductor ve cualquier campo, busca las variables de tipo de estructura enumeradas en la instrucción
USING de derecha a izquierda.
Ejemplo:Referirse aSección B.2, "Copia de variables de ruta" (CPY_PTH.KL), para ver un ejemplo de programa
detallado.
Sintaxis:
Detalles:
• El mapa 3D adquirido se conserva hasta que se adquiere un nuevo mapa 3D para el mismo sensor de área
3D, se llama explícitamente a V_CLR_VAMAP o se apaga el controlador del robot.
• (R-30iB, antes de V8.20) Este integrado requiere laiOpción de cliente RVision (J917) oiOpción de
paquete RVision VisTrack (R687).
• (R-30iB, V8.20 y posterior) Este integrado requiere uniOpción de paquete RVision (R685, R686,
R687, R688).
Programa de ejemplo:
-----------------------------------------------------------------------
A–370
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
PROGRAMA acqvamap
------------------------------------------------------------------------
%NOLOCKGROUP
%AMBIENTE cvis
%ALFABETIZAR
vamap'
%COMENTARIO='adquirir
%NOPAUSE = ERROR + COMANDO + VAR
TPENABLE
ESTADO : ENTERO
sens_nombre : CADENA[40]
valor_int : ENTERO
valor real : REAL
centro : VECTOR
----------------------------------------
EMPEZAR
- - el nombre de la herramienta de sensor de área pasada de un programa TP o MACRO
- - Ejemplo de TP CALL ACQVAMAP('AREASEN1')
GET_TPE_PRM(1,3,int_value,real_value,sens_name,STATUS)
- - establecer centro pos x, y, z = 0
centro.x = 0
centro.y = 0
centro.z = 0
- - V_ACQ_VAMAP: obtener mapa de área 3D
V_ACQ_VAMAP(sens_name, FALSO, centro, ESTADO)
- - éxito si el estado es cero SI ESTADO
<> 0 ENTONCES
ESCRIBIR ('V_ACQ_VAMAP FALLÓ con CÓDIGO DE ERROR', ESTADO, CR)
ABORTAR
TERMINARA SI
FIN acqvamap
Sintaxis:
V_ADJ_2D(registrar_no, x, y, estado)
[en] x: REAL
[en] y: REAL
A–371
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Detalles:
• (R-30iA) Este incorporado requiere laiOpción de software de interfaz RVision KAREL (J870).
• (R-30iB, antes de V8.20) Este integrado requiere laiOpción de cliente RVision (J917) oiOpción de
paquete RVision VisTrack (R687).
• (R-30iB, V8.20 y posterior) Este integrado requiere uniOpción de paquete RVision (R685, R686,
R687, R688).
Detalles:
• func_codees el número de plano a encontrar. Uno (1) para calibración de primer plano o plano único y dos
(2) para segundo plano en calibración multiplano. VerCuadro A–28.
A–372
Traducido del inglés al español - www.onlinedoctranslator.com
Calibración de cuadrícula generada por robot Especifique un número diferente para cada punto de calibración. La función de calibración
instrucción idéntica a esta incorporada. Por lo tanto, esta función integrada no se utilizará
• El archivo de calibración ya debe existir y estar configurado. Este integrado recalibrará un archivo ya
calibrado.
• (R-30iA) Este incorporado requiere laiOpción de software de interfaz RVision KAREL (J870).
• (R-30iB, antes de V8.20) Este integrado requiere laiOpción de cliente RVision (J917) oiOpción de
paquete RVision VisTrack (R687).
• (R-30iB, V8.20 y posterior) Este integrado requiere uniOpción de paquete RVision (R685, R686, R687, R688).
Ejemplo:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CAL
PROGRAMA
------------------------------------------------------------------------
%NOLOCKGROUP
%AMBIENTE CVIS
%ALFABETIZAR
%COMENTARIO = 'IRVision CAL incorporado'
%NOPAUSE = ERROR + COMANDO + TPENABLE
VAR
ESTADO : ENTERO
--------------------------------------------
EMPEZAR
TERMINARA SI
A–373
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
FIN cal.
Sintaxis:
V_CLR_VAMAP(nombre_sensor, estado)
Detalles:
• (R-30iB, antes de V8.20) Este integrado requiere laiOpción de cliente RVision (J917) oiOpción de
paquete RVision VisTrack (R687).
• (R-30iB, V8.20 y posterior) Este integrado requiere uniOpción de paquete RVision (R685, R686,
R687, R688).
Sintaxis:
V_DISPLAY4D(vistool_name, estado)
Detalles:
A–374
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• vistool_nombrees el nombre de la herramienta de visión para la que se deben mostrar los gráficos 4D.
• La herramienta de visión especificada porvistool_nombrepuede ser una calibración de cámara, un proceso de visión o un sensor de
área 3D.
• V_DISPLAY4D está disponible para V8.20 y versiones posteriores. Este incorporado requiere uniOpción de paquete
RVision (R685, R686, R687, R688).
Objetivo:Ejecuta el procesamiento de búsqueda de visión en el proceso de visión especificado, utilizando una imagen
capturada previamente. Cuando el proceso de visión tiene más de una vista de cámara, el procesamiento se realiza para la
vista especificada.
Sintaxis:
Detalles:
• El controlador de robot debe configurarse para tener uno o más registros de imagen. Para hacerlo,
establezca $VISION_CFG.$NUM_IMREGS en un valor distinto de cero. También es posible que deba
modificar el valor de $VISION_CFG.$IMREG_SIZE según el tipo y la resolución de la cámara:
A–375
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
640x960 : 600
1024x768 : 768
1280x480 : 600
1280x1024 : 1280
640x480 : 1200
1024x768 : 2304
• Tenga en cuenta que el aumento de estos valores disminuirá la cantidad de memoria disponible para otras
aplicaciones.
• (R-30iA) Este incorporado requiere laiOpción de software de interfaz RVision KAREL (J870).
• (R-30iB, antes de V8.20) Este integrado requiere laiOpción de cliente RVision (J917) oiOpción de
paquete RVision VisTrack (R687).
• (R-30iB, V8.20 y posterior) Este integrado requiere uniOpción de paquete RVision (R685, R686,
R687, R688).
Objetivo:Obtiene una compensación de visión de un proceso de visión y la almacena en un registro de visión especificado.
Detalles:
A–376
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• Este comando se usa después de un procedimiento integrado V_RUN_FIND. Si el procesamiento de la imagen aún no se
ha completado cuando se ejecuta V_GET_OFFSET, espera a que finalice el procesamiento de la imagen. V_GET_OFFSET
almacena el desplazamiento de visión para una pieza de trabajo en un registro de visión. Cuando el proceso de visión
encuentra más de una pieza de trabajo, se debe llamar repetidamente a V_GET_OFFSET.
• (R-30iA) Este incorporado requiere laiOpción de software de interfaz RVision KAREL (J870).
• (R-30iB, antes de V8.20) Este integrado requiere laiOpción de cliente RVision (J917) oiOpción de
paquete RVision VisTrack (R687).
• (R-30iB, V8.20 y posterior) Este integrado requiere uniOpción de paquete RVision (R685, R686,
R687, R688).
Programa de ejemplo:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Visión
del PROGRAMA
------------------------------------------------------------------------
%NOLOCKGROUP
%AMBIENTE cvis
%ALFABETIZAR
%COMENTARIO = 'IRVision incorporado' %NOPAUSE
= ERROR + COMANDO + TPENABLE VAR
ESTADO : ENTERO
visproceso : CADENA[8]
valor_int : ENTERO
valor real : REAL
--------------------------------------------
EMPEZAR
- - el nombre del proceso de visión pasado de un programa TP o MACRO
- - Ejemplo de TP CALL VISION('VP1')
GET_TPE_PRM(1,3,int_value,real_value,visprocess,STATUS)
A–377
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
- - Obtener todos los valores de compensación de VR[1] para que puedan colocarse en un
PR VREG_OFFSET(1,1,status)
FIN de la visión
Objetivo:Obtiene el estado del proceso de visión de corrección de errores. Luego almacena el resultado en un registro
numérico específico.
Detalles:
• nombre_vpes el nombre del proceso de detección de errores o visión de inspección creado en el modo de configuración
0: operación fallida
• (R-30iA) Este incorporado requiere laiOpción de software de interfaz RVision KAREL (J870).
• (R-30iB, antes de V8.20) Este integrado requiere laiOpción de cliente RVision (J917) oiOpción de
paquete RVision VisTrack (R687).
A-378
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• (R-30iB, V8.20 y posterior) Este integrado requiere uniOpción de paquete RVision (R685, R686, R687, R688).
Ejemplo:
-----------------------------------------------------------------------
PROGRAMA eproof
------------------------------------------------------------------------
%NOLOCKGROUP
%AMBIENTE CVIS
%ALFABETIZAR
%COMENTARIO = 'IRVision EP incorporado'
%NOPAUSE = ERROR + COMANDO + TPENABLE
VAR
ESTADO : ENTERO
--------------------------------------------
EMPEZAR
FIN eprueba
A–379
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Detalles:
• Este comando establece, como disparador de seguimiento, el valor del codificador existente cuando se encuentra el objetivo
seleccionado.
Sintaxis:
Detalles:
A–380
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• reg_noes el número del registro en el que almacenar el resultado. El resultado se almacena como un valor REAL.
• (R-30iA) Este incorporado requiere laiOpción de software de interfaz RVision KAREL (J870).
• (R-30iB, antes de V8.20) Este integrado requiere laiOpción de cliente RVision (J917) oiOpción de
paquete RVision VisTrack (R687).
• (R-30iB, V8.20 y posterior) Este integrado requiere uniOpción de paquete RVision (R685, R686,
R687, R688).
Detalles:
• Se borra toda la información de la pieza de trabajo retenida en la cola cuando se ejecuta el comando.
• Cuando se utilizan varios robots para recoger piezas de trabajo en un transportador, este comando debe ejecutarse
individualmente para todos los robots.
Sintaxis:
A–381
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Detalles:
• desc_cadenaes la cadena de descripción para asociar con los datos de resultados de visión.
• prioridades el nivel de prioridad de los datos de resultados de visión. Los valores válidos deprioridadson:
• Los datos de resultados de visión enviados al dispositivo móvil contienen la misma información que losiPantalla
RVision Runtime, que incluye
- Estado
— Número de resultados encontrados
— Puestos encontrados
— Hora de encontrar
— Mediciones de resultados
• Las imágenes en tiempo de ejecución también se pueden enviar a través deiRConnect si está habilitado en la pantalla de configuración de Vision.
• V_IRCONNECT está disponible para V8.20 y versiones posteriores. Este incorporado requiere uniOpción de paquete
RVision (R685, R686, R687, R688).
A–382
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Objetivo:Apaga una luz LED adjunta para la visión. La luz LED debe conectarse a un multiplexor para
cámaras analógicas.
Sintaxis:
V_LED_OFF(estado)
Detalles:
• V_LED_OFF apaga la luz LED que se encendió más recientemente mediante el procedimiento
integrado V_LED_ON o la llamada al programa IRVLEDON KAREL.
• Solo se puede encender una luz LED en cualquier momento, incluso si hay varias luces LED conectadas al
multiplexor.
• (R-30iB, antes de V8.20) Este integrado requiere laiOpción de cliente RVision (J917) oiOpción de
paquete RVision VisTrack (R687).
• (R-30iB, V8.20 y posterior) Este integrado requiere uniOpción de paquete RVision (R685, R686,
R687, R688).
Objetivo:Enciende una luz LED adjunta para la visión. La luz LED debe estar conectada a un multiplexor
para cámaras analógicas.
Sintaxis:
Detalles:
A–383
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
• canales el canal multiplexor de la luz LED adjunta. Los valores válidos son del 1 al 8.
• intensidades el nivel de intensidad deseado para configurar la luz LED. Los valores válidos son del 1 al 16.
• Solo se puede encender una luz LED en cualquier momento, incluso si hay varias luces LED conectadas al
multiplexor. Encender una segunda luz LED apagará automáticamente la primera luz LED. Puede ocurrir
algún retraso entre el apagado de la primera luz y el encendido de la segunda luz.
• (R-30iB, antes de V8.20) Este integrado requiere laiOpción de cliente RVision (J917) oiOpción de
paquete RVision VisTrack (R687).
• (R-30iB, V8.20 y posterior) Este integrado requiere uniOpción de paquete RVision (R685, R686,
R687, R688).
Sintaxis:
Detalles:
• nombre_superiores el nombre de la herramienta Vision Override para establecer. La herramienta Vision Override se crea y
configura eniConfiguración de RVision.
• V_OVERRIDE se utiliza para modificar temporalmente una propiedad que se guardó con un proceso de visión.
• Generalmente, este comando se usa inmediatamente antes de realizar una operación V_RUN_FIND u otra
ejecución de proceso de visión.
• Una vez que se ha ejecutado la búsqueda del proceso de visión, los valores establecidos por V_OVERRIDE se
restablecen a sus valores guardados.
• (R-30iA) Este incorporado requiere laiOpción de software de interfaz RVision KAREL (J870).
A–384
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• (R-30iB, antes de V8.20) Este integrado requiere laiOpción de cliente RVision (J917) oiOpción de
paquete RVision VisTrack (R687).
• (R-30iB, V8.20 y posterior) Este integrado requiere uniOpción de paquete RVision (R685, R686,
R687, R688).
Objetivo:Coloca o reasigna una pieza recibida de la cola de vuelta a la cola para un robot aguas
abajo.
Detalles:
Objetivo:Comienza uniProceso de visión. Cuando un proceso de visión específico tiene más de una vista de cámara, la
ubicación se realiza para las vistas de cámara especificadas.
Sintaxis:
V_RUN_FIND(vp_name,camera_view,status)
A–385
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Detalles:
• vista de cámaraes el número de la vista de la cámara. Utilizado para procesos de visión multicámara. Un
valor de -1 ejecutará todas las vistas.
• (R-30iA) Este incorporado requiere laiOpción de software de interfaz RVision KAREL (J870).
• (R-30iB, antes de V8.20) Este integrado requiere laiOpción de cliente RVision (J917) oiOpción de
paquete RVision VisTrack (R687).
• (R-30iB, V8.20 y posterior) Este integrado requiere uniOpción de paquete RVision (R685, R686, R687, R688).
Programa de ejemplo:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Visión
del PROGRAMA
------------------------------------------------------------------------
%NOLOCKGROUP
%AMBIENTE cvis
%ALFABETIZAR
%COMENTARIO = 'IRVision incorporado' %NOPAUSE
= ERROR + COMANDO + TPENABLE VAR
ESTADO : ENTERO
visproceso : CADENA[8]
valor_int : ENTERO
valor real : REAL
--------------------------------------------
EMPEZAR
A–386
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
- - Obtener todos los valores de compensación de VR[1] para que puedan colocarse en un
PR VREG_OFFSET(1,1,status)
FIN de la visión
Sintaxis:
Detalles:
• ruta de salidaes la ruta (dispositivo, directorio y nombre de archivo) donde se guardará la imagen. El nombre
del archivo debe terminar con ".PNG" o ".BMP".
• El controlador de robot debe configurarse para tener uno o más registros de imagen. Para hacerlo,
establezca $VISION_CFG.$NUM_IMREGS en un valor distinto de cero. También es posible que deba
modificar el valor de $VISION_CFG.$IMREG_SIZE según el tipo y la resolución de la cámara:
A–387
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
1024x768 : 768
1280x480 : 600
1280x1024 : 1280
640x480 : 1200
1024x768 : 2304
• Tenga en cuenta que el aumento de estos valores disminuirá la cantidad de memoria disponible para otras
aplicaciones.
• V_SAVE_IMREG se usa normalmente junto con V_SNAP_VIEW, que captura una imagen y la
almacena en un registro de imágenes.
• V_SAVE_IMREG admite guardar archivos de imagen PNG o BMP. Especificar cualquier otro formato de imagen usandoruta de
salidadará como resultado un valor distinto de ceroestado.
• V_SAVE_IMREG está disponible para V8.30 y posteriores. Este incorporado requiere uniOpción de
paquete RVision (R685, R686, R687, R688).
Sintaxis:
V_SET_REF(vp_name, estado)
Detalles:
A–388
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• Si un proceso de visión permanece abierto en la PC de configuración cuando se ejecuta SET_REFERENCE para el proceso
de visión, la posición de referencia no se puede escribir en el proceso de visión, lo que genera una alarma. Cierre la
ventana de configuración, luego vuelva a ejecutar el comando.
• Cuando el proceso de visión encuentra más de una pieza de trabajo, la posición de la pieza de trabajo que tiene la puntuación más
alta se establece como posición de referencia.
• Se recomienda colocar solo una pieza de trabajo dentro de la vista de la cámara para que no se establezca una
posición incorrecta como posición de referencia.
• (R-30iA) Este incorporado requiere laiOpción de software de interfaz RVision KAREL (J870).
• (R-30iB, antes de V8.20) Este integrado requiere laiOpción de cliente RVision (J917) oiOpción de
paquete RVision VisTrack (R687).
• (R-30iB, V8.20 y posterior) Este integrado requiere uniOpción de paquete RVision (R685, R686, R687, R688).
Objetivo:Adquiere una imagen mediante el proceso de visión especificado y la almacena en un registro de imágenes. Cuando el
proceso de visión tiene más de una vista de cámara, la imagen se adquiere utilizando la vista especificada.
Sintaxis:
Detalles:
• nombre_vpes el nombre del proceso de visión que se utilizará para adquirir la imagen.
• El controlador de robot debe configurarse para tener uno o más registros de imagen. Para hacerlo,
establezca $VISION_CFG.$NUM_IMREGS en un valor distinto de cero. También es posible que deba
modificar el valor de $VISION_CFG.$IMREG_SIZE según el tipo y la resolución de la cámara:
A–389
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
640x960 : 600
1024x768 : 768
1280x480 : 600
1280x1024 : 1280
640x480 : 1200
1024x768 : 2304
• Tenga en cuenta que el aumento de estos valores disminuirá la cantidad de memoria disponible para otras
aplicaciones.
• (R-30iA) Este incorporado requiere laiOpción de software de interfaz RVision KAREL (J870).
• (R-30iB, antes de V8.20) Este integrado requiere laiOpción de cliente RVision (J917) oiOpción de
paquete RVision VisTrack (R687).
• (R-30iB, V8.20 y posterior) Este integrado requiere uniOpción de paquete RVision (R685, R686,
R687, R688).
Detalles:
A–390
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• Después de ejecutar este comando,iRVision monitorea una condición específica (como la distancia de movimiento
del transportador).iRVision ejecuta el proceso de visión especificado cada vez que se cumple una condición
específica. Cuando se utilizan varios robots con un transportador, este comando se ejecuta solo en los robots en
los queiRVision reside.
Detalles:
• Cuando se utilizan varios robots con un transportador, este comando se ejecuta solo en los robots
en los queiRVision reside.
Objetivo:Permite que un programa KAREL determine el tipo de datos y la información numérica con respecto a las
variables internas o externas del programa
Parámetros de entrada/salida:
A–391
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Detalles:
• prog_nameespecifica el nombre del programa que contiene la variable especificada. Siprog_name está en
blanco, entonces por defecto se ejecuta el programa actual.
POSICIÓN 1
XYZWPR 2
XYZWPREXT 6
ENTERO dieciséis
REAL 17
BOOLEANO 18
VECTOR 19
VIS_PROCESO 21
MODELO 22
CORTO 23
BYTE 24
CONJUNTOPOS1 25
CONFIGURAR 28
EXPEDIENTE 29
A–392
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
SENDERO 31
CAM_SETUP 32
CONJUNTOPOS2 41
CONJUNTOPOS3 57
CONJUNTOPOS4 73
CONJUNTOPOS5 89
CONJUNTOPOS6 105
CONJUNTOPOS7 121
CONJUNTOPOS8 137
CONJUNTOPOS9 153
POS CONJUNTO 153
CUERDA 209
tipo definido por el usuario 210
• atenúadevuelve las dimensiones de la matriz, si las hay. el tamaño de laatenúala matriz debe ser 3.
PROGRAMA util_prog
VAR
contador, i : INTEGER
BEGIN
contador = 0
POR i = 1 A 10 HACER
contador = contador + 1
ENDFOR
FIN util_prog
tarea PROGRAMA
VAR
A–393
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
uninit_b : BOOLEANO
escribe un nombre : CADENA[12]
tipo_código : ENTERO
slen, estado : ENTERO
alen : ARRAY[3] DE ENTERO
EMPEZAR
VAR_INFO('util_prog', 'contador', uninit_b, nombre_tipo, código_tipo,
alen, slen, estado)
ESCRIBIR('contador : ', CR)
ESCRIBIR('UNINIT : ', uninit_b, ' FIN tarea TIPO: ', tipo_nombre, cr)
Objetivo:Localiza variables en el programa KAREL especificado con el nombre y el tipo de datos especificados
Parámetros de entrada/salida:
Detalles:
• prog_nameespecifica el nombre del programa que contiene las variables especificadas.prog_name se puede
especificar utilizando el carácter comodín (*), que especifica todos los programas cargados.
A–394
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• tipo_varrepresenta el tipo de datos de las variables que se van a encontrar. La siguiente es una lista de tipos de datos
válidos:
POSICIÓN 1
XYZWPR 2
ENTERO dieciséis
REAL 17
BOOLEANO 18
VECTOR 19
VIS_PROCESO 21
MODELO 22
CORTO 23
BYTE 24
CONJUNTOPOS1 25
CONFIGURAR 28
EXPEDIENTE 29
SENDERO 31
CAM_SETUP 32
CONJUNTOPOS2 41
CONJUNTOPOS3 57
CONJUNTOPOS4 73
CONJUNTOPOS5 89
CONJUNTOPOS6 105
CONJUNTOPOS7 121
CONJUNTOPOS8 137
CONJUNTOPOS9 153
POS CONJUNTO 153
CUERDA 209
tipo definido por el usuario 210
• n_saltarse utiliza cuando existen más variables que la longitud declarada deary_nam.Establecern_saltara 0 la
primera vez que utilice VAR_LIST. Siary_namestá completamente lleno de nombres de variables, copie el
A–395
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
• ary_names un ARRAY de STRINGs para almacenar los nombres de las variables. Si la longitud declarada de STRING en
ary_namno es lo suficientemente largo para almacenar los datos formateados, entonces el estado se devuelve con un
error.
Ejemplo:Referirse aSección B.2, "Copia de variables de ruta" (CPY_PTH.KL), para ver un ejemplo de programa
detallado.
Objetivo:Define una variable, tipo de retorno de función o parámetro de rutina como tipo de datos VECTOR
Sintaxis:VECTOR
Detalles:
• Un VECTOR consta de tres valores REALES que representan una ubicación o dirección en
coordenadas cartesianas tridimensionales.
• Solo las expresiones VECTOR pueden asignarse a variables VECTOR, devolverse desde rutinas de
función VECTOR o pasarse como argumentos a parámetros VECTOR.
A–396
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• Se puede acceder a los campos componentes de las variables VECTOR o configurarlos como si estuvieran definidos de la siguiente manera:
VECTOR = ESTRUCTURA
X: REAL
Y: REAL
Z: REAL
ESTRUCTURA FINAL
Nota: Todos los campos son de lectura y escritura.
Ejemplo:El siguiente ejemplo muestra VECTOR como declaraciones de variables, como parámetros en una rutina
y como un tipo de retorno de rutina de función.
VAR
dirección, desplazamiento: VECTOR
RUTINA calc_offset(offset_vec:VECTOR):VECTOR DESDE util_prog
Objetivo:Devuelve el total de bytes, los bytes libres y el nombre del volumen del dispositivo especificado
Parámetros de entrada/salida:
Detalles:
• dispositivopuede ser:
A–397
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
RD:El disco RAM devuelve los tres parámetros, pero el nombre del volumen es "ya que no es
compatible". El disco RAM debe estar montado para poder consultarlo.
FR:El disco FROM devuelve los tres parámetros, pero el nombre del volumen es "ya que no es
compatible". El disco FROM debe estar montado para poder consultarlo.
TPP:El área de la memoria del sistema donde se almacenan los programas de la consola portátil.
PERMANENTE:El área de la memoria RAM CMOS permanente donde se almacenan las variables del sistema y las
variables KAREL seleccionadas.
TEMPERATURA:El área de la memoria DRAM temporal utilizada para los programas KAREL cargados, las variables
KAREL, la información de ejecución del programa y las operaciones del sistema.
SISTEMA:El área de la memoria DRAM temporal donde se almacenan el software y las opciones del
sistema. Esta memoria se guarda en FROM y se restaura al encender.
espacio PROGRAMA
%NOLOCKGROUP
%AMBIENTE FLBT
VAR
total: ENTERO
libre: ENTERO
volumen: CUERDA [30]
EMPEZAR
A–398
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Objetivo:Llena el registro de posición especificado con los datos de posición encontrados en el registro de
visión especificado.
Detalles:
• visreg_noes el número de registro de visión (VR) que contiene los datos de desplazamiento.
• vista de cámaraes la vista de cámara especificada para un proceso de visión de múltiples vistas.
• posreg_noes el número de registro de posición (PR) que se completará con los datos de compensación.
• (R-30iA) Este incorporado requiere laiOpción de software de interfaz RVision KAREL (J870).
• (R-30iB, antes de V8.20) Este integrado requiere laiOpción de cliente RVision (J917) oiOpción de
paquete RVision VisTrack (R687).
• (R-30iB, V8.20 y posterior) Este integrado requiere uniOpción de paquete RVision (R685, R686,
R687, R688).
Objetivo:Llena el registro de posición especificado con los datos de desplazamiento en el registro de visión especificado.
A–399
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Detalles:
• visreg_noes el número de registro de visión (VR) que contiene los datos de compensación
• posreg_noes el número de registro de posición (PR) que se completará con los datos de compensación.
• (R-30iA) Este incorporado requiere laiOpción de software de interfaz RVision KAREL (J870).
• (R-30iB, antes de V8.20) Este integrado requiere laiOpción de cliente RVision (J917) oiOpción de
paquete RVision VisTrack (R687).
• (R-30iB, V8.20 y posterior) Este integrado requiere uniOpción de paquete RVision (R685, R686,
R687, R688).
Objetivo:Retrasa la continuación de la ejecución del programa hasta que se cumplan algunas condiciones
Sintaxis:ESPERAR COND_list
dónde:
Detalles:
• Todas las condiciones de una instrucción WAIT FOR deben cumplirse simultáneamente para que
continúe la ejecución.
Ver también:Capítulo 6MANEJADORES DE CONDICIONES,Apéndice E, “Diagramas de sintaxis”, para obtener más información sobre la
sintaxis
A–400
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
dónde:
Detalles:
• Todas las condiciones en ellista_condicionesde una única cláusula WHEN debe cumplirse simultáneamente para
que se active el controlador de condiciones.
• loslista de Acciónrepresenta una lista de acciones a realizar cuando las condiciones correspondientes de una
cláusula WHEN se cumplen simultáneamente.
• Las llamadas a rutinas de función no están permitidas en una sentencia CONDITION y, por lo tanto, no pueden
usarse en una cláusula WHEN.
Ver también:Capítulo 6MANEJADORES DE CONDICIONES,Apéndice E, “Diagramas de sintaxis”, para obtener más información sobre la
sintaxis
Objetivo:Se utiliza cuando se va a ejecutar una acción siempre que una expresión BOOLEAN siga siendo VERDADERA
dónde:
A–401
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Detalles:
Ver también:Apéndice E, “Diagramas de sintaxis”, para obtener más información sobre la sintaxis
Ejemplo:Referirse aSección B.1, "Configuración de puertos de salida digital para monitoreo" (DOUT_EX.KL) para un
ejemplo de programa detallado.
dónde:
with_sys_var: una de las variables del sistema disponibles para usar en la cláusula WITH
valor: una expresión del tipo correspondiente al tipo de la variable del sistema
Detalles:
• psPRIORITY y $SCAN_TIME son calificadores de manejadores de condiciones que se pueden usar en una cláusula
WITH solo cuando la cláusula WITH es parte de una instrucción de manejador de condiciones.
dónde:
A–402
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Detalles:
• Sifile_varno se especifica en una instrucción WRITE, se utiliza TPDISPLAY predeterminado. La directiva %CRTDEVICE
cambiará el valor predeterminado a SALIDA.
• Sifile_varse especifica, debe ser uno de los dispositivos de salida o una variable que se haya equiparado
a uno de ellos.
• Sifile_varatributo se configuró con la opción UF, los datos se transmiten al archivo o dispositivo especificado en forma
binaria. De lo contrario, los datos se transmiten como texto ASCII.
• Sidato_elementoes de tipo PATH, puede especificar que se lea la ruta completa, se lea un nodo
específico [n] o se lea un rango de nodos [n .. m].
• Se pueden usar especificadores de formato opcionales para controlar la cantidad de datos que se escriben para cada
dato_elemento.
• La palabra reservada CR, que se puede utilizar como elemento de datos, especifica que el siguiente elemento de datos que se
escribirá en file_var comenzará en la siguiente línea.
Ver también:Tipo de datos PATH, para obtener más información sobre cómo escribir variables PATH,Capítulo 7OPERACIONES DE
ENTRADA/SALIDA DE ARCHIVOS,para obtener más información sobre los especificadores de formato y file_vars.Apéndice E, “Diagramas
de sintaxis”, para obtener más información sobre la sintaxis
Ejemplo:Referirse aapéndice B, "Programas de ejemplo de KAREL" para obtener ejemplos de programas más detallados.
Parámetros de entrada/salida:
A–403
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Detalles:
• elemento_noespecifica el número de elemento a escribir. Este número se designa con un “$” en el archivo del
diccionario.
Ejemplo:Referirse aSección B.12, "Visualización de una lista desde un archivo de diccionario" (DCLST_EX.KL), para ver un
ejemplo de programa detallado.
Parámetros de entrada/salida:
Detalles:
A–404
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
• elemento_noespecifica el número de elemento a escribir. Este número se designa con un $ en el archivo del
diccionario.
• valor_matrizes una matriz de nombres de variables que corresponde a cada elemento de datos con formato en el
texto del diccionario. Cada nombre de variable se puede especificar como '[prog_name]var_name'.
Ejemplo:En el siguiente ejemplo, TPTASKEG.TX contiene información de texto de diccionario que mostrará una
variable del sistema. Esta información es el primer elemento del diccionario y los números de elementos
comienzan en 0.util_progutiliza WRITE_DICT_V para mostrar el texto en la consola portátil.
A–405
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Parámetros de entrada/salida:
[en] nombre_etiqueta:CADENA
[en] numchar:ENTERO
[en] tag_ident:INTEGER
Detalles:
• etiqueta_identIdentificador de aplicación que el usuario asocia con la etiqueta Hay algunos identificadores de etiquetas
del sistema que el usuario no puede usar. Esto se usa para permitirle activar sus etiquetas y los códigos de retorno del
usuario. Cuando el escaneo encuentre la etiqueta registrada, regresará con tag_ident. El archivo DEBE estar abierto antes
de poder registrar una etiqueta. tag_ident debe ser un número único dentro de la aplicación. Esto permite que la
aplicación realice una selección basada en el identificador de retorno. NOTA: El sistema reserva algunos identificadores
para las devoluciones de estado de límite de exploración y error. Esto permite que la aplicación incluya fácilmente estas
constantes en la declaración de selección.
Objetivo:Devuelve los nombres y valores de los atributos asociados con la etiqueta que provoca la devolución.
Parámetros de entrada/salida:
A–406
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Detalles:
Parámetros de entrada/salida:
Detalles:
A–407
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
Parámetros de entrada/salida:
[fuera] tag_name:STRING
[out] tag_ident:INTEGER
[fuera] código_función::INTEGER
Detalles:
• estadoresultado de la operación
— Código_función = XML_TXCONT
— Tag_ident = XML_SCANLIM
— Esto no es un error e indica que hay más por venir
• Si encuentra un error de análisis
A–408
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
— Tag_ident = XML_ERROR
• Al final del archivo, Estado = ÉXITO
• Los errores de análisis válidos son:
• El sistema proporcionará una devolución separada para el inicio de la etiqueta y el final de la etiqueta si la
etiqueta no contiene información de inicio y finalización. Los datos del atributo NO son válidos cuando la
llamada se realiza para la etiqueta END.
Objetivo:Establece la variable [prog_name]var_name de acuerdo con los atributos asociados con la etiqueta
que causa la devolución.
Parámetros de entrada/salida:
[en] prog_name:CADENA
[en] var_name:CADENA
Detalles:
A–409
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
• En este caso, el texto del atributo coincidirá con el nombre del campo de texto de la variable KAREL. Así
que una variable de este tipo:
xmlstrct_t = ESTRUCTURA
primero: entero
segundo: real
tercera: BOOLEANO
cuatro: cadena[20]
ESTRUCTURA FINAL
• El nombre de la etiqueta XML no necesita coincidir con el nombre del TIPO. La asociación de los nombres de los campos
y los nombres de los atributos se basa en la variable [programa] en la llamada a xml_setvar.
Objetivo:Define una variable, tipo de devolución de función o parámetro de rutina como tipo de datos XYZWPR
Detalles:
• Un XYZWPR consta de tres componentes REALES que especifican una ubicación cartesiana (x,y,z), tres
componentes REALES que especifican una orientación (w,p,r) y un componente que especifica un tipo de datos
CONFIG, 32 bytes en total.
• La cadena de configuración indica las ubicaciones de las articulaciones y los múltiples giros que describen la
configuración del robot cuando se encuentra en una posición particular.
• Siempre se hace referencia a una posición con respecto a un marco de coordenadas específico.
• Se puede acceder a los componentes de las variables XYZWPR o configurarlos como si estuvieran definidos de la siguiente manera:
R: REAL
CONFIG_DATOS: CONFIGURAR
ESTRUCTURA FINAL
Nota: Todos los campos tienen acceso de lectura y escritura.
A–410
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL
Objetivo:Define una variable, tipo de retorno de función o parámetro de rutina como XYZWPREXT
Detalles:
• Un XYZWPREXT consta de tres componentes REALES que especifican una ubicación cartesiana (x,y,z), tres
componentes REALES que especifican una orientación (w,p,r) y un componente que especifica una cadena de
configuración. También incluye tres ejes extendidos, 44 bytes en total.
• La cadena de configuración indica las ubicaciones de las articulaciones y los múltiples giros que describen la
configuración del robot cuando se encuentra en una posición particular.
• Siempre se hace referencia a una posición con respecto a un marco de coordenadas específico.
• Se puede acceder a los componentes de las variables XYZWPREXT o configurarlos como si estuvieran definidos de la siguiente manera:
R: REAL
CONFIG_DATOS: CONFIGURAR
EXT1: REAL
EXT2: REAL
EXT3: REAL
ESTRUCTURA FINAL
- - Nota: Todos los campos son de acceso de lectura y escritura.
A–411
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H
A–412
apéndice B
PROGRAMAS DE EJEMPLO DE KAREL
Contenido
B–1
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
Este apéndice contiene algunos ejemplos de programas KAREL. Estos programas están destinados a mostrarle
cómo usar los comandos y los componentes integrados de KAREL descritos enApéndice A, "Descripción alfabética
del lenguaje KAREL".
Esta sección incluye ejemplos de cómo usar las funciones integradas y los comandos de KAREL en un programa. Referirse a
Apéndice A, para obtener información más detallada sobre cada uno de los componentes y comandos de KAREL.
Tabla B–1enumera los programas en esta sección, su función principal, los elementos integrados utilizados en cada programa y la sección a la
que se debe consultar para obtener la lista de programas.
Convenciones
Sección 0: enumera cada elemento del lenguaje KAREL que se utiliza en el programa de ejemplo.
Nombre del programa Función del programa Incorporados usados Sección a referir
CALL_PROG
CNV_INT_STR
COPY_PATH
CREAR_VAR
CURSOS
ELIMINAR NODO
CARGA
PATH_LEN
PROG_LISTA
LEER_KB
SET_CURSOR
SET_FILE_ATR
SET_VAR
SUB_STR
VAR_LIST
B-2
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
Nombre del programa Función del programa Incorporados usados Sección a referir
POS_REG_TYP
SET_INT_REG
SET_JPOS_REG
SET_POS_REG
FORCE_SPMENÚ
CARGA
LOAD_STATUS
PROG_LISTA
REDONDO
SUB_STR
DESMONTAR_DEV
FORMATO_DEV
CONSIGUE TIEMPO
MOUNT_DEV
SUB_STR
B–3
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
Nombre del programa Función del programa Incorporados usados Sección a referir
LEER_DICT
REMOVE_DICT
SET_FILE_ATR
CONFIGURAR_VENTANA
STR_LEN
UNINIT
ESCRIBIR_DICT
B-4
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
Nombre del programa Función del programa Incorporados usados Sección a referir
de lo externo SET_PORT_ASG
equipo y a SET_PORT_CMT
mostrar la corriente SET_PORT_MOD
estado del proceso. El SET_PORT_SIM
equipamiento
Los DOUT de estado son
simulado, pero en
práctica que son
miró hacia el
exterior real
equipo como un
respuesta de retroalimentación.
El robot se mueve a lo
largo de un camino hasta
que el equipo externo
B-5
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
Nombre del programa Función del programa Incorporados usados Sección a referir
necesita servicio,
que se desencadena
por los valores DOUT.
Este programa configura puertos de salida digital para el monitoreo de procesos. Los DOUT son para monitorear el
estado del equipo externo y mostrar el estado actual del proceso. Los DOUT del estado del equipo son simulados, pero
en la práctica están conectados a los equipos externos reales como respuesta de retroalimentación. El robot se mueve
a lo largo de una ruta hasta que es necesario reparar el equipo externo, lo que se activa con los valores de DOUT.
--------------------------------------------------------------------------------
- - - - DOUT_EX.Kl
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
- - - - Sección 0: Detalle sobre DOUT_EX.kl
--------------------------------------------------------------------------------
- - - - Elementos de KAREL Idioma cubierto:
---- Acción:
---- SEGUIR Segundo 4-A
---- HABILITAR CONDICIÓN Segundo 3-B; 4-C
---- SIN MENSAJE Segundo 4-A
---- REANUDAR Segundo 4-C
---- RUTINA LLAMAR Segundo 4-A,C
---- SEÑAL EVENTO Segundo 4-C
---- DETÉNGASE Segundo 4-C
---- DESPAUSAR Segundo 4-A
---- Cláusulas:
---- DE Segundo 3-A
---- CUANDO Segundo 4-A,C
---- Condiciones:
---- ERROR[xxx] Segundo 4-A
---- EVENTO Segundo 4-C
---- RELACIONAL condición Segundo 4-A
---- Tipos de datos:
---- BOOLEANO Segundo 2
---- ENTERO Segundo 2
---- SENDERO Segundo 2
B–6
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
Configuración de puertos de salida digital para monitorear el programa de Teach Pendant - Descripción general (continuación)
---- Directivas:
---- ALFABETIZAR Segundo 1
---- COMENTARIO Segundo 1
---- CMOSVARS Segundo 1
---- INCLUIR Segundo 1
---- Funciones y procedimientos integrados:
---- CDH Segundo 3-E; 4-D
---- CURSOS Segundo 3-E
---- DEMORA Segundo 3-B,E
---- FORCE_SPMENÚ Segundo 3-E; 4-D
---- PATH_LEN Segundo 4-B; 4-D
---- REINICIAR Segundo 3-B
---- SET_PORT_ASG Segundo 3-D
---- SET_PORT_CMT Segundo 3-D
---- SET_PORT_MOD Segundo 3-C
---- SET_PORT_SIM Segundo 4-D
---- SET_POS_REG Segundo 3–E, 4-D
---- SET_EPOS_REG Segundo 3–E
---- Declaraciones:
---- ABORTAR Segundo 3-D; 4-B,D
---- ADJUNTAR Segundo 4-B
---- TEMPORIZADOR DE CONEXIÓN Segundo 4-A
---- CONDICIÓN... CONDICIÓN DE FINALIZACIÓN Segundo 4-A,C
---- CONDICIÓN DE HABILITACIÓN Segundo 3-B,E; 4-A,C
---- PARA...FIN PARA Segundo 3-D
---- SI... ENTONCES... ENDIF Segundo 3-B,C,D; 4-B,C,D
---- LIBERAR Segundo 4-B
---- RUTINA Segundo 3-A,B,C,D,E,F
---- ESPERAR Segundo 3-E
---- MIENTRAS... FINALIZA Segundo 4-B
---- ESCRIBE Segundo 3-B,D,E; 4-B,D
---- Reservar Palabras:
---- EMPEZAR Segundo 3-B,C,D,E; 4
---- CONSTITUCIÓN Segundo 2
---- RC Segundo 3-B,D,E; 4-B,D
---- FINAL Segundo 3-B,C,D,E, 4-D
---- NO Segundo 3-B; 4-C
---- PROGRAMA Segundo 1
---- VAR Segundo 2
---- Nombres de ARCHIVO predefinidos:
B–7
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
----------------------------------------------------------------------------------
- - - - Sección 1: Programa y Declaración Ambiental
-----------------------------------------------------------------------------------
PROGRAMA DOUT_EX - - Definir el nombre del programa
%ALFABETIZAR - - CREA las variables en orden alfabético
%SIN PAUSA = TPENABLE - - No pausar el programa si TP está HABILITADO.
- - durante la ejecución.
%COMENTARIO = 'PUERTO/CH DOUT_EX'
%CMOSVARS - - Asegúrese de que las variables estén almacenadas en CMOS
%INCLUIR KLIOTIPOS
----------------------------------------------------------------------------------
- - - - Sección 2: Declaraciones de constantes y variables
----------------------------------------------------------------------------------
CONST
- - Números de controladores de condiciones
CONT_CH =2 - - Continuar condición de ejecución
EQIP_FAIL =3 - - Condición de falla del equipo
REINICIAR =6 - - Manejador de condiciones de reinicio
SERV_HECHO =4 - - Condición de mantenimiento realizado
UNINIT_CH = 10 - - Monitor de error de unidad
CALENTADO =5 - - Evento para notificar que el equipo está listo
- - Procesar números DOUT (del 1 al 6 son DOUT complementarios)
-- (3 y 4 son DOUT simulados)
EQIP_LISTO = 1 - - Equipo Listo
EQIP_NOT_RD= 2 - - Equipo no listo
EQIP_ERROR = 3 - - Equipo falló durante el proceso
EQIP_FIJO = 4 - - Equipo arreglado después de falla
EQIP_ON =5 - - Encienda Eqip-1 DOUT
EQIP_APAGADO =6 - - APAGUE Eqip-1 DOUT
NODO_PULSO = 7 - - Nodo pulsante DOUT
FINALIZAR =8 - - Señal de Finalización de Trayecto DOUT
- - Proceso constantes
ÉXITO =0 - - Estado de operación exitosa
SIN FIRMAR = 13007 - - Error de eliminación de puerto no asignado
VAR
cont_timer,
último_nodo, nodo_ind,
estado :ENTERO - - Estado de las llamadas integradas
prg_abrt :BOOLEANO - - Establecer cuando el programa es abortado
pth1 :SENDERO - - Ruta del proceso
parada_pos :XYZWPREXT - - Posición de parada del proceso
perch_pos :XYZWPR - - Posición de percha
B–8
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
---------------------------------------------------------------------------------
- - - - Sección 3: Declaración de Rutina
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
---- Sección 3-A: Declaración TP_CLS
---- Esta rutina es de ROUT_EX.kl y borrará la pantalla del
---- menú USUARIO TP y obligará a que sea visible.
----
---------------------------------------------------------------------------------
RUTINA tp_cls DESDE rout_ex - - También se debe cargar ROUT_EX.
---------------------------------------------------------------------------------
---- Sección 3-B: declaración port_init
---- Esta rutina asigna un valor a ports_ready, que permite inicializar los
---- puertos. Restablece el controlador para que la ejecución del programa
---- pueda continuar automáticamente a través del controlador de
---- condiciones CONT_CH.
---------------------------------------------------------------------------------
RUTINA init_port
VAR
reset_ok: BOOLEANO
EMPEZAR
-----------------------------------------------------------------------------------
---- Sección 3-C: SET_MODE Declaración
---- Configura el modo de IO. Dependiendo del parámetro pasado, los
---- puertos IO se establecerán en REVERSE
B–9
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
SI reverso DESPUÉS
SI quejarse DESPUÉS
---------------------------------------------------------------------------------
---- Sección 3-D: Declaración SETUP_PORTS
---- Esta sección asume que usted no tiene una E/S AB o GENIUS o cualquier otra placa
---- de E/S externa. Por lo tanto, las asignaciones de puertos anteriores ya no son
---- necesarias para esta aplicación y se pueden eliminar.
----
---------------------------------------------------------------------------------
ROUTINE setup_ports
VAR
puerto_n : ENTERO
EMPEZAR
B-10
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
ENDFOR
- - Asigne los PUERTOS DIGITALES 1 A 48 como imágenes de memoria.
PARA port_n = 0 A 5 HACER
SET_PORT_ASG(IO_DOUT, puerto_n*8+1, 0, 0, io_mem_boo, puerto_n*8+1, 8, estado) SI (estado <>
0) ENTONCES - - Verifique que SET_PORT_ASG fue exitoso
ESCRIBIR ('SET_PORT_ASG integrado para DOUT (asignación) fallida',CR)
ESCRIBIR ('Estado = ',estado,CR) ENDIF
ENDFOR
- - Supongamos que el equipo-1 se enciende mediante la señal DOUT[1] = VERDADERO y
- - desactivado por la señal DOUT[2] = TRUE. Para evitar que ambas señales sean
- - VERDADERO o FALSO al mismo tiempo, establezca DOUT[1] para que sea un complemento.
- - Una vez que DOUT[1] está configurado en modo complementario, DOUT[1] y
- - DOUT[2] siempre mostrará la señal opuesta entre sí.
- - Evitando así la confusión de apagar y encender el equipo
- - al mismo tiempo.
- - Configure el puerto 1, el puerto 3 y el puerto 5 en modo
COMPLEMENTARIO. PARA port_n = 1 a 6 DO
SET_MODE(io_dout, puerto_n, VERDADERO,
VERDADERO) SI (estado <> ÉXITO) ENTONCES
ESCRIBIR ('Error en SET_PORT_MODE en el puerto',1,CR)
ESCRIBIR ('Con estado = ',estado,CR)
TERMINARA SI
ENDFOR
B-11
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
B–12
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
---- fue antes del servicio. Luego configura el DOUT para notificar
---- que el equipo está listo.
----------------------------------------------------------------------------------
RUTINA service_rtn
EMPEZAR
TP_CLS
- - almacenar la posición actual, donde el proceso se detiene debido a una falla
- - por lo que después de reanudar el proceso se puede iniciar desde este punto.
parada_pos = CURPOS(0,0)
- - mueva el robot a la posición de percha para que el equipo
- - se puede trabajar con seguridad.
SET_POS_REG(1, perch_pos, status) —— Ponga perch_pos en PR[1] move_to_pr
-- Llame al programa TP para pasar a PR[1]
WRITE (chr(139),' POR FAVOR LEA ',chr(143),CR) WRITE - - Visualización en vídeo inverso
('Equipo - 1 falló durante',CR)
ESCRIBIR ('procesando. Se han detenido los movimientos.',CR)
ESCRIBIR ('Por favor, arregle el equipo entonces',CR)
ESCRIBIR ('SET DOUT[',EQIP_FIXED,'] = TRUE ',CR)
- - Mostrar el siguiente mensaje en video inverso
ESCRIBIR (chr(139), 'IMPORTANTE: Una vez que se establece el DOUT, actual',CR)
ESCRIBIR ('el movimiento DETENIDO se REANUDARÁ',chr(143),CR)
ESPERE DOUT[EQIP_FIXED]: espere hasta que se haya reparado el equipo
B–13
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
-----------------------------------------------------------------------------------
- - - - Sección 4: Programa Principal
-----------------------------------------------------------------------------------
COMENZAR - - DOUT_EX
-----------------------------------------------------------------------------------
- - - - Sección 4-A: Declaración del manejador de condiciones globales
-----------------------------------------------------------------------------------
CONDICIÓN[UNINIT_CH]:
CUANDO ERROR[12311] HACER - - Error de DESINICIALIZACIÓN de captura
SIN MENSAJE - - Suprimir el mensaje de error
DESPAUSAR - - SALIR DE LA PAUSA
-----------------------------------------------------------------------------------
- - - - Sección 4-B: Verifique que se haya enseñado la variable PATH, pth1.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - tp_cls
- - Llamada de Rutina; Borra el menú USUARIO TP y
- - fuerza la visualización del menú USUARIO TP.
- - Comprobar el número de nodos en la ruta SI
PATH_LEN(pth1) = 0 ENTONCES - - La ruta está vacía (sin nodos)
ESCRIBIR ('Necesita enseñar la ruta.',CR) -- Mostrar instrucciones ESCRIBIR ('antes de
ejecutar este programa.',CR)
ESCRIBIR ('Enseñar la variable PATH pth1', CR, 'y reiniciar el programa',CR) ESCRIBIR
('PROGRAMA ABORTADO',CR)
ABORTAR - - ABORTAR la tarea. no continues
- - No hay nodos a los que moverse
B–14
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
TERMINARA SI
ENTREVISTA
WRITE ('El ROBOT está listo para moverse desde el TP',cr) WRITE
('Después de mover el ROBOT a la posición PERCH',cr) WRITE
('Apague el TP y luego SUELTE EL HOMBRE MUERTO',cr) WHILE
(TPIN[249] = ON ) HACER
ESCRIBIR TPPROMPT (CHR (128), CHR (137), 'APAGAR TP, después de MOVE se hace
DEMORA 10000
ENTREVISTA
----------------------------------------------------------------------------------
- - - - Sección 4-C: Configurar puertos y declarar condición dependiente del proceso
B–15
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
manipulador
----------------------------------------------------------------------------------
- - Las asignaciones de puertos deben asignarse solo una vez y tener efecto
- - después de ARRANQUE EN FRÍO del controlador.
- - La variable ports_ready se utiliza para determinar si los puertos tienen
- - ya ha sido asignado por este programa.
- - Por lo tanto, solo la primera ejecución de este programa asignará los puertos SI NO
(puertos_listos) ENTONCES
setup_ports
TERMINARA SI
DETÉNGASE
SALIDA[EQIP_FIXED] = FALSO
DOUT[EQIP_LISTO] = FALSO
HABILITAR CONDICIÓN[REINICIAR]
service_rtn
CONDICIÓN FINAL
HABILITAR CONDICIÓN[EQIP_FAIL]
- - Defina un manejador de condiciones para monitorear el proceso de servicio.
- - Una vez que se complete el servicio/reparación del equipo, espere a que el equipo
- - para estar en modo LISTO. Cuando el equipo esté LISTO, señale un evento
- - que reiniciará el proceso donde lo dejó. El SERV_DONE
- - El manejador de condiciones está HABILITADO desde la rutina de interrupción SERVICE_RTN.
CONDICIÓN[SERV_HECHO]:
CUANDO DOUT[EQIP_READY] HACER
EVENTO DE SEÑAL[WARMED_UP]
DOUT[EQIP_ERROR] = CONDICIÓN DE
FINALIZACIÓN FALSA
REANUDAR
HABILITAR CONDICIÓN[EQIP_FAIL]
CONDICIÓN FINAL
----------------------------------------------------------------------------------
B–16
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
B–17
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
TERMINARA SI
Este ejemplo muestra las diferentes formas de copiar y agregar variables PATH. El tipo de datos PATH se puede copiar
de uno a otro solo con nombres de variables de ruta codificados. Sin embargo, las rutas definidas por el usuario se
pueden copiar de una a otra. Los nombres de las variables de ruta se pueden determinar durante la ejecución del
programa.
------------------------------------------------------------------------------------
- - - - Detalle sobre CPY_PTH.Kl
------------------------------------------------------------------------------------
- - - - Elementos de KAREL Idioma cubierto: En la sección:
---- Acción:
---- Cláusulas:
---- DE Segundo 3-A
---- EN DRAM Segundo 2
---- CUANDO Segundo 4-A
---- Condiciones:
---- Tipos de datos:
---- ARRAY DE CADENA Segundo 2
---- BOOLEANO Segundo 2; 3-C
---- EXPEDIENTE Segundo 2
---- ENTERO Segundo 2; 3-B,C
---- SENDERO Segundo 2
---- CUERDA Segundo 2; 3-B
---- ESTRUCTURA... ESTRUCTURA FINAL RUTA Segundo 2
---- DEFINIDA POR EL USUARIO Segundo 2
---- XYZWPR Segundo 2
---- Directivas:
---- ALFABETIZAR Segundo 1
---- COMENTARIO Segundo 1
---- CMOSVARS Segundo 1
---- DISPOSITIVO CRT Segundo 1
B–18
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
B–19
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
%ALFABETIZAR
%COMENTARIO = 'COPIAR RUTA' - - Mostrar información por defecto para
CRT/KB
%DISPOSITIVO CRT
%CMOSVARS - - Use CMOS RAM para almacenar todas las variables estáticas,
- - excepto los especificados con IN DRAM
------------------------------------------------------------------------------------
- - - - Sección 2: Declaraciones de constantes, variables y tipos
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CONST
ÉXITO = 0: el valor devuelto por todos los integrados cuando se realiza correctamente
ESCRIBE
p1_len,
p2_len,
estado, nodo_ind,
nodo_total :ENTERO
F1_presionar,
F2_pulsar :BOOLEANO
núm_origen,
des_num :ENTERO
calle_ficticia,
src_var,
des_var :CADENA[20]
cur_name :CADENA[12]
entrada :ENTERO
tipo_var :ENTERO
mem_loc :ENTERO
B–20
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
------------------------------------------------------------------------------------
- - - - Sección 3: Declaración de Rutina
------------------------------------------------------------------------------------
------------------------------------------------------------------------------------
- - - - Sección 3-A: Declaración CRT_CLS
------------------------------------------------------------------------------------
ROUTINE CRT_CLS FROM rout_ex -- incluye esta rutina del archivo rout_ex.kl
------------------------------------------------------------------------------------
---- Sección 3-B: SÍ_NO Declaración
---- ETIQUETE la tecla F1 como SÍ y la tecla F2 como NO, pregunte por el usuario
---- confirmación. Estas dos claves son monitoreadas por el controlador de condiciones
---- globales, por lo que la respuesta del usuario puede quedar atrapada.
------------------------------------------------------------------------------------
RUTINA SI_NO
VAR
key_press : ENTERO
cadena: CADENA[1]
n_caracteres: ENTERO
l_estado: ENTERO
EMPEZAR - - - - SÍ NO
ESCRIBE CRTFFUN (CHR(128),CHR(137)) --- Borrar ventana, cursor de inicio
- - Muestre SÍ arriba de F1 y NO arriba de F2 y borre el resto de la ventana de función
ESCRIBIR CRTFUNC (' SÍ NO ',chr(129))
F1_presione = FALSO
F2_pulsar = FALSO
REPETIR -- hasta que el usuario presione la tecla F1 o F2
- - Leer solo las teclas de función del CRT/KB.
- - La lectura se cumplirá solo cuando se presione una tecla de función.
B–21
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
------------------------------------------------------------------------------------
- - - - Sección 3-C: Declaración PTH_CPY
---- Copie una variable de ruta definida por el usuario a otra variable de ruta definida por
---- el usuario. El primer parámetro es la ruta de origen. El segundo parámetro es la ruta
---- de destino. Los parámetros de ruta solo se pueden pasar usando BYNAME y las rutas
---- deben ser definidas por el usuario
-------------------------------------------------------------------------------------
ROUTINE PTH_CPY(src_path: USER_PATH; des_path: USER_PATH)
VAR
nodo_indx :ENTERO
hazlo :BOOLEANO
1_stat :ENTERO
EMPEZAR --- pth_cpy
CRT_CLS - - Borrar la pantalla del menú de USUARIO CRT/KB
hazlo = verdadero
MÁS
B–22
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
FINAL PTH_CPY
----------------------------------------------------------------------------------
---- Sección 3–D: La rutina move_to_pr es una rutina TP
---- para hacer movimientos
----------------------------------------------------------------------------------
RUTINA move_to_pr DESDE move_to_pr - - Move_to_pr también debe cargarse.
- - 1:J PR[1] 100% FINO;
Copiar programa de variables de ruta: abre CRT/KB y envía datos al dispositivo predeterminado
-----------------------------------------------------------------------------------
- - - - Sección 4: Programa Principal
-----------------------------------------------------------------------------------
COMENZAR --- CPY_PATH
-----------------------------------------------------------------------------------
- - - - Sección 4-A: Abrir CRT KB para leer SÍ/NO entradas del usuario
------------------------------------------------------------------------------------
CRT_CLS -- forzará que el menú CRT USER sea visible y borre la pantalla
SET_FILE_ATR(crt_kb, ATR_FIELD) -- Necesario para que la lectura esté satisfecha con uno
- - personaje.
ABRIR ARCHIVO crt_kb ('RO', 'KB:crkb') -- Abre un archivo en CRT/KB
- - Utilizado dentro de la rutina YES_NO.
-----------------------------------------------------------------------------------
- - - - Sección 4-B: Comprobar si SAVE_VRS.PC está cargado. Si está cargado, ejecute
-----------------------------------------------------------------------------------
- - - - Primero verifique si el programa "SAVE_VRS" está cargado o no. prog_name =
'SAVE_VRS' -- Solo interesado en el programa SAVE_VRS prog_type = 6
- - Interesado solo en archivos tipo PC
n_saltar = 0 - - La primera vez no omita ningún archivo
formato = 1 - - Devuelve solo el nombre del archivo
do_copy = VERDADERO
WRITE ('Comprobación de la lista de programas',cr)
PROG_LIST(prog_name, prog_type, n_skip, format, ary_nam, n_match, status)
SI (estado <>ÉXITO) ENTONCES
SI (estado = 7073) ENTONCES ---- El programa no existe error
- - - El programa SAVE_VRS no está cargado en el controlador.
ESCRIBIR ('CARGANDO', nombre_prog, CR)
LOAD (nombre_prog+'.PC', 0, estado) IF
(estado <> ÉXITO) ENTONCES
ESCRIBIR ('Error al cargar', prog_name,cr)
WRITE CRTPROMPT('¿Copiar rutas SIN guardar variables de programa?',CR) YES_NO
B–23
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
MÁS
- - La lista de programas falló.
WRITE ('PROG_LIST incorporado falló',cr,' with Status = ',status,cr) WRITE
CRTPROMPT('¿Copiar rutas SIN guardar las variables del programa?',CR) YES_NO
---------------------------------------------------------------------------------
- - - - Sección 4-C: Comprobar la inicialización de los PATHs pth1 y pth2.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SI (NO
hacer_copiar) ENTONCES
WRITE ('Programa saliendo, incapaz de guardar variables',cr) WRITE
('antes de copiar el contenido de la ruta',cr)
- - AVISO:
- - Dos comillas simples se mostrarán como una sola comilla, por lo
- - que esta declaración de escritura aparecerá como:
- - "antes de copiar el contenido de la ruta"
ABORTAR
TERMINARA SI
B-24
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
ENDFOR
TERMINARA SI
-----------------------------------------------------------------------------------
---- Sección 4-D: sume pth1 y pth2 para crear pth3.
---- Muévase a lo largo de pth1 y pth2.
---- Muévase hacia atrás a través de pth3.
-----------------------------------------------------------------------------------
total_node = p1_len + p2_len - - Número total de nodos necesarios para pth3
- - Copie los datos del nodo de pth1 a pth3 WRITE
('copiando pth1 a pth3',cr) COPY_PATH (pth1, 0,0,
pth3, estado)
SI (estado <> 0) ENTONCES
ESCRIBIR ('ERROR en COPY_PATH', estado, CR) ENDIF
ENDFOR
- - Agregue los datos de nodo de pth2 a pth3.
ESCRIBIR ('Anexando pth2 a pth3',cr)
FOR indx = p1_len+1 TO total_node DO
USAR pth2[indx - p1_len] HACER
pth3[indx].node_pos = node_pos ENDUSING
B–25
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
ENDFOR
- - Mover a lo largo de la ruta pth1 y pth2 WRITE
('Moviéndose a lo largo de la ruta pth1',cr) FOR
node_ind = 1 TO p1_len DO
tmp_xyz = pth1[ind_nodo]
SET_POS_REG(1, tmp_xyz, estado)
move_to_pr -- Llame al programa TP para moverse a PR[1]
ENDFOR
ESCRIBIR ('Moviéndose a lo largo de la ruta
pth2',cr) FOR node_ind = 1 TO p2_len DO
tmp_xyz = pth2[ind_nodo]
SET_POS_REG(1, tmp_xyz, estado)
move_to_pr -- Llame al programa TP para moverse a PR[1]
ENDFOR
- - Copie pth3 en orden inverso a pth4 COPY_PATH (pth3,
PATH_LEN(pth3), 1, pth4, estado) IF (estado <> 0) ENTONCES
-----------------------------------------------------------------------------------
---- Sección 4-E: Copiar rutas definidas por el usuario.
---- Copie una ruta definida por el usuario a otra ruta definida por el usuario,
---- donde el usuario especifica qué rutas se copiarán.
-----------------------------------------------------------------------------------
CRT_CLS
SET_CURSOR(SALIDA,2,10, estado) SI - - Coloque el cursor bien en CRT
(estado <> 0) ENTONCES
ESCRIBIR ('SET_CURSOR integrado falló con estado = ',status,cr) ENDIF
- - escribe el mensaje en video inverso y luego vuelve al video normal WRITE (chr(139),'
COPY PATH FUNCTION',chr(143),CR,cr)
ESCRIBIR ('Actualmente tiene el siguiente',cr) ESCRIBIR ('Rutas
definidas por el usuario',cr,cr)
n_saltar = 0
tipo_var = 31 - - Obtener una lista de solo variables de tipo PATH
REPETIR
VAR_LIST ('CPY_PTH', '*',var_type, n_skip, 2, ary_nam, n_match, estado)
B-26
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
Copiar programa de variables de ruta - Copiar rutas definidas por el usuario (continuación)
TERMINARA SI
B-27
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
TERMINARA SI
Este programa guardará variables o enseñará programas colgantes al dispositivo predeterminado. Si el usuario
especificó sobrescribir el archivo, el archivo se eliminará antes de guardarlo.
NotaEste programa es llamado por el programa CPY_PTH.KL. Referirse aSección B.2, para obtener información sobre
CPY_PTH.KL.
-----------------------------------------------------------------------------------
- - - - GUARDAR_VRS.KL
-----------------------------------------------------------------------------------
- - - - Sección 0: Detalle sobre SAVE_VRS.KL
-----------------------------------------------------------------------------------
- - - - Elementos de KAREL Idioma cubierto: En la sección:
---- Comportamiento:
---- Cláusulas:
---- Condiciones:
---- Tipos de datos:
---- BOOLEANO Segundo 2
---- ENTERO Segundo 2
---- CUERDA Segundo 2
---- Directivas:
---- COMENTARIO Segundo 1
---- AMBIENTE Segundo 1
---- NOLOCKGROUP Segundo 1
---- Funciones y procedimientos integrados:
---- BORRAR ARCHIVO Segundo 4-B
---- AHORRAR Segundo 4-B
---- Declaraciones:
---- SI, ENTONCES, ENDIF Segundo 4-B
---- SELECCIONAR, CASO, FIN SELECCIONAR Segundo 4-A
---- ESCRIBE Segundo 4-B
---- Reserva de palabras:
B-28
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
--------------------------------------------------------------------------------
- - - - Sección 1: Programa y Declaración Ambiental
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - PROGRAMA
GUARDAR_VRS
%NOLOCKGROUP
%COMENTARIO = 'Guardar .vr, .tp, .sv'
%ENTORNO MEMORÁNDUM
%AMBIENTE FDEV
--------------------------------------------------------------------------------
- - - - Sección 2: Declaraciones de constantes, variables y tipos
--------------------------------------------------------------------------------
CONST
DO_VR = 1 - - Guardar archivo(s) variable(s)
DO_TP =2 - - Guardar programa(s) TP
DO_SYS = 3 - - Guardar variables del sistema
ÉXITO = 0 - - El valor esperado de todas las llamadas integradas.
VAR
sav_type : ENTERO - - Especifica el tipo de guardado a realizar
prog_name : STRING[12] - - El nombre del programa para guardar
estado : ENTERO - - El estado devuelto por las llamadas integradas
espec_archivo : STRING[30] - - La especificación del archivo creado para SAVE
desarrollador : CADENA[5] - - El dispositivo para guardar para especificar si
del_vr : BOOLEANO - - eliminar file_spec antes de realizar el GUARDAR.
--------------------------------------------------------------------------------
- - - - Sección 3: Declaración de Rutina
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
- - - - Sección 4: Programa Principal
---------------------------------------------------------------------------------
COMENZAR -- GUARDAR_VRS
--------------------------------------------------------------------------------
---- Sección 4-A: Cree file_spec, que contiene el dispositivo, archivo
---- nombre y tipo a guardar.
B–29
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
-------------------------------------------------------------------------------
SELECCIONE (tipo_sav) DE
CASO (DO_VR):
- - Si prog_name es '*', todas las variables de PC se guardarán con el
- - nombre de programa correcto, independientemente de la parte del nombre de archivo de
- - espec_archivo.
file_spec = dev+prog_name+'.VR' CASO - - Crear el nombre de archivo variable
(DO_TP):
- - Si prog_name es '*', todos los programas TP se guardarán con el
- - nombre de programa TP correcto, independientemente de la parte prog_name de
- - espec_archivo.
file_spec = dev+prog_name+'.TP' CASO - - Crear el nombre del programa TP
(DO_SYS):
prog_name = '*SISTEMA*'
especificación_archivo = dev+'ALLSYS.SV' - - Todas las variables del sistema serán
- - guardado en este archivo.
ENDSELECT
---------------------------------------------------------------------------------
---- Sección 4-B: Decida si eliminará el archivo antes de guardarlo
---- y luego realice el GUARDAR.
---------------------------------------------------------------------------------
- - Si el usuario especificó eliminar el archivo antes de guardarlo, entonces
- - elimine el archivo y verifique que la eliminación se haya realizado correctamente.
- - Es posible que la eliminación devuelva un estado de:
- - 10003 : "archivo no existe", para el FLPY: dispositivo
-- O
-- 85014: "archivo no encontrado", para todos los dispositivos RD: y FR:
- - Ignoraremos estos errores ya que no nos importa si el
- - el archivo no existía previamente. SI
(del_vr = VERDADERO) ENTONCES
DELETE_FILE (file_spec, FALSE, status): elimina el archivo. SI (estado <> ÉXITO)
Y (estado <> 10003) Y
(estado <> 85014) ENTONCES
ESCRIBIR ('Error', estado,' al intentar eliminar ',cr, file_spec,cr) ENDIF
TERMINARA SI
B–30
Traducido del inglés al español - www.onlinedoctranslator.com
FIN DE GUARDAR_VRS
Este programa se compone de varias rutinas que se utilizan a lo largo de los ejemplos. La siguiente es una lista
de las rutinas dentro de este archivo:
-------------------------------------------------------------------------------
- - - - ROUT_EX.KL
-------------------------------------------------------------------------------
- - - - Sección 0: Detalle sobre ROUT_EX.kl
-------------------------------------------------------------------------------
- - - - Elementos de KAREL Idioma cubierto: En la sección:
---- Comportamiento:
---- Cláusulas:
---- Condiciones:
---- Tipos de datos:
---- Funciones y procedimientos integrados:
---- CDH Segundo 3-A,B
---- FORCE_SPMENÚ Segundo 3-A,B
---- Declaraciones:
---- RUTINA Segundo 3-A,B
---- ESCRIBE Segundo 3-A,B
----
---- Reservar Palabras:
---- EMPEZAR Segundo 3-A,B; 4
---- RC Segundo 3-B
---- FINAL Segundo 3-A,B; 4
---- PROGRAMA Segundo 1
---- Nombres de archivo predefinidos:
---- CRERROR Segundo 3-A
---- CRTFFUN Segundo 3-A
---- CRTPROMPT Segundo 3-A
---- CRTESTATUS Segundo 3-A
---- PRODUCCIÓN Segundo 3-A
---- TPERROR Segundo 3-B
---- TPFUNC Segundo 3-B
---- ESTADOTP Segundo 3-B
---- TPPROMPT Segundo 3-B
B-31
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
----------------------------------------------------------------------------
- - - - Sección 1: Programa y Declaración Ambiental
----------------------------------------------------------------------------
PROGRAMA ROUT_EX
%NOLOCKGROUP - - - - No bloquear ningún grupo de movimiento
%COMENTARIO = 'MISC_RUTINAS'
----------------------------------------------------------------------------
- - - - Sección 2: Declaraciones de constantes y variables
----------------------------------------------------------------------------
----------------------------------------------------------------------------
- - - - Sección 3: Declaraciones de Rutina
----------------------------------------------------------------------------
----------------------------------------------------------------------------
---- Sección 3-A: Declaración CRT_CLS
---- Borrar las ventanas predefinidas:
---- CRTPROMPT, CRTSTATUS, CRTFUNC, CRTERROR, OUTPUT Forzar
---- visualización de la PANTALLA DE USUARIO CRT/KB.
---------------------------------------------------------------------------
RUTINA CRT_CLS
EMPEZAR - - - - CRT_CLS
- - Consulte el Capítulo 7.9.2 para obtener más información sobre los nombres de ventana PREDEFINIDOS
ESCRIBIR CRTERROR (CHR(128),CHR(137)) - - Borrar ventana, cursor de inicio
ESCRIBIR CRTESTATUS (CHR(128),CHR(137)) - - Borrar ventana, cursor de inicio
ESCRIBIR CRTPROMPT (CHR(128),CHR(137)) - - Borrar ventana, cursor de inicio
ESCRIBIR CRTFUNC (CHR(128),CHR(137)) - - Borrar ventana, cursor de inicio
SALIDA DE ESCRITURA (CHR(128),CHR(137)) - - Borrar ventana, cursor de inicio
FORCE_SPMENU(CRT_PANEL,SPI_TPUSER,1) -- Forzar el menú de USUARIO CRT
- - ser visible en último lugar. Esta voluntad
- - evita que la pantalla parpadee
- - ya que la pantalla estará limpia
- - cuando lo veas.
FIN CRT_CLS
-----------------------------------------------------------------------------
- - - - Artículo 3-B: Declaración TP_CLS
Borrar las ventanas predefinidas:
---- TPERROR, TPSTATUS, TPPROMPT, TPFUNC TPDISPLAY Forzar
---- Visualización de la PANTALLA del Menú USUARIO TP.
------------------------------------------------------------------------------
RUTINA TP_CLS
B–32
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
EMPEZAR
Este programa demuestra el uso de los componentes internos REGISTER. REG_EX.KL recupera la
posición actual y la almacena en PR[1]. Luego ejecuta el programa PROG_VAL.TP. PROG_VAL
modificará el valor dentro del Registro de Posición PR[1].
Una vez que se ha completado PROG_1.TP, el programa KAREL obtiene el valor de R[2] y verifica que
era el valor esperado.
El programa del colgante de aprendizaje PROG_VAL.TP debería tener un aspecto similar al siguiente.
B-33
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
• Cambia la ubicación 'y' de la posición en el Registro de posición 1, PR[1] (que fue establecido por el
programa KAREL).
1: LBL[1:INICIO] ;
2: SI R[1]=0, JMP LBL[2] ;
3:JP[1] 100% FINO; 4:JP[2]
100% FINO; 5:
R[1]=R[1] 1 ;
6: JMP LBL[1] ;
7: LBL[2:HECHO] ;
8: R[2]=1 ;
--------------------------------------------------------------------------------
- - - - REG_EX.Kl
--------------------------------------------------------------------------------
- - - - Elementos de KAREL Idioma cubierto: En la sección:
---- Comportamiento:
---- Cláusulas:
---- Condiciones:
---- Tipos de datos:
---- BOOLEANO Segundo 2
---- POS CONJUNTO Segundo 2
---- REAL Segundo 2
---- XYZWPR Segundo 2
---- Directivas:
---- ALFABETIZAR Segundo 1
---- COMENTARIO Segundo 1
---- NOLOCKGROUP Segundo 1
B–34
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
-------------------------------------------------------------------------------
- - - - Sección 1: Programa y Declaración Ambiental
-------------------------------------------------------------------------------
PROGRAMA reg_ex
%nolockgroup
%comentario = 'Operaciones regulares'
%alfabetizar
-------------------------------------------------------------------------------
- - - - Sección 2: Declaración de variables
-------------------------------------------------------------------------------
CONST
cc_éxito =0 - - Estado de éxito
cc_xyzwpr =2 - - El registro de posición tiene un XYZWPR
cc_jntpos =9 - - El registro de posición tiene un JOINTPOS
VAR
xyz :XYZWPR
jpos :JOINTPOS
r_val :REAL
B–35
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
prg_indx,
i_val,
pos_tipo,
núm_ejes,
estado :ENTERO
r_flg :BOOLEANO
-----------------------------------------------------------------------------
- - - - Sección 3: Declaración de Rutina
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
- - - - Sección 4: Programa principal
------------------------------------------------------------------------------
COMENZAR -- REG_EX
escribir(chr(137),chr(128)); - - Borrar la pantalla del menú USUARIO TP
FORCE_SPMENU(TP_PANEL,SPI_TPUSER,1) -- Obliga a que el menú TP USER sea
- - visible
----------------------------------------------------------------------------------
- - - - Sección 4-A: Almacenar la posición actual en PR[1] y ejecutar PROG_VAL.TP
----------------------------------------------------------------------------------
WRITE('Obteniendo la posición actual',cr)
xyz = CURPOS(0,0) - - Obtener la posición actual
WRITE('Almacenando la posición actual en PR[1]',cr)
SET_POS_REG(1,xyz, estado) - - Almacenar la posición en PR[1]
SI (estado = cc_éxito) ENTONCES - - verificar que SET_POS_REG sea exitoso
WRITE('Ejecutando "PROG_VAL.TP"',cr)
CALL_PROGLIN('PROG_VAL',2,prg_indx, FALSO)
- - Ejecutar 'PROG_VAL.TP' comenzando
- - en la línea 2. No se detenga en
- - entrada de PROG_VAL.
----------------------------------------------------------------------------------
- - - - Sección 4-B: Obtener nueva posición de PR[1]. Manipular y almacenar en PR[2]
----------------------------------------------------------------------------------
WRITE('Recuperando posición de PR[1]',cr)
- - Decidir qué tipo de posición se almacena en el Registro de posición 1, PR[1] POS_REG_TYPE(1,
1, pos_type, num_axes, status)
SI (estado = cc_éxito) ENTONCES
- - Recuperar la posición de PR[1], usando el incorporado correcto.
- - Esta posición fue modificada en PROG_VAL.TP SELECT
pos_tipo DE
CASO (cc_xyzwpr):
xyz= GET_POS_REG(1, estado)
CASO (cc_jntpos):
jpos = GET_JPOS_REG(1, estado)
B–36
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
xyz = jpos
MÁS:
write ('El registro de posición establecido en un tipo no válido', pos_type, CR) estado =
-1 - - establece el estado para que no continúe.
ENDSELECT
SI (estado = cc_éxito) ENTONCES - - Verifique que GET_POS_REG/GET_JPOS_REG sea
- - exitoso
xyz.x = xyz.x+10 - - Manipular la posición.
xyz.z = xyz.z-10
jpos = xyz - - Convertir a un JOINTPOS
WRITE('Estableciendo nueva posición en PR[2]',cr)
SET_JPOS_REG(2,jpos,status) - - Configure JOINTPOS en PR[2]
SI (estado = cc_éxito) ENTONCES - - Verifique que SET_JPOS_REG sea exitoso
WRITE('Estableciendo valor entero en R[1]',cr) SET_INT_REG(1, 10, estado) - -
Establece el valor 10 en R[1]
Uso de las funciones integradas de registro: ejecución del programa y verificación del registro
---------------------------------------------------------------------------
- - - - Sección 4-C: Ejecute PROG_1.TP y verifique el R[2]
---------------------------------------------------------------------------
SI (status=cc_success) ENTONCES --Verifique que SET_INT_REG sea exitoso
ESCRIBIR('Ejecutando "PROG_1.TP"',cr)
CALL_PROGLIN('PROG_1',1, prg_indx, FALSO)
- - Ejecutar PROG_1.TP comenzando en la primera línea.
- - No pausar al ingresar a PROG_1. ESCRIBIR('Obteniendo valor de R[2]',cr)
GET_REG(2,r_flg, i_val, r_val, status) --Obtener el valor de R[2] SI (estado =
cc_success) ENTONCES
- - Verificar el éxito de GET_REG
SI (r_flg) ENTONCES - - Valor REAL en registro
ESCRIBIR('Obtuve un valor REAL de R[2]',cr)
SI (r_val <> 1.0) ENTONCES - - Verificar conjunto de valores
ESCRIBIR ('PROG_1 no pudo establecer R[2]',cr)-- por PROG_1_TP
ESCRIBIR ('PROG_1 no pudo configurar R[2]',cr)
ENDIF
MÁS - - El registro contenía un INTEGER
ESCRIBIR('Obtuve un valor INTEGER de R[2]',cr) IF
(i_val <> 1) ENTONCES - - Verificar valor fijado por
ESCRIBIR ('PROG_1 no pudo configurar R[2]',cr) --PROG_1.TP
TERMINARA SI
TERMINARA SI
B–37
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
TERMINARA SI
MÁS
ESCRIBIR ('POS_REG_TYPE Error, Estado =', estado, cr) ENDIF
FIN reg_ex
Este programa verifica para determinar si las variables PATH se enseñan o no. Si se enseñan las rutas, el
robot se mueve a una posición conjunta y luego recorre una ruta 5 veces.
• El primer manejador de condiciones detecta si el usuario ha presionado una tecla de programación y, de ser así, aborta el
programa.
---------------------------------------------------------------------------
- - - - PTH_MOVE.Kl
---------------------------------------------------------------------------
---------------------------------------------------------------------------
- - - - Sección 0: Detalle sobre PTH_MOVE.kl
---------------------------------------------------------------------------
- - - - Elementos de KAREL Idioma cubierto: En la sección:
---- Comportamiento:
B–38
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
---- Declaraciones:
---- Abortar Segundo 4-C
---- CONDICIÓN...FINCONDICIÓN Segundo 4-A
---- PARA...FINFOR Segundo 4-D
---- RUTINA Sección 3-A, B, C
---- ESPERAR Segundo 3-B
---- ESCRIBE Segundo 3-B; 4-B,C,D
---- Reservado Palabras:
---- EMPEZAR Segundo 3-A,B, 4
---- CONSTITUCIÓN Segundo 2
---- FINAL Segundo 3-A,B: 4-D
---- VAR Segundo 2
---- PROGRAMA Segundo 1
---- Nombres de archivo predefinidos:
---- TPFUNC Segundo 3-B; 4-D
---- PANTALLA TP Segundo 4-B
------------------------------------------------------------------------------------
- - - - Sección 1: Programa y Declaración Ambiental
------------------------------------------------------------------------------------
B–39
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
------------------------------------------------------------------------------------
- - - - Sección 3: Declaración de Rutina
------------------------------------------------------------------------------------
---- Sección 3-A: Declaración TP_CLS
---- RUTINA TP_CLS DESDE ROUT_EX - - También se debe cargar ROUT_EX.
------------------------------------------------------------------------------------
------------------------------------------------------------------------------------
- - - - Sección 3-B: Declaración SI_NO
--- Mostrar opciones en la línea de función del TP.
---- Pide respuesta del usuario.
--- La tecla F1 es monitoreada por el controlador de condición global
---- [CH_F1] y el F2 se monitorea aquí.
---- Si se presiona F1, el programa se cancelará.
--- Pero, si se presiona F2, el programa continuará.
------------------------------------------------------------------------------------
RUTINA SI_NO
EMPEZAR
B–40
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
-----------------------------------------------------------------------------------
- - - - Sección 4: Programa principal
-----------------------------------------------------------------------------------
COMENZAR - - PTH_MOVE
-----------------------------------------------------------------------------------
- - - - Sección 4-A: Declaración del manejador de condiciones globales
-----------------------------------------------------------------------------------
CONDICIÓN[CH_ABORT]:
CUANDO ABORTAR HACER - - Cuando el programa está abortando, establezca el indicador prg_abrt.
- - Esto se activará si este programa se cancela solo
- - o si un mecanismo externo aborta este programa.
prg_abrt = VERDADERO - - Entonces puede tener otra tarea que detecte
- - prg_abrt se establece y realiza operaciones de apagado
- - (es decir: configurar DOUT/GOUT, enviar señales a un PLC)
CONDICIÓN FINAL
CONDICIÓN[CH_F1]:
CUANDO TPIN[129] HACER - - Monitor TP Tecla 'F1'. Si se presiona la tecla 'F1',
ABORTAR - - cancelar el programa.
CONDICIÓN FINAL
prg_abrt = falso - - Inicializar variable que se establece solo si
- - el programa se cancela y CH_ABORT es
- - activado.
HABILITAR CONDICIÓN[CH_ABORT] - - Comenzar a escanear la condición de cancelación según lo definido.
HABILITAR CONDICIÓN[CH_F1] - - Comience a escanear la condición de la tecla F1 como se define.
B-41
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
-----------------------------------------------------------------------------------
- - - - Sección 4-B: mostrar el mensaje de banner y esperar la respuesta de los usuarios
-----------------------------------------------------------------------------------
TP_CLS - - Llamada de Rutina; Borra el USUARIO TP
- - menú, y fuerza el menú USUARIO TP
- - para ser visible.
SET_CURSOR(TPDISPLAY,2,13, estado) SI - - Establecer la posición del cursor en el menú USUARIO TP
(estado <> 0) ENTONCES - - Verifique que SET_CURSOR fue exitoso
ESCRIBIR (Error integrado 'SET_CURSOR con estado = ',status,cr) SÍ_NO
- - Preguntar si salir, por error.
TERMINARA SI
----------------------------------------------------------------------------------
- - - - Sección 4-C: Verifique que la variable PATH, pth1, haya sido enseñada
----------------------------------------------------------------------------------
- - Comprobar el número de nodos en la ruta SI
PATH_LEN(pth1) = 0 ENTONCES - - La ruta está vacía (no tiene nodos)
WRITE ('Necesita enseñar la ruta.',cr) WRITE ('antes de - - Mostrar instrucciones al usuario
ejecutar este programa.',cr)
ESCRIBIR ('Enseñar la variable PATH pth1', CR, 'y reiniciar el programa',cr) ABORTAR
- - Simplemente ABORTE la tarea
- - no sigas desde ahí
TERMINARA SI - - no hay nodos a los que moverse
----------------------------------------------------------------------------------
- - - - Sección 4-D: Crear una posición conjunta y moverse a lo largo de caminos
----------------------------------------------------------------------------------
FOR indx = 1 a 6 DO - - Establecer todos los ángulos de las articulaciones a cero
real_ario[indx] = 0.0
ENDFOR
real_ario[5] = 90.0 - - Asegúrese de que la posición
- - no está en un punto de singularidad.
CNV_REL_JPOS(real_ary, strt_jnt, estado) - - Convertir valores real_ary en
- - una posición conjunta, strt_jnt
SI (estado <> 0) ENTONCES - - Conversión de posición conjunta
- - no tuvo éxito
ESCRIBIR ('Error integrado de CNV_REL_JPOS con estado = ',status,cr) SÍ_NO
- - Preguntar al usuario si desea continuar.
B-42
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
B-43
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
Este programa muestra la lista de archivos en el dispositivo FLPY: y enumera los programas cargados en el controlador.
También muestra capacidades básicas de manipulación de CADENA, usando punto y coma (;) como separador de
sentencias y anidando sentencias IF.
------------------------------------------------------------------------------------
- - - - LIST_EX.Kl
------------------------------------------------------------------------------------
- - - - Sección 0: Detalle sobre LIST_EX.kl
------------------------------------------------------------------------------------
- - - - Elementos de KAREL Idioma cubierto: En la sección:
---- Comportamiento:
---- Cláusulas:
---- DE Segundo 3-B
----
---- Condiciones:
---- Tipos de datos:
---- ARRAY DE CADENA Segundo 2
---- BOOLEANO Segundo 2, 3
---- ENTERO Segundo 2, 3
---- CUERDA Segundo 2
---- Directivas:
---- %COMENTARIO Segundo 1
---- %NOLOCKGROUP Segundo 1
---- Funciones y procedimientos integrados:
---- abdominales Segundo 4-A
---- ARRAY_LEN Segundo 4-C&D
---- CNV_INT_STR Segundo 4-A
---- ARCHIVO_LISTA Segundo 4-C
---- CARGA Segundo 4-B
---- LOAD_STATUS Segundo 4-B
---- PROG_LISTA Segundo 4-D
---- REDONDO Segundo 4-A
---- SUB_STR Segundo 4-A
B-44
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
---- Declaraciones:
---- PARA .... FIN PARA Segundo 3-B
---- SI... ENTONCES... ENDIF Segundo 4-A,B,C,D
---- RUTINA Segundo 3-A,B,C
---- REPETIR HASTA Segundo 4-C,D
---- DEVOLVER Segundo 3-A
---- ESCRIBE Segundo 3-B; 4-A,B
---- Reserva de palabras:
---- EMPEZAR Segundo 3-A,B; 4
---- CONSTITUCIÓN Segundo 2
---- RC Segundo 3-B; 4-A,B
---- FINAL Segundo 3-A, B, 4-B
---- PROGRAMA Segundo 1
---- VAR Segundo 2
----
---- Operadores:
---- MODIFICACIÓN Segundo 3-A
---- / Segundo 3-A
---- * Segundo 3-A
---- Dispositivos Usó:
---- FLIPY: Segundo 4-C
---- Básico Conceptos:
---- Punto y coma (;) como separador de instrucciones
---- Anidado IF..THEN..ELSE..IF..THEN..ELSE..ENDIF..ENDIF Concatenación estructura
---- de CADENA usando '+'
----
------------------------------------------------------------------------------------
- - - - Sección 1: Programa y Declaración Ambiental
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LISTA DE
PROGRAMAS_EX
%NOLOCKGROUP - - - - No bloquear ningún grupo de movimiento
%COMENTARIO = 'ARCHIVO_LISTA'
------------------------------------------------------------------------------------
- - - - Sección 2: Declaraciones de constantes y variables
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CONST
INCREMENTO = 13849
MÓDULO = 65536
MULTIPLICADOR = 25173
VAR
pr_casos :STRING[6] -- Número psuedo aleatorio convertido a cadena :STRING[50] --
prg_nm Nombre de programa concatenado
cargado :BOOLEAN - - Usado para ver si el programa está cargado
B–45
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
-----------------------------------------------------------------------------------
- - - - Sección 3: Declaración de Rutina
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
- - - - Sección 3-A: Declaración ALEATORIA
--- Crea un número pseudoaleatorio y devuelve el número.
-----------------------------------------------------------------------------------
RUTINA aleatoria (semilla: ENTERO) : REAL
EMPEZAR
B–46
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
------------------------------------------------------------------------------------
- - - - Sección 4: Programa principal
-------------------------------------------------------------------------------------
COMENZAR -- LIST_EX
tp_cls - - Usar la rutina del archivo rout_ex.kl
------------------------------------------------------------------------------------
- - - - Sección 4-A: Generar un número pseudoaleatorio, convertir INTEGER a STRING
------------------------------------------------------------------------------------
max_number = 255 ; - - Así que el número aleatorio es 0..255
semilla = 259;
WRITE ('Manipulación Cadena',cr)
casos = ROUND(ABS((random(seed)*max_number)))-- Llame al azar y luego tome el
- - valor absoluto del número
- - volvió y redondeó el
- - número.
CNV_INT_STR(casos, 1, 0, pr_casos) - - Convertir casos a su
- - representación ascii
pr_casos = SUB_STR(pr_casos, 2,3) - - obtener como máximo 3 caracteres,
- - a partir del segundo
- - carácter, desde el principio
- - el carácter es un espacio en blanco.
------------------------------------------------------------------------------------
- - - - Sección 4-B: Cree un nombre de programa a partir del número e intente cargarlo
------------------------------------------------------------------------------------
- - - Cree un nombre de programa aleatorio para mostrar la manipulación de
- - - CADENAS y ENTEROS.
prg_nm = 'MYPROG' + pr_cases + '.PC' - - Concatenar las STRING juntas
- - que crean un nombre de programa
- - - Verifique que el programa aún no esté cargado WRITE
('Comprobando el estado de carga de',prg_nm,cr)
LOAD_STATUS(prg_nm, cargado, inicio)
SI (NO cargado) ENTONCES - - El programa no está cargado
ESCRIBIR ('Cargando', prg_nm, cr)
CARGAR (prg_nm, 0, estado) - - Cargar en el programa
SI (estado = 0) ENTONCES - - Verificar que la carga sea exitosa
WRITE ('Loading','MYPROG' + pr_cases + '.VR',cr) LOAD('MYPROG' + pr_cases + '.VR', 0,
status) -- Carga el archivo .vr IF (status <> 0 ) DESPUÉS
- - Error al cargar variables
B–47
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
TERMINARA SI
TERMINARA SI
TERMINARA SI
TERMINARA SI
TERMINARA SI
------------------------------------------------------------------------------------
- - - - Sección 4-C: Verifique el listado de archivos del variador FLPY: y visualícelos
------------------------------------------------------------------------------------
- - - Muestra una lista de directorios de archivos en Flpy: file_spec =
'FLPY:*.*' - - Todos los archivos en FLPY: unidad
n_saltar = 0 - - La primera vez no omita ningún archivo
formato = 3 - - Lista de devolución en formato filename.filetype
ESCRIBIR ('Hacer lista de archivos',cr)
REPETIR - - HASTA que se hayan enumerado todos los archivos
FILE_LIST(file_spec, n_skip, format, ary_nam, n_files, status) IF (status <>0 ) THEN
- - Se produjo un error
ESCRIBIR ('FILE_LIST incorporado falló con Status = ',status,cr) ELSE
B–48
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
Este programa genera un camino hexagonal y se mueve a lo largo de cada lado del hexágono.
------------------------------------------------------------------------------------
- - - - GEN_HEX.KL
------------------------------------------------------------------------------------
- - - - Sección 0: Detalle sobre GEN_HEX.KL
------------------------------------------------------------------------------------
- - - - Elementos de KAREL Idioma cubierto: En la sección:
---- Acción:
---- Cláusulas:
---- Condiciones:
---- Tipos de datos:
---- FORMACIÓN DE REAL Segundo 3-C
---- FORMACIÓN DE XYZWPR Segundo 2
---- ENTERO Segundo 2; 3-B,C
---- CONJUNTOPOS6 Segundo 2
---- REAL Segundo 3-B
---- Directivas:
%COMENTARIO Segundo 1
---- Funciones y procedimientos integrados:
B–49
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
------------------------------------------------------------------------------------
- - - - Sección 1: Programa y Declaración Ambiental
------------------------------------------------------------------------------------
PROGRAMAgen_hex
%COMENTARIO = 'HEXÁGONO'
------------------------------------------------------------------------------------
- - - - Sección 2: Declaración de constantes y variables
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CONST
B–50
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
------------------------------------------------------------------------------------
- - - - Sección 3: Declaración de Rutina
------------------------------------------------------------------------------------
----------------------------------------------------------------------------------
---- Sección 3-A: Las rutinas move_to_pr y movl_to_pr son rutinas TP para
---- realizar movimientos
----------------------------------------------------------------------------------
RUTINA move_to_pr DESDE move_to_pr - - Move_to_pr también debe cargarse.
- - 1:J PR[1] 100% FINO; RUTINA movl_to_pr
DESDE movl_to_pr - - También se debe cargar movl_to_pr.
- - 1:L PR[1] 1000 mm/s FINO ;
------------------------------------------------------------------------------------
---- Sección 3-B: R_HEX_CENTER Declaración
---- Calcula los puntos del hexágono en función de la distancia
---- entre los puntos 1 y 4 del hexágono.
------------------------------------------------------------------------------------
RUTINA r_calc_hex
VAR
p1_a_pcntr : REAL -- Distancia desde el centro del hexágono al punto 1 : INTEGER - - el índice
vértice utilizado especifica cada vértice del hexágono
EMPEZAR
-----------------------------------------------------------------------------------
- - - - Sección 3-C: R_HEX_CENTER Declaración
B–51
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
FIN r_hex_center
-----------------------------------------------------------------------------------
- - - - Sección 4: Programa principal
-----------------------------------------------------------------------------------
COMENZAR --- GEN_HEX
-----------------------------------------------------------------------------------
- - - - Sección 4-A: Conectar temporizador, configurar uframe, llamar a rutinas
----------------------------------------------------------------------------------
reloj = 0 - - Inicializa el valor del reloj a cero
CONECTAR EL TEMPORIZADOR AL reloj - - Conectar el temporizador
ESCRIBIR ('Moverse al centro del HEXÁGONO', CR) -- actualizar el usuario del proceso r_hex_center
- - coloque la placa frontal del robot.
ESCRIBIR ('Calcular los lados de HEXAGON', CR) -- actualizar usuario r_calc_hex
- - Calcular los puntos del hexágono
-----------------------------------------------------------------------------------
- - - - Sección 4-B: Mover en los lados del hexágono
-----------------------------------------------------------------------------------
WRITE ('Moviéndose a lo largo de los lados del hexágono', CR) -- Actualizar usuario t_start = reloj
- - Registre el tiempo antes de que comience el movimiento
B–52
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
ENDFOR
SET_POS_REG(1, p_xyzwpr[1], estado)
movl_to_pr - - Llamar programa TP para pasar a PR[1]
- - Retroceder al primer vértice del hexágono
tmp_xyz = p_cntr
SET_POS_REG(1, tmp_xyz, estado)
movl_to_pr - - Mover TCP en línea recta
- - línea a la posición central
t_end = reloj - - Hora de finalización del registro
ESCRIBIR('Tiempo total de movimiento = ',t_end-t_start,CR) --Muestra el tiempo total para
- - movimiento.
- - NOTA que el total fue
- - calculado en ESCRIBIR
- - declaración.
FIN GEN_HEX
Este programa demuestra cómo utilizar las funciones integradas de archivo y dispositivo. Este programa FORMATEA y
MONTA el disco RAM. Luego copia los archivos del dispositivo FLPY: al RD:. Si el disco RAM se llena, el tamaño del disco
RAM aumenta y se reformatea. Este programa continúa hasta que todos los archivos se copian correctamente o fallan
las operaciones integradas.
------------------------------------------------------------------------------------
- - - - ARCHIVO_EX.Kl
------------------------------------------------------------------------------------
- - - - Sección 0: Detalle sobre FILE_EX.kl
------------------------------------------------------------------------------------
- - - - Elementos de KAREL Idioma cubierto: En la sección:
---- Acción:
---- Cláusulas:
---- DE Segundo 3
---- Condiciones:
---- Tipos de datos:
---- BOOLEANO Segundo 2
B-53
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
------------------------------------------------------------------------------------
- - - - Sección 1: Programa y Declaración Ambiental
------------------------------------------------------------------------------------
PROGRAM FILE_EX
%nolockgroup
%comentario = 'COPIAR ARCHIVOS'
------------------------------------------------------------------------------------
B–54
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
tiempo_int : ENTERO
time_str : CADENA[30]
estado : ENTERO
cpy_stat : BOOLEANO
a_dev : CADENA[5]
------------------------------------------------------------------------------------
- - - - Sección 3: Declaración de Rutina
-------------------------------------------------------------------------------------
RUTINA tp_cls DESDE ROUT_EX
------------------------------------------------------------------------------------
- - - - Sección 4: Programa principal
----------------------------------------------------------------------------------
EMPEZAR -- ARCHIVO_EX
tp_cls - - de ruta_ex.kl
------------------------------------------------------------------------------------
- - - - Sección 4-A: Obtener hora y FORMATO ramdisk con fecha como nombre de volumen
------------------------------------------------------------------------------------
GET_TIME(time_int) - - Obtener la hora del sistema
CNV_TIME_STR(time_int, time_str) - - Convertir el tiempo ENTERO
- - a formato legible
ESCRIBIR ('Hoy es', SUB_STR(hora_cadena, 2,8),CR) ESCRIBIR - - Mostrar la parte de la fecha
('La hora es ', SUB_STR(cadena_hora, 11,5),CR) - - Mostrar la parte de tiempo
-----------------------------------------------------------------------------------
---- Sección 4-B: Monte RAMDISK y comience a copiar desde FLPY a
MF3:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - to_dev
= 'MF3:'
REPETIR - - Hasta que se hayan copiado todos los archivos
B–55
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
cpy_stat = FINALIZADO
ESCRIBIR('COPIANDO......',cr)
- - Copie los archivos de FLPY: a to_dev y sobrescriba el archivo si
- - ya existe.
COPY_FILE('FLPY:*.kl', to_dev, VERDADERO, FALSO, estado)
SELECCIONAR (estado) OF
CASO (RD_COMPLETO): - - El disco RAM está lleno
- - Desmontar y redimensionar el DISCO RAM
ESCRIBIR ('DESMONTANDO RD: ....',cr)
DISMOUNT_DEV('RD:', estado)
- - Verifique que DESMONTAR haya tenido éxito o que
- - el dispositivo no estaba ya montado
SI (estado = ÉXITO) O (estado = NO_MONTAJE) ENTONCES
- - Aumentar el tamaño de RD:
WRITE('Aumentando RD: tamaño...',cr) $FILE_MAXSEC
= ROUND($FILE_MAXSEC * 1.2)
- - Aumentar el tamaño del disco RAM
- - Formatear el DISCO RAM
ESCRIBIR('FORMATEANDO RD:......',cr)
FORMAT_DEV('RD:','' ,FALSE, status) -- Formatea el disco RAM SI (estado <>
ÉXITO) ENTONCES
WRITE ('FORMATO de RD: fallido, estado:', estado, CR) WRITE ('Copia
incompleta', cr)
MÁS
cpy_stat = TRY_AGAIN
TERMINARA SI
ESCRIBIR('MONTANDO RD:......',cr)
MOUNT_DEV ('RD:', estado)
SI (estado <> ÉXITO) ENTONCES
WRITE ('MONTAJE de RD: fallido, estado:', estado, CR) WRITE ('Copia
incompleta', cr)
MÁS
cpy_stat = TRY_AGAIN
TERMINARA SI
MÁS
ESCRIBIR ('DESMONTAJE de RD: fallido, estado:', estado,cr) ESCRIBIR
('Copia incompleta',cr)
TERMINARA SI
B–56
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
cpy_stat = TRY_AGAIN
TERMINARA SI
CASO (ÉXITO):
ESCRIBIR ('¡Copia completada con éxito!', CR)
MÁS:
WRITE ('Copia fallida, estado:', estado, CR) ENDSELECT
Este programa demuestra cómo utilizar las funciones integradas de visualización dinámica. Este programa
inicia la visualización dinámica de varios tipos de datos. Luego ejecuta otra tarea, CHG_DATA, que cambia los
valores de estas variables.
Antes de salir de este programa, se cancelan las visualizaciones dinámicas y se aborta la otra tarea. Si se
cancela DYN_DISP, establecerá una variable que CHG_DATA detecta. Esto asegura que CHG_DATA no
pueda continuar ejecutándose una vez que se cancele DYN_DISP.
-----------------------------------------------------------------------------------
- - - - DYN_DISP.Kl
-----------------------------------------------------------------------------------
- - - - Sección 0: Detalle sobre DYN_DISP.KL
-----------------------------------------------------------------------------------
- - - - Elementos de KAREL Idioma cubierto: En la sección:
---- Comportamiento:
---- Cláusulas:
---- DE Segundo 3-C
---- EN CMOS Segundo 2
---- CUANDO Segundo 4
---- Condiciones:
B–57
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
B–58
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
-----------------------------------------------------------------------------------
- - - - Sección 1: Programa y Declaración Ambiental
-----------------------------------------------------------------------------------
PROGRAMA DYN_DISP
%nolockgroup
%comentario = 'Visualización
dinámica' %alfabetizar
%INCLUIR KLIOTIPOS
-----------------------------------------------------------------------------------
- - - - Sección 2: Declaración de variables
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CONST
B–59
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
inicializado :BOOLEANO
dynd_abrt :BOOLEANO - - Establecido en verdadero cuando el programa aborta.
-----------------------------------------------------------------------------------
- - - - Sección 3: Declaración de Rutina
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
---- Sección 3-A: Declaración SET_INT
---- Configure todos los parámetros de entrada para la llamada INI_DYN_DISI.
-----------------------------------------------------------------------------------
ROUTINE Set_Int
Empezar
- - Las ventanas predefinidas válidas se describen en
- - Capítulo 7.9.1, "MENÚ DE USUARIO en el Teach Pendant
-- Error Línea - - > 'ERRAR' 1 línea
-- Estado Línea - - > 'T_ST' 3 líneas
-- Monitor Ventana - - > 'T_FU' 10 líneas
-- Inmediato Línea - - > 'T_PR' 1 línea
-- Función Llave - - > 'T_FK' 1 línea
Viento_interno = 'T_FU' - - Usar la ventana de visualización predefinida
Ancho_del_campo =0 - - Utilizar el ancho mínimo necesario
Attr_Mask =1O4 - - NEGRITA y SUBRAYADO
Char_Size =0 - - Normal
Fila =1 - - Especifique la ubicación dentro de 'T_FU'
Columna = 16 - - para mostrar dinámicamente
Intervalo = 250 - - 250ms entre actualizaciones
Tamaño del búfer = 10 - - Valor mínimo requerido.
Formato = '%-8d' - - Ancho de campo mínimo de 8 caracteres
- - - Con esta especificación, el INTEGER se mostrará de la siguiente manera:
--- --------
--- |xxxxxxxx|
--- --------
--- Donde el valor entero se justificará a la izquierda.
--- Las x serán el valor entero a menos que el valor entero sea menor de 8 caracteres,
--- entonces el lado derecho estará en blanco hasta un total de 8 caracteres. Si el valor entero
--- es mayor que los 8 caracteres, el ancho aumenta dinámicamente para mostrar el valor
--- entero completo. El valor INTEGER también aparecerá en negrita y subrayado. Set_Int
---
Final
-----------------------------------------------------------------------------------
B–60
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
-----------------------------------------------------------------------------------
---- Sección 3-C: Declaración SET_BOOL
---- Establecer todos los parámetros de entrada para la llamada INI_DYN_DISB
-----------------------------------------------------------------------------------
RUTINA Set_Bool
Empezar
- - Las ventanas predefinidas válidas se describen en
- - Capítulo 7.9.1, "MENÚ DE USUARIO en el Teach Pendant
-- Error Línea - - > 'ERRAR' 1 línea
-- Estado Línea - - > 'T_ST' 3 líneas
-- Monitor Ventana - - > 'T_FU' 10 líneas
-- Inmediato Línea - - > 'T_PR' 1 línea
-- Función Llave - - > 'T_FK' 1 línea
Viento_interno = 'T_FU' - - Usar la ventana de visualización predefinida
B–61
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
-----------------------------------------------------------------------------------
---- Sección 3-D: Declaración SET_ENUM
---- Configure todos los parámetros de entrada para la llamada INI_DYN_DISE.
-----------------------------------------------------------------------------------
ROUTINE Set_Enum
Empezar
- - Las ventanas predefinidas válidas se describen en
- - Capítulo 7.9.1, "MENÚ DE USUARIO en el Teach Pendant
-- Error Línea - - > 'ERRAR' 1 línea
-- Estado Línea - - > 'T_ST' 3 líneas
-- Monitor Ventana - - > 'T_FU' 10 líneas
-- Inmediato Línea - - > 'T_PR' 1 línea
-- Función Llave - - > 'T_FK' 1 línea
Viento_interno = 'T_FU' - - UTILICE LA VENTANA DE VISUALIZACIÓN PREDEFINIDA
Attr_Mask =8 - - INVERTIDO
Ancho_del_campo = 10 - - Visualización de caracteres
Char_Size =0 - - Normal
Fila =4 - - Especifique la ubicación dentro de 'T_FU'
Columna = 16 - - para mostrar dinámicamente
Intervalo = 250 - - 250ms entre actualizaciones
Tamaño del búfer = 10 - - Valor mínimo requerido
enumeración_nombres[1] = 'Enumeración-0' - - valor mostrado si enum_var = 0
enumeración_nombres[2] = 'Enumeración-1' - - valor mostrado si enum_var = 1
enumeración_nombres[3] = 'Enumeración-2' - - valor mostrado si enum_var = 2
enumeración_nombres[4] = 'Enumeración-3' - - valor mostrado si enum_var = 3
- - - Con esta especificación, enum_var se mostrará de la siguiente manera:
B–62
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
--- --------
--- |xxxxxxxx|
--- --------
--- Donde se mostrará una de las cadenas enum_names, según el valor entero
--- enum1. Si enum1 está fuera del rango 0-3, se mostrará una cadena de 10 '?'.
---
--- La cadena se mostrará en video invertido. Set_Enum
Final
-----------------------------------------------------------------------------------
---- Sección 3-E: Declaración SET_PORT
---- Configure todos los parámetros de entrada para la llamada INI_DYN_DISP.
-----------------------------------------------------------------------------------
ROUTINE Set_Port
Empezar
- - Las ventanas predefinidas válidas se describen en
- - Capítulo 7.9.1, "MENÚ DE USUARIO en el Teach Pendant
-- Error Línea - - > 'ERRAR' 1 línea
-- Estado Línea - - > 'T_ST' 3 líneas
-- Monitor Ventana - - > 'T_FU' 10 líneas
-- Inmediato Línea - - > 'T_PR' 1 línea
-- Función Llave - - > 'T_FK' 1 línea
Viento_interno = 'T_FU' - - Usar la ventana de visualización predefinida
Ancho_del_campo = 10 - - Visualización de caracteres
Attr_Mask = 1 - - AUDAZ
Char_Size = 0 - - Normal
Fila =5 - - Especifique la ubicación dentro de 'T_FU'
Columna = 16 - - para mostrar dinámicamente
Intervalo = 250 - - 250ms entre actualizaciones
Tamaño del búfer = 10 - - Valor mínimo requerido.
pval_nombres[1] = 'LIBERADO' - - texto mostrado si no se presiona la tecla
pval_nombres[2] = 'PRESIONADO' - - texto mostrado si se presiona la tecla
tipo_puerto = io_tpin - - tipo de puerto = clave TP
port_no = 175 - - clave de usuario 3
- - - Con esta especificación, PRESIONADO o LIBERADO se mostrará de la siguiente manera:
--- --------
--- |xxxxxxxx|
--- --------
--- Donde la cadena quedará justificada. Las x serán 'LIBERADO' o
--- 'PULSADO'. La cadena también será video normal.
---
--- (La negrita no se admite en la consola portátil). Set_Port
Final
B–63
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
-----------------------------------------------------------------------------------
---- Sección 3-F: Declaración SET_STR
---- Configure todos los parámetros de entrada para la llamada INI_DYN_DISS.
-----------------------------------------------------------------------------------
RUTINA Set_Str
Empezar
- - Las ventanas predefinidas válidas se describen en
- - Capítulo 7.9.1, "MENÚ DE USUARIO en el Teach Pendant
-- Error Línea - - > 'ERRAR' 1 línea
-- Estado Línea - - > 'T_ST' 3 líneas
-- Monitor Ventana - - > 'T_FU' 10 líneas
-- Inmediato Línea - - > 'T_PR' 1 línea
-- Función Llave - - > 'T_FK' 1 línea
Viento_interno = 'T_FU' - - Usar la ventana de visualización predefinida
Ancho_del_campo = 10 - - Utilizar el ancho mínimo necesario
Attr_Mask =1O4 - - NEGRITA y SUBRAYADO
Char_Size =0 - - Normal
Fila =6 - - Especifique la ubicación dentro de 'T_FU'
Columna = 16 - - para mostrar dinámicamente
Intervalo = 250 - - 250ms entre actualizaciones
Tamaño del búfer = 10 - - Valor mínimo requerido.
Formato = '%10s' - - Ancho de campo mínimo de 10 caracteres
- - - Con esta especificación la CADENA se visualizará de la siguiente manera:
--- --------
--- |xxxxxxxx|
--- --------
--- Donde el valor de la cadena se justificará a la izquierda. Las x
--- serán el valor de la cadena.
--- La CADENA también estará subrayada. Set_Str
Final
-----------------------------------------------------------------------------------
---- Sección 3-G: Declaración TP_CLS
---- Borre la pantalla de menús USUARIO TP y fuerce su visibilidad.
-----------------------------------------------------------------------------------
RUTINA tp_cls DESDE rout_ex
-----------------------------------------------------------------------------------
- - - - Sección 4: Programa principal
---------------------------------------------------------------------------------
EMPEZAR --- DYN_DISP
dynd_abrt = FALSO
CONDICIÓN[CH_ABORT]:
B–64
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
CUANDO ABORTAR HACER - - Cuando el programa está abortando, establezca el indicador dynd_abrt.
- - Esto se activará si este programa se cancela solo
- - o si un mecanismo externo aborta este programa.
dynd_abrt = TRUE -- CHG_DATA lo detectará y completará la ejecución. CONDICIÓN FINAL
B–65
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
-----------------------------------------------------------------------------------
- - - - Sección 4-B: Comprobar el programa subordinado y ejecutarlo.
-----------------------------------------------------------------------------------
- - Comprobar el estado del otro programa que cambiará el valor
- - de las variables. LOAD_STATUS('chg_data', cargado,
inicializado) SI (cargado = FALSO) ENTONCES
MÁS
ESCRIBIR ('Falló la CARGA, estado = ',estado,CR) ENDIF
MÁS
B–66
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
EJECUTAR_TAREA('CHG_DATA',1,falso,falso,1,estado) SI
(Estado <> cc_éxito) ENTONCES - - Comprobar el estado
WRITE ('Cambiando el valor de las variables',CR) WRITE ('por otro
programa fallido',CR)
ESCRIBIR ('PERO puede intentar cambiar los valores',CR)
ESCRIBIR ('de KCL',CR)
TERMINARA SI
TERMINARA SI
Uso de pantallas dinámicas integradas: la respuesta del usuario cancela las pantallas dinámicas
-----------------------------------------------------------------------------------
- - - - Sección 4-C: Espere la respuesta del usuario y cancele las visualizaciones dinámicas
-----------------------------------------------------------------------------------
ESCRIBIR TPPROMPT(CHR(cc_clear_win)) - - Borrar la línea de solicitud
WRITE TPPROMPT('Ingrese un número para cancelar la visualización DINÁMICA: ')
READ (CR) - - Leer solo un caracter
- - Véase el Capítulo 7.7.1,
- - "Formato de elementos de datos INTEGER"
ABORT_TASK('CHG_DATA',TRUE, IF VERDADERO, estado) - - Cancelar CHG_DATA
(estado <> cc_success) ENTONCES - - Comprobar el estado
ESCRIBIR(' ABORT_TASK falló, Estado=',estado,CR) ENDIF
B–67
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
TERMINARA SI
FIN DYN_DISP
El programa CHG_DATA.KL es llamado por DYN_DISP, donde las variables reales se muestran
dinámicamente. Este programa hace algo de procesamiento y cambia el valor de esas variables.
----------------------------------------------------------------------------------
- - - - CHG_DATA.KL
----------------------------------------------------------------------------------
----------------------------------------------------------------------------------
- - - - Sección 0: Detalle sobre CHG_DATA.KL
----------------------------------------------------------------------------------
- - - - Elementos de KAREL Idioma cubierto: En la sección:
---- Comportamiento:
---- Cláusulas:
---- DE Segundo 2
---- Condiciones:
---- Tipos de datos:
---- ENTERO Segundo 2
---- REAL Segundo 2
----
---- Directivas:
---- Funciones y procedimientos incorporados:
---- Declaraciones:
---- DEMORA Segundo 4
---- PARA....FIN PARA Segundo 4
---- REPETIR HASTA Segundo 4
----
---- Reserva de palabras:
---- EMPEZAR Segundo 4
---- FINAL Segundo 4
---- PROGRAMA Segundo 1
---- VAR Segundo 2
----------------------------------------------------------------------------------
- - - - Sección 1: Programa y Declaración Ambiental
----------------------------------------------------------------------------------
PROGRAMA CHG_DATA
%nolockgroup
%comentario = 'Pantalla dinámica2'
B–68
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
-----------------------------------------------------------------------------------
- - - - Sección 2: Declaración de variables
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - VAR
-----------------------------------------------------------------------------------
- - - - Sección 4: Programa principal
-----------------------------------------------------------------------------------
COMENZAR -- CHG_DATA
- - Esto demuestra que las variables se cambian desde esta tarea, CHG_DATA.
- - La visualización dinámica iniciada en la tarea DYN_DISP, continuará
- - para visualizar correctamente los valores actualizados de estas variables.
- - Realice el procesamiento de aplicaciones.
- - Simulado aquí en un bucle FOR. REPETIR
B–69
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
Este programa controla la visualización de una lista que se lee desde el archivo de diccionario DCLISTEG.UTX.
Para obtener más información sobre DCLISTEG.UTX, consulteSección B.12.1. DCLST_EX.KL controla la ubicación
del cursor junto con la acción realizada para cada comando.
----------------------------------------------------------------------------------
- - - - DCLST_EX.KL
----------------------------------------------------------------------------------
- - - - Sección 0: Detalle sobre DCLST_EX.KL
----------------------------------------------------------------------------------
- - - - Elementos de KAREL Idioma cubierto: En la sección:
---- Comportamiento:
---- Cláusulas:
---- DE Segundo 3-E
---- Condiciones:
---- Tipos de datos:
---- ARRAY DE CADENA Segundo 2
---- BOOLEANO Segundo 2
---- DISP_DAT_T Segundo 2
---- EXPEDIENTE Segundo 2
---- ENTERO Segundo 2
---- CUERDA Segundo 2
---- Directivas:
---- ALFABETIZAR Segundo 1
---- COMENTARIO Segundo 1
---- INCLUIR Segundo 1
---- NOLOCKGROUP Segundo 1
---- Funciones y procedimientos integrados:
---- ADD_DICT Segundo 3-B
---- ACT_PANTALLA Segundo 4-yo
---- ATT_WINDOW_S Segundo 4-C
---- CHECK_DICT Segundo 3-B
B–70
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
B–71
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
-----------------------------------------------------------------------------------
- - - - Sección 1: Programa y Declaración Ambiental
-----------------------------------------------------------------------------------
PROGRAMA DCLST_EX
%COMENTARIO='DISCTRL_LIST'
%ALFABETO
%NOLOCKGROUP
%INCLUDE DCLIST: el archivo de inclusión del diccionario DCLISTEG.UTX
-----------------------------------------------------------------------------------
- - - - Sección 2: Declaraciones de Variables
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - VAR
exit_Cmnd : ENTERO
acto_pendiente : ENTERO - - decidir si hay alguna acción pendiente
mostrar_datos : DISP_DAT_T - - información necesaria para DICTRL_LIST
hecho : BOOLEANO - - decide cuándo completar la ejecución
archivo_kb : EXPEDIENTE - - archivo abierto en el TPKB
i : ENTERO - - solo un contador
llave : ENTERO - - qué tecla se presionó
Última línea : ENTERO - - número de la última línea de información
list_data : ARRAY[20] OF STRING[40] -- información exacta de la cadena :
núm_opciones INTEGER - - número de artículos en la lista
pantalla_antigua : CADENA[4] - - pantalla previamente adjunta
estado : ENTERO - - estado devuelto de la llamada integrada
calle : CADENA[1] - - lectura de cadena desde el colgante de enseñanza
Err_archivo : EXPEDIENTE - - archivo de registro de errores
-----------------------------------------------------------------------------------
- - - - Sección 3: Declaración de Rutina
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
---- Sección 3-A: Declaración Op_Err_File
---- Abra el archivo de registro de errores.
---------------------------------------------------------------------------------
Rutina Op_Err_Archivo
Empezar
Abrió = falso
Escribir TPPROMPT(CR,'Creando archivo de error automático ..............')
B–72
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
Abierto = VERDADERO
TERMINARA SI
Finalizar Op_Err_File
-----------------------------------------------------------------------------------
---- Sección 3-B: Declaración Chk_Add_Dct
---- Compruebe si hay un diccionario cargado. Si no está
---- cargado, cargue en el diccionario.
---------------------------------------------------------------------------------
Rutina Chk_Add_Dct
Empezar -- Chk_Add_Dct
- - Asegúrese de agregar el diccionario 'DLST'.
CHECK_DICT('DLST',TPTSSP_TITLE,ESTADO) SI
ESTADO <> 0 ENTONCES
Write TPPROMPT(CR,'Cargando diccionario requerido.............') ADD_DICT('RD2U:
\DCLISTEG','DLST',DP_DEFAULT,DP_DRAM,STATUS) IF status <> 0 THEN
MÁS
WRITE TPPROMPT ('Diccionario ya cargado en sistema. ENDIF ')
Final Chk_Add_Dct
-----------------------------------------------------------------------------------
---- Sección 3-C: Declaración Log_Errors
---- Registre los errores detectados en un archivo para revisarlos más tarde.
-----------------------------------------------------------------------------------
ROUTINE Log_Errors(Out: FILE; Err_Str:STRING;Err_No:INTEGER)
EMPEZAR
B–73
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
TERMINARA SI
TERMINARA SI
FIN Log_Errors
-----------------------------------------------------------------------------------
---- Sección 3-D: Declaración de Chk_Stat
---- Compruebe la variable global, estado.
---- Si no es cero, registre el parámetro de entrada, err_str, en el
---- archivo de errores.
-----------------------------------------------------------------------------------
ROUTINE Chk_Stat ( err_str: STRING)
COMENZAR -- Chk_Stat
SI (estado <> 0) entonces
Log_Errors(Err_File, err_str,Estado) ENDIF
FIN Chk_Stat
-----------------------------------------------------------------------------------
- - - - Sección 3-E: Declaración TP_CLS
-----------------------------------------------------------------------------------
RUTINA TP_CLS DESDE ROUT_EX
-----------------------------------------------------------------------------------
- - - - Sección 4: Programa principal
------------------------------------------------------------------------------------
COMENZAR -- DCLST_EX
-----------------------------------------------------------------------------------
- - - - Sección 4-A: Realizar operaciones de configuración
-----------------------------------------------------------------------------------
TP_CLS - - Rutina de llamada para borrar y forzar que el menú USUARIO TP sea visible
Escribe (' * * * * * Iniciando DISCTRL_LIST Ejemplo *****', CR, CR)
Chk_Add_Dct - - Llame a la rutina para verificar y agregar el diccionario
Op_Err_Archivo - - Archivo de registro de errores de apertura de rutina de llamada
-----------------------------------------------------------------------------------
- - - - Sección 4-B: Definir y Activar una pantalla
-----------------------------------------------------------------------------------
DEF_SCREEN('LISTA', 'TP', estado) - - Crear/Definir una pantalla llamada LISTA
Chk_Stat ('LISTA DE PANTALLA DEF_DEF') - - Verificar que DEF_SCREEN fue exitoso
ACT_SCREEN('LIST', old_screen, status) -- activa la pantalla LIST que
- - eso se acaba de definir.
Chk_Stat ('LISTA ACT_PANTALLA') - - Verificar que ACT_SCREEN fue exitoso
-----------------------------------------------------------------------------------
- - - - Sección 4-C: Adjuntar ventanas a la pantalla
-----------------------------------------------------------------------------------
- - Adjunte las ventanas requeridas a la pantalla LISTA.
- - VER:
B–74
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
-----------------------------------------------------------------------------------
- - - - Sección 4-D: Escribir elementos de diccionario en Windows
-----------------------------------------------------------------------------------
- - Escribir elemento de diccionario, TPTSSP_TITLE, del diccionario DLST.
- - Lo que borrará la ventana de estado y mostrará el mensaje de introducción en
- - vídeo inverso.
ESCRIBIR_DICT(TPSTATUS, 'DLST', TPTSSP_TITLE, estado)
Chk_Stat('TPTSSP_TITLE no escrito')
- - Escribir elemento de diccionario, TPTSSP_FK1, del diccionario DLST.
- - Que mostrará "[TIPO]" en la ventana de línea de función.
ESCRIBIR_DICT(TPFUNC, 'DLST', TPTSSP_FK1, estado)
Chk_Stat('TPTSSP_FK1 no escrito')
- - Escribir elemento de diccionario, TPTSSP_CLRSC, del diccionario DLST.
- - Lo que borrará la ventana de visualización de la consola portátil.
ESCRIBIR_DICT(TPDISPLAY, 'DLST', TPTSSP_CLRSC, estado)
Chk_Stat('TPTSSP_CLRSC no escrito')
- - Escribir elemento de diccionario, TPTSSP_INSTR, del diccionario DLST.
- - Que mostrará instrucciones en la ventana de línea de aviso.
ESCRIBIR_DICT(TPPROMPT, 'DLST', TPTSSP_INSTR, estado)
Chk_Stat('TPTSSP_INSTR no escrito')
-----------------------------------------------------------------------------------
- - - - Sección 4-E: Determinar el número de opciones del menú
-----------------------------------------------------------------------------------
- - Lea el elemento del diccionario, TPTSSP_NUM, del diccionario DLST,
- - En el primer elemento de list_data.
- - list_data[1] será una representación ASCII del número de
- - opciones de menú. last_line se devolverá con el número de líneas/elementos
- - utilizados en list_data.
READ_DICT('DLST', TPTSSP_NUM, list_data, 1, last_line, estado)
Chk_Stat('TPTSSP_NUM no leído')
- - convierte la cadena en INTEGER, num_options
B–75
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
CNV_STR_INT(lista_datos[1], núm_opciones)
-----------------------------------------------------------------------------------
---- Sección 4-F: Inicialice la estructura de datos, display_data Que se utiliza para
---- mostrar la lista de opciones de menú.
-----------------------------------------------------------------------------------
- - Inicializar la estructura de datos de visualización
- - En este ejemplo solo tratamos con la ventana 1.
display_data.win_start[1] = 1 - - Fila inicial para la ventana 1.
mostrar_datos.win_end[1] = 10 - - Fila final para la ventana 1.
mostrar_datos.curr_win = 0 - - La ventana actual para mostrar, donde
- - cero (0) especifica la primera ventana.
mostrar_datos.cursor_row = 1 - - Fila actual en la que se encuentra el cursor.
mostrar_datos.lins_per_pg = 10 - - El número de líneas desplazadas cuando el
- - el usuario presiona SHIFT hacia arriba o hacia abajo. Normalmente
- - es el mismo que el tamaño de la ventana.
display_data.curs_st_col[1] = 0 -- columna inicial para el campo 1 display_data.curs_en_col[1]
= 0 -- columna final para el campo 1, será
- - actualizado un poco más tarde
mostrar_datos.curr_field = 0 - - Campo actual, donde
- - cero (0) especifica el primer campo
mostrar_datos.último_campo = 0 - - Último campo de la lista (usando solo uno
- - campo en este ejemplo).
display_data.curr_it_num = 1 - - Número de elemento actual en el que se encuentra el cursor.
display_data.sob_it_num = 1 - - Número de artículo inicial.
display_data.eob_it_num = num_opciones - - Número de artículo final, que es
- - el número de opciones leídas.
display_data.last_it_num = num_options-- Último número de artículo, también el
- - número de opciones leídas
- - Asegúrese de que el final de la ventana no supere el número total de elementos de la lista. IF
display_data.win_end[1] > display_data.last_it_num ENTONCES
display_data.win_end[1] = display_data.last_it_num --restablecer al último elemento ENDIF
B–76
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
TERMINARA SI
ENDFOR
-----------------------------------------------------------------------------------
- - - - Sección 4-G: Mostrar la lista.
-----------------------------------------------------------------------------------
- - Inicial Muestra la lista del menú.
DISCTRL_LIST(TPDISPLAY, mostrar_datos, lista_datos, DC_DISP, estado)
Chk_Stat('Error al mostrar la lista')
- - Abrir un archivo en la ventana TPDISPLAY con atributos PASSALL y FIELD
- - y NOECHO
SET_FILE_ATR(kb_archivo, ATR_PASSALL) - - Obtener entrada de colgante de instrucción de fila
SET_FILE_ATR(kb_archivo, ATR_FIELD) - - para que una sola tecla
- - satisfacer las lecturas.
SET_FILE_ATR(archivo_kb, ATR_NOECHO) - - no repetir las teclas de vuelta a
- - la pantalla
ABRIR ARCHIVO Kb_file ('RW', 'KB:TPKB') -- abre un archivo en el Teach Pendant
- - teclado (teclas)
estado = IO_STATUS(Kb_file)
Chk_Stat('Error al abrir TPKB')
act_pending = 0
hecho = FALSO
-----------------------------------------------------------------------------------
- - - - Sección 4-H: Controlar el movimiento del cursor dentro de la lista
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - REPETIR
- - Esperar una entrada clave
LEER Kb_file (cadena::1)
llave = ORD(cadena,1)
tecla = tecla AND 255 - - Convierte la clave al valor correcto.
SELECT tecla OF - - Decidir cómo manejar las entradas clave
CASO (KY_UP_ARW): - - tecla de flecha hacia arriba presionada
SI acto_pendiente <> 0 ENTONCES - - Si se seleccionó un elemento del menú...
- - Borrar aviso de confirmación
ESCRIBIR_DICT(TPPROMPT, 'DLST', TPTSSP_CLRSC, estado)
- - Borrar teclas de función de confirmación
ESCRIBIR_DICT(TPFUNC, 'DLST', TPTSSP_CLRSC, estado) ENDIF
B–77
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
Lista de visualización del archivo de diccionario - Continuación del movimiento del cursor de control
CASO (KY_ENTER):
- - Realizar más tarde
CASO (KY_F4): -- Tecla de función "SÍ" presionada
IF act_pending <> 0 THEN -- Si se seleccionó un elemento del menú...
- - Borrar mensaje de confirmación WRITE_DICT(TPPROMPT, 'DLST',
TPTSSP_CLRSC, estado)
- - Borrar teclas de función de confirmación
WRITE_DICT(TPFUNC, 'DLST', TPTSSP_CLRSC, status) IF
act_pending = num_options THEN
- - Salir de la rutina done
= TRUE
TERMINARA SI
ENDSELECT
IF key = KY_ENTER THEN -- El usuario ha especificado una acción
- - Mensaje de confirmación de escritura para el elemento
seleccionado WRITE_DICT (TPPROMPT, 'DLST',
(TPTSSP_CNF1 - 1 + display_data.cursor_row), estado)
- - Mostrar teclas de función de confirmación
B–78
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
-----------------------------------------------------------------------------------
- - - - Sección 4-I: Limpieza antes de salir del programa
-----------------------------------------------------------------------------------
- - Limpiar las ventanas del menú USUARIO TP
WRITE_DICT(TPDISPLAY, 'DLST', TPTSSP_CLRSC, estado)
WRITE_DICT(TPSTATUS, 'DLST', TPTSSP_CLRSC, estado)
- - Cierra el archivo conectado al teclado TP. CERRAR ARCHIVO
Kb_file
- - Cierre el archivo de registro de errores si está abierto. SI
abrió DESPUÉS
Este archivo de diccionario ASCII se usa para crear una pantalla colgante de enseñanza que se usa con DCLST_EX.KL.
Para obtener más información sobre DCLST_EX.KL, consulteSección B.7.
B–79
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
Archivo de diccionario
. lista dc kl
*
$-,TPTSSP_TITLE &home &reverse "Ejemplo Karel DISCTRL_LIST"
&estándar
$-,TPTSSP_CLRSC &hogar &clear_2_eow
$-,TPTSSP_FK1 &hogar" [ESCRIBE] "
$-,TPTSSP_FK2 &hogar" SÍ NO "
$-,TPTSSP_INSTR &home "Presione 'ENTER' o la tecla numérica para seleccionar". &clear_2_eol
* Agregue opciones de menú aquí, "Salir" debe ser la última opción
* TPTSSP_NUM especifica el número de opciones de menú
$-,TPTSSP_NUM "14"
$-,TPTSSP_MENU
"1 Ciclo de prueba 1" &nueva_línea
"2 Ciclo de prueba 2" &nueva_línea
"3 Ciclo de prueba 3" &nueva_línea
"4 Ciclo de prueba 4" &nueva_línea
"5 Ciclo de prueba 5" &nueva_línea
"6 Ciclo de prueba 6" &nueva_línea
"7 Ciclo de prueba 7" &nueva_línea
"8 Ciclo de prueba 8" &nueva_línea
"9 Ciclo de prueba 9" &nueva_línea
" 10 Ciclo de prueba 10" &nueva_línea
" 11 Ciclo de prueba 11" &nueva_línea
" 12 Ciclo de prueba 12" &nueva_línea
13 Ciclo de prueba 13" &nueva_línea
14 SALIR"
* Las confirmaciones deben estar en orden
¿Realizar el ciclo de prueba 11? [NO]" &clear_2_eol $-,TPTSSP_CNF12
&home"¿Realizar el ciclo de prueba 12? [NO]" &clear_2_eol $-,TPTSSP_CNF13
&home"¿Realizar ciclo de prueba 13? [NO]" &clear_2_eol $-,TPTSSP_CNF14
&home"Salir? [NO]" &clear_2_eol
B–80
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
Este programa muestra tres formas diferentes de usar el DISCTRL_ALPH integrado. El DISCTRL_ALPH incorporado
muestra y controla la entrada de cadenas alfanuméricas en una ventana específica. Referirse aApéndice A, "Descripción
alfabética del idioma KAREL" para obtener más información.
El método 1 permite ingresar un nombre de programa utilizando el valor predeterminado para el nombre del diccionario.
Consulte la Sección 4-A enUso de DISCTRL_ALPHA incorporado - Ingrese datos desde Teach Pendant.
El método 2 permite ingresar un comentario utilizando el valor predeterminado para el nombre del diccionario. Consulte la
Sección 4-B enUso de DISCTRL_ALPHA incorporado - Ingrese datos desde Teach Pendant.
El método 3 utiliza un nombre de diccionario y un elemento especificados por el usuario para ingresar un nombre de programa.
Consulte la Sección 4-C enUso de DISCTRL_ALPHA incorporado - Ingrese datos desde CRT/KB.
-----------------------------------------------------------------------------------
- - - - DCALP_EX.KL
-----------------------------------------------------------------------------------
- - - - Elementos de KAREL Idioma cubierto: En la sección:
---- Comportamiento:
---- Cláusulas:
---- Condiciones:
---- Tipos de datos:
---- ENTERO Segundo 2
---- CUERDA Segundo 2
---- Directivas:
---- COMENTARIO Segundo 1
---- INCLUIR Segundo 1
---- NOLOCKGROUP Segundo 1
---- Funciones y procedimientos integrados:
---- ADD_DICT Segundo 4-C
---- CDH Segundo 4-A,B,C
---- DISCTRL_ALPH Segundo 4-A,B,C
---- FORCE_SPMENÚ Segundo 4-A,B,C
---- POST_ERR Segundo 4-A,B,C
---- SET_CURSOR Segundo 4-A,B,C
---- SET_LANG Segundo 4-C
---- Declaraciones:
---- LEER Segundo 4-A,B
---- ESCRIBE Segundo 4-A,B,C
---- SI... ENTONCES... ENDIF Segundo 4-A,B,C
---- Reservar Palabras:
---- EMPEZAR Segundo 4
B–81
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
-----------------------------------------------------------------------------------
- - - - Sección 1: Programa y Declaración Ambiental
-----------------------------------------------------------------------------------
PROGRAMADCALP_EX
%COMENTARIO = 'Monitor Alfa'
%NOLOCKGROUP
%INCLUIR TECLAS KLEV - - Necesario para el KY_ENTER
%INCLUYE DCALPH - - Necesario para el Elemento ALPH_PROG, ver apartado 4-C
-----------------------------------------------------------------------------------
- - - - Sección 2: Declaraciones de constantes y variables
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CONST
cc_inicio = 137
cc_clear_win = 128
cc_advertencia =0 - - Valor pasado a POST_ERR para mostrar solo advertencia.
cc_pausa =1 - - valor pasado a POST_ERR para pausar el programa.
VAR
estado : ENTERO
dispositivo_stat : ENTERO
term_char : ENTERO
nombre_ventana : CADENA[4]
prog_name : CADENA[12]
comentario : CADENA[40]
-----------------------------------------------------------------------------------
- - - - Sección 3: Declaración de Rutina
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
- - - - Sección 4: Programa principal
B–82
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
------------------------------------------------------------------------------------
COMENZAR - - DCALP_EX
-----------------------------------------------------------------------------------
- - - - Sección 4-A: Introduzca un nombre de programa desde el menú USUARIO de la consola portátil
-----------------------------------------------------------------------------------
ESCRIBIR (CHR(cc_home), CHR(cc_clear_win)) - - Borrar menú USUARIO TP
FORCE_SPMENU(tp_panel, SPI_TPUSER, 1) - - Forzar menú USUARIO TP para ser
- - visible
SET_CURSOR(TPDISPLAY, 12, 1, estado) WRITE - - cambiar la posición del cursor
('nombre_prog:')
prog_name = '' - - inicializar el nombre del programa
DISCTRL_ALPH('t_fu', 12, 12, prog_name, 'PROG', 0, term_char, status) IF status <> 0 THEN
-----------------------------------------------------------------------------------
- - - - Sección 4-C: Esta sección realizará la entrada del nombre del programa desde el
---- CRT/KB. El nombre del diccionario y los valores de los elementos son
B–83
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
B–84
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
Este archivo de diccionario ASCII se utiliza para escribir texto en la pantalla especificada. DCALPH_EG.UTX también
se usa con DCAL_EX.KL. Para obtener más información sobre DCAL_EX.KL, consulteSección B.13.
. KL DCALPH
ps alfa_prog
" PRG PRINCIPAL SUB PRUEBA > "&nueva_línea
" PROC TRABAJO MACRO > "&nueva_línea
" PRUEBA1 PRUEBA2 PRUEBA3 PRUEBA4 >"
NotaEl símbolo mayor que (>) enArchivo de diccionario DCALPHEG.UTXes un recordatorio para usar la tecla
SIGUIENTE para desplazarse por las múltiples líneas. Observe también que &new_line aparece solo en las dos
primeras líneas. Esto asegura que las líneas se desplazarán correctamente.
Este programa copia un programa colgante de enseñanza y luego aplica una compensación a las posiciones dentro del
programa recién creado. Esto es útil cuando crea el programa de la botonera de aprendizaje fuera de línea y luego se da cuenta
de que todas las posiciones de la botonera de aprendizaje están erradas en una cantidad determinada. Sin embargo, debe
tener en cuenta que la utilidad PROGRAM ADJUST es mucho más adecuada para este trabajo.
------------------------------------------------------------------------------------
- - - - CPY_TP.KL
------------------------------------------------------------------------------------
- - - - Elementos de KAREL Idioma cubierto: En la sección:
---- Comportamiento:
----
---- Cláusulas:
---- DE Segundo 3-F
----
---- Condiciones:
----
---- Tipos de datos:
---- FORMACIÓN DE REAL Segundo 2
---- FORMACIÓN DE CUERDA Segundo 2
---- BOOLEANO Segundo 2
---- ENTERO Segundo 2; 3-B,C,D,E
---- POS CONJUNTO Segundo 2
---- REAL Segundo 2
B–85
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
---- Declaraciones:
---- PARA...FIN PARA Segundo 3-B,D,E
---- SI...ENTONCES...ELSE...ENDIF Segundo 3-A,B,C,E
---- READ Segundo 3-B,C,D
---- REPETIR HASTA Segundo 3-B,C,D
---- DEVOLVER Segundo 3-E
---- RUTINA Segundo 3-A,B,C,D,E,F
---- SELECCIONAR...FIN SELECCIONAR Segundo 3-E
---- ESCRIBE Segundo 3-B, C, D, E, 4
----
---- Reservar Palabras:
---- EMPEZAR Segundo 3-A,B,C,D,E;
4
---- CONSTITUCIÓN Segundo 2
---- RC Segundo 3-B,C,D,E
---- FINAL Segundo 3-A,B,C,D,E;
4
---- PROGRAMA Segundo 1
---- VAR Segundo 2
------------------------------------------------------------------------------------
B–86
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
------------------------------------------------------------------------------------
- - - - Sección 3: Declaración de Rutina
------------------------------------------------------------------------------------
------------------------------------------------------------------------------------
---- Sección 3-A: Declaración CHK_STAT
---- Comprueba si el estado fue exitoso o no. Si el estado no fue exitoso, el
---- estado se publica
------------------------------------------------------------------------------------
RUTINA chk_stat (rec_stat: entero)
empezar
SI (rec_stat <> ÉXITO) ENTONCES - - si rec_stat no es ÉXITO
- - luego publica el error
POST_ERR (rec_stat, '', 0, ER_WARN) ENDIF - - Publicar el error en el sistema.
B–87
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
FIN chk_stat
------------------------------------------------------------------------------------
---- Sección 3-B: Declaración GetFromPrg
---- Genere una lista de programas TPE cargados. Permite al
---- usuario seleccionar uno de estos programas para que sea
---- el programa a copiar, es decir, FROM_prog
----------------------------------------------------------------------------------
RUTINA ObtenerDePrg
VAR
tipo_tp : ENTERO - - Tipos de programa a listar
n_saltar : ENTERO - - Índice en la lista de programas
formato : ENTERO - - En qué tipo de formato almacenar los programas
n_progs : ENTERO - - Número de programas devueltos en prg_name
prg_name : ARRAY [8] of STRING[20] --Nombres de programa devueltos desde PROG_LIST :
estado INTEGER - - Estado de la llamada PROG_LIST
f_índice : ENTERO - - Índice rápido para generar el listado de programas.
arr_size : ENTERO - - Tamaño de matriz de prg_name
prg_select: ENTERO - - Selección de usuarios para qué programa copiar
índice : ENTERO - - Contador de bucle FOR que muestra prg_name
Aplicación de compensaciones al programa de Teach Pendant copiado - Generar lista de programas para el usuario
EMPEZAR
B–88
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
TERMINARA SI
------------------------------------------------------------------------------------
---- Sección 3-C: Declaración GetOvrSw
---- Pregunte al usuario si desea sobrescribir el programa
---- copiado, TO_prog, si existe.
----------------------------------------------------------------------------------
RUTINA ObtenerOvrSw
VAR
sí No : ENTERO
EMPEZAR
FIN GetOvrSw
Aplicación de compensaciones al programa del mando manual copiado: posiciones de compensación de entrada
------------------------------------------------------------------------------------
- - - - Sección 3-D: Declaración GetOffset
B–89
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
B–90
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
------------------------------------------------------------------------------------
---- Sección 3-E: Declaración ModifyPrg
---- Aplicar las compensaciones a cada posición dentro del programa TP
------------------------------------------------------------------------------------
RUTINA ModifyPrg
VAR
pos_tipo : ENTERO - - El tipo de posición devuelta por GET_POS_TYP
num_axs : ENTERO - - El número de ejes si la posición es del tipo JOINTPOS
indx_pos: ENTERO - - Contador de bucle FOR, que se incrementa a través de la posición TP
grupo_no: ENTERO - - El número de grupo del ajuste de posición actual.
num_pos : ENTERO - - El siguiente número de posición disponible dentro del programa TP
indx_axs: ENTERO - - Contador de bucle FOR, incrementos a través de matriz REAL
EMPEZAR
SELECT_TPE ('', estado) to_prog - - Asegúrese de que to_prog no esté seleccionado actualmente
= 'MDFY_TP' - - Establezca to_prog en el nombre deseado.
- - - - - - Copie from_prog a to_prog ----- COPY_TPE (from_prog,
to_prog, over_sw, status) chk_stat(status)
- - comprobar el estado de COPY_TPE
- - - Si el usuario especificó no sobrescribir el programa TPE y
--- el estado devuelto es 7015, "el programa ya existe",
--- luego salga del programa. Esto significará no alterar el to_prog ya existente.
---
SI ((over_sw = FALSO) Y (estado = 7015)) ENTONCES
ESCRIBIR ('ANULANDO:: ¡EL PROGRAMA YA EXISTE!',CR)
VOLVER
TERMINARA SI
Aplicación de compensaciones al programa de Teach Pendant copiado: aplicación de compensaciones a las posiciones Cont.
B–91
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H
B–92
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL
B–93
Apéndice C
COMANDO KCL DESCRIPCIÓN
ALFABÉTICA
Contenido
C-1
C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL MARRC75KR07091E Rev H
C-2
MARRC75KR07091E Rev H C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL
C–3
C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL MARRC75KR07091E Rev H
C-4
MARRC75KR07091E Rev H C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL
Esta sección describe cada comando de KCL en orden alfabético. Cada descripción incluye el propósito del
comando, su sintaxis y detalles sobre cómo usarlo. También se proporcionan ejemplos de cada comando.
• file_spec: <nombre_dispositivo:><\\nombre_host\><nombre_ruta\>nombre_archivo.tipo_archivo |
<nombre_dispositivo:><\\nombre_host\>'nombre_específico_host'
nombre del dispositivo:es un campo opcional de dos a cinco caracteres, seguido de dos puntos. El primer carácter es una
letra, los caracteres restantes deben ser alfanuméricos. Si este campo se deja en blanco, se utilizará el dispositivo
predeterminado de la variable de sistema $DEVICE.
nombre_host:es un campo opcional de uno a ocho caracteres. Host_name selecciona el nodo de red que
recibe este comando. Debe estar precedido por dos barras invertidas y separado del resto de campos por
una barra invertida.
Los comandos KCL se pueden abreviar, lo que le permite escribir menos letras siempre que la versión abreviada
siga siendo única entre todas las palabras clave. Por ejemplo, "ABORTAR" puede ser "AB", pero "CONTINUAR"
debe ser "CONT" para distinguirlo de "CONDICIÓN".
Los nombres de ruta, los nombres de archivo y los tipos de archivo que contienen caracteres especiales o comienzan con números se
pueden especificar como un nombre_específico de host entre comillas simples. FR:\'00\' es válido, FR:\'00\test.kl' es válido, FR:
\'00'\test.kl no es válido porque el host_specific_name debe ser el último.
Los comandos de KCL que tienen <prog_name> como parte de la sintaxis del comando usarán el programa predeterminado si no se
especifica ninguno. Los comandos de KCL que tienen <file_name> como parte de la sintaxis del comando usarán el programa
predeterminado como nombre de archivo si no se especifica ninguno.
C–5
C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL MARRC75KR07091E Rev H
dónde:
FORCE: aborta la tarea incluso si se establece el atributo NOABORT. FORCE solo funciona con
ABORT prog_name; FORCE no funciona con ABORT ALL
Objetivo:Anula la tarea en ejecución o en pausa especificada. Siprog_ nombreno se especifica, se utiliza el programa
predeterminado.
La ejecución de la instrucción del programa actual se completa antes de que se cancele la tarea, excepto las
instrucciones de movimiento actual, DELAY, WAIT o READ, que se cancelan.
Sintaxis:ANEXAR ARCHIVOinput_file_specAespecificación_archivo_salida
dónde:
Objetivo:Agrega el contenido del archivo de entrada especificado al final del archivo de salida especificado. los
input_file_specy elespecificación_archivo_de_salidadebe incluir tanto el nombre del archivo como el tipo de archivo.
dónde:
C-6
Traducido del inglés al español - www.onlinedoctranslator.com
Objetivo:Agrega un nodo al final de la variable PATH especificada previamente cargada en la RAM. El valor del
nodo adjunto no está inicializado y el número de índice es uno más que el índice del último nodo. Ejecute el
comando KCL> SAVE VARS para que el cambio sea permanente.
dónde:
El punto doble (..) se puede utilizar para representar el directorio un nivel por encima del directorio actual.
Objetivo:Cambia el dispositivo predeterminado. si unnombre del dispositivono está especificado, muestra el dispositivo predeterminado.
KCL>CD
KCL> CD mc:\a
KCL > CD ..
dónde:
Objetivo:Borra todos los programas y datos variables de KAREL y Teach Pendant de la memoria. Todos los
programas y variables borrados (si se guardaron con el comando KCL> SAVE VARS) se pueden volver a cargar en
la memoria usando el comando KCL> LOAD.
C–7
C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL MARRC75KR07091E Rev H
¿Está seguro? SÍ
dónde:
Objetivo:Borra los puntos de ruptura de condición especificados del programa predeterminado o especificado.
dónde:
C–8
MARRC75KR07091E Rev H C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL
Sintaxis:BORRAR DICTOnombre_dict<(nombre_idioma|TODOS)>
dónde:
nombre_idioma:el nombre de la lengua. Las opciones disponibles son INGLÉS, JAPONÉS, FRANCÉS,
ALEMÁN, ESPAÑOL o PREDETERMINADO.
Objetivo:Borra un diccionario del idioma especificado o de todos los idiomas. Si no se especifica ningún
idioma, se borra del idioma PREDETERMINADO únicamente.
dónde:
Objetivo:Borra los datos del programa de la memoria para el programa predeterminado o especificado.
¿Está seguro? SÍ
dónde:
C–9
C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL MARRC75KR07091E Rev H
Objetivo:Borra la variable y los datos de tipo asociados con el programa especificado o predeterminado de la
memoria.
Las variables y los tipos a los que hace referencia un programa cargado no se borran.
¿Está seguro? SÍ
Sintaxis:COMPRIMIR DICTOfile_name
dónde:
Nombre del archivo:el nombre de archivo del diccionario de usuario que desea comprimir.
dónde:
Nombre del archivo:el nombre de archivo del formulario que desea comprimir.
Objetivo:Comprime un archivo de formulario desde el dispositivo de almacenamiento predeterminado utilizando el nombre de formulario
especificado. El tipo de archivo del formulario debe ser “.FTX”. Se creará un archivo de diccionario comprimido y un archivo de variables. El archivo
de diccionario comprimido tendrá el mismo nombre de archivo que el archivo de formulario y será del tipo ".TX". El archivo de variables tendrá un
nombre de archivo de cuatro caracteres, que se extrae del nombre del archivo de formulario, y será del tipo “.VR”. Si no se especifica ningún
C–10
MARRC75KR07091E Rev H C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL
dónde:
prog_name:el nombre de cualquier KAREL o programa de enseñanza colgante que sea una tarea
Objetivo:Continúa la ejecución del programa de la tarea especificada que ha sido pausada por una operación de retención,
pausa o ejecución de prueba. Si se cancela el programa, la ejecución del programa se inicia en la primera línea ejecutable.
Cuando una tarea está en pausa, el botón INICIO DE CICLO en el panel del operador tiene el mismo efecto que el
comando KCL> CONTINUAR.
CONTINUAR es un comando de movimiento; por lo tanto, el dispositivo desde el que se emite debe tener control de
movimiento.
Ver también:Consulte la descripción de $RMT_MASTER en elManual de referencia del programapara obtener más
información sobre la asignación de control de movimiento a un dispositivo remoto.
Sintaxis:COPIAR <ARCHIVO>from_file_specAto_file_spec<SOBREESCRIBIR>
dónde:
El carácter comodín (*) se puede utilizar para reemplazarfrom_file_spec's el nombre completo del archivo, la primera parte del nombre
del archivo, la última parte del nombre del archivo o la primera y la última parte del nombre del archivo. el tipo de archivo
C-11
C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL MARRC75KR07091E Rev H
también puede usar el comodín de la misma manera. El carácter comodín en elto_file_specsolo puede reemplazar el
nombre completo del archivo o el tipo de archivo completo.
dónde:
Objetivo:Le permite declarar una variable que se asociará con el programa especificado o
predeterminado. Debe especificar un identificador válido para elnombre_vary un validotipo de datos.
Solo se puede declarar una variable con el comando CREATE VAR. Debe ingresar el comando KCL> SAVE VARS
para guardar la variable declarada con los datos de la variable del programa. Utilice el comando KCL> SET
VARIABLE para asignar un valor a una variable.
Los siguientes tipos de datos son válidos (también se admiten los tipos de usuario): ARRAY OF
BYTE, JOINTPOS, ARRAY OF SHORT, JOINTPOS1 a JOINTPOS9, BOOLEAN, POSITION, REAL, CONFIG,
VECTOR, FILE, XYZWPR, XYZWPREXT, INTEGER
Puede crear matrices multidimensionales del tipo anterior. Se puede especificar un máximo de 3 dimensiones. Las
rutas solo se pueden crear a partir de un tipo definido por el usuario.
De forma predeterminada, la variable se creará en la memoria temporal (en DRAM) y debe volver a crearse cada
vez que se enciende. El valor siempre se restablecerá a no inicializado.
C–12
MARRC75KR07091E Rev H C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL
Sintaxis:BORRAR ARCHIVOfile_spec<SÍ>
dónde:
Objetivo:Elimina el archivo especificado del dispositivo de almacenamiento especificado. El carácter comodín (*) se puede utilizar para
reemplazar el nombre de archivo completo, la primera parte del nombre de archivo, la última parte del nombre de archivo o la primera y
la última parte del nombre de archivo. El tipo de archivo también puede usar el comodín de la misma manera.
¿Está seguro? SÍ
dónde:
Objetivo:Elimina el nodo especificado de la variable PATH especificada. La variable PATH debe estar cargada
en memoria. Ingrese el comando KCL> SAVE VARS para que el cambio sea permanente.
C–13
C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL MARRC75KR07091E Rev H
dónde:
Objetivo:Elimina la variable especificada de la memoria. Una variable que está vinculada con el código p cargado no
se puede eliminar. Ingrese el comando KCL> SAVE VARS para que el cambio sea permanente.
Sintaxis:DIRECTORIO <file_spec>
dónde:
Objetivo:Muestra una lista de los archivos que se encuentran en un dispositivo de almacenamiento. Sifile_specno se especifica, la
información del directorio se muestra para todos los archivos almacenados en un dispositivo específico. La información del directorio
que se muestra incluye lo siguiente:
El nombre del volumen del dispositivo (si se especificó cuando se inicializó el dispositivo)
Los nombres y tipos de archivos actualmente almacenados en el dispositivo y los tamaños de los archivos en bytes
El número de archivos, el número de bytes restantes y el número total de bytes, si está disponible
El carácter comodín (*) se puede utilizar para reemplazar el nombre de archivo completo, la primera parte del nombre de archivo, la
última parte del nombre de archivo o la primera y la última parte del nombre de archivo. El tipo de archivo también puede usar el
comodín de la misma manera.
C–14
MARRC75KR07091E Rev H C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL
Use el comando CD para cambiar al subdirectorio KCL> DIR antes de usar el comando DIR KCL> DIR
\test_dir\*.* mostrar el contenido del subdirectorio sin usar el comando CD.
dónde:
dónde:
dónde:
C–15
C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL MARRC75KR07091E Rev H
dónde:
Objetivo:Proporciona un editor de texto ASCII que se puede utilizar para editar archivos de diccionario, archivos de
comandos y archivos fuente KAREL.
Sifile_specno se especifica, el nombre de programa predeterminado se utiliza como nombre de archivo y el tipo de archivo
predeterminado es .KL (código fuente de KAREL).
Si existe una sesión de edición anterior, entoncesfile_specse ignora y se reanuda la sesión de edición.
KCL> ED
dónde:
dónde:
C–16
MARRC75KR07091E Rev H C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL
dónde:
Objetivo:Formatea un dispositivo especificado. Se debe formatear un dispositivo antes de almacenar archivos en él.
¿Está seguro? SÍ
Sintaxis:AYUDA <nombre_comando>
dónde:
Objetivo:Muestra ayuda en línea para los comandos de KCL. Si especifica unnombre_comandoSe muestra el
argumento, la sintaxis requerida y una breve descripción del comando especificado.
KCL> AYUDA
C-17
C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL MARRC75KR07091E Rev H
Sintaxis:MANTENER <(prog_name|TODOS)>
dónde:
Objetivo:Hace una pausa en el programa especificado o predeterminado que se está ejecutando y mantiene el movimiento en la
posición actual (después de una desaceleración normal).
Use el comando KCL> CONTINUAR o el botón INICIO DE CICLO en el panel del operador para reanudar la
ejecución del programa.
KCL> HO TODO
dónde:
Objetivo:Inserta un nodo delante del nodo especificado en la variable PATH. La variable PATH debe estar
cargada en memoria.
El número de índice del nodo insertado es elíndice_nodoespecifica y el valor del nodo insertado no se
inicializa. Los números de índice para los nodos subsiguientes se incrementan en uno. Debe ingresar el
comando KCL> GUARDAR VARS para que el cambio sea permanente.
C–18
MARRC75KR07091E Rev H C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL
dónde:
Objetivo:Carga un código p y un archivo variable desde el dispositivo de almacenamiento predeterminado y el directorio predeterminado en la
memoria utilizando el nombre de archivo especificado o predeterminado. Se supone que los tipos de archivo para el código p y los archivos
dónde:
nombre_idioma:un idioma en particular. Las opciones disponibles son INGLÉS, JAPONÉS, FRANCÉS, ALEMÁN,
ESPAÑOL o PREDETERMINADO.
memoria usando el nombre de archivo especificado. Se supone que el tipo de archivo es ".TX".
dónde:
C-19
C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL MARRC75KR07091E Rev H
Si lo especificadonombre del formularioes mayor que cuatro caracteres, los primeros dos caracteres no se usan para el
nombre del diccionario o el nombre del archivo variable.
Ver también:Para obtener más información sobre la creación y el uso de formularios, consulteCapítulo 10DICCIONARIOS Y
FORMULARIOS
Cargando FORMULARIO.VR
Cargando EXAMEN.VR
dónde:
Objetivo:Carga un archivo de datos de masterización desde el dispositivo de almacenamiento predeterminado y el directorio predeterminado en la
memoria utilizando el nombre de archivo especificado o predeterminado. Se supone que el tipo de archivo es ".SV".
dónde:
C–20
MARRC75KR07091E Rev H C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL
Objetivo:Carga un archivo de código p desde el dispositivo de almacenamiento predeterminado y el directorio predeterminado en la memoria utilizando el
NotaPara R-30iB y R-30iControladores B Mate, la opción KAREL debe estar instalada en el controlador
del robot para poder cargar los programas KAREL.
dónde:
Objetivo:Carga un archivo de parámetros de servo desde el dispositivo de almacenamiento predeterminado y el directorio predeterminado
en la memoria utilizando el nombre de archivo especificado o predeterminado. Se supone que el tipo de archivo es ".SV".
dónde:
Objetivo:Carga el archivo de variables del sistema especificado en la memoria, asignando valores a todas las variables del sistema guardadas.
El dispositivo de almacenamiento predeterminado y el directorio predeterminado se utilizan con el nombre de archivo especificado o
C–21
C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL MARRC75KR07091E Rev H
• Si una variable del sistema de matriz a la que no hace referencia un programa ya existe cuando se carga un
archivo .SV, se usa el tamaño del archivo .SV y se cargan los contenidos. No se publican errores.
• Si una variable del sistema de matriz a la que hace referencia un programa ya existe cuando se carga un archivo .SV con
un tamaño MÁS GRANDE, se ignora el tamaño del archivo .SV y NINGUNO de los valores de la matriz se carga. Se
publican los siguientes errores; "nombre_varmemoria no actualizada", "Discrepancia de creación de len de matriz".
• Si una variable del sistema de matriz a la que hace referencia un programa ya existe cuando se carga un
archivo .SV con un tamaño MENOR, se ignora el tamaño del archivo .SV pero se cargan TODOS los valores de la
matriz. No se publican errores.
• Si se carga un archivo .SV con una definición de tipo diferente, el archivo .SV dejará de cargarse y
detectará el error. Se publican los siguientes errores; "Crear tipo -nombre_varfalló", "Desajuste de
creación duplicada".
• Si un .SV. se carga un archivo con una definición de tipo diferente, pero se especifica la opción CONVERTIR,
intenta cargar todo lo que puede. Por ejemplo, el controlador tiene un tipo SCR_T que tiene el campo $NUEVO
pero no el campo $ANTERIOR. Cuando se carga un archivo .SV antiguo que tiene $ ANTIGUO pero no $ NUEVO, el
procedimiento de carga crea el tipo SCR_T en función del contenido del archivo .SV y publica el error "Crear tipo:
var_name falló", "La creación duplicada no coincide". . Luego crea el tipo SCR_! que tiene el campo $OLD pero no
el campo $NEW. Luego hace una copia campo por campo de todos los campos válidos antiguos en el nuevo tipo.
Por lo tanto, dado que no hay información $NUEVA en el tipo antiguo, ese campo no se actualiza y la información
$VIEJA se descarta. Cualquier campo cuyos tipos no coincidan se descarta del tipo cargado. Entonces, si un campo
se cambiara de entero a real, el campo de entero en los datos cargados se descartaría. Cualquier campo que sea
una matriz seguirá las mismas reglas que las variables del sistema de matriz.
dónde:
OVERWRITE: si se especifica, puede sobrescribir un programa TP previamente cargado con el mismo nombre
utilizando el nombre de archivo especificado o predeterminado. Se supone que el tipo de archivo es ".TP".
C-22
MARRC75KR07091E Rev H C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL
KCL> CARGAR TP
dónde:
Objetivo:Carga el archivo de datos variables especificado o predeterminado desde el directorio y el dispositivo de almacenamiento
predeterminados en la memoria. Se supone que el tipo de archivo es ".VR".
• Si ya existe una variable de matriz a la que no hace referencia un programa cuando se carga un archivo .VR, se
usa el tamaño del archivo .VR y se cargan los contenidos. No se publican errores.
• Si ya existe una variable de matriz cuando se carga un programa, el tamaño en el archivo .PC se ignora y el programa se
carga de todos modos. Se publican los siguientes errores: "nombre_varSe ignora la longitud de la matriz de PC" y "La
creación de la longitud de la matriz no coincide".
• Si una variable de matriz a la que hace referencia un programa ya existe cuando se carga un archivo .VR con un tamaño
MÁS GRANDE, el tamaño en el archivo .VR se ignora y NINGUNO de los valores de la matriz se carga. Se publican los
siguientes errores; "nombre_varmemoria no actualizada", "Discrepancia de creación de longitud de matriz".
• Si ya existe una variable de matriz a la que hace referencia un programa cuando se carga un archivo .VR con un tamaño MENOR,
se ignora el tamaño en el archivo .VR pero se cargan TODOS los valores de la matriz. Se publican los siguientes errores; "
nombre_varlongitud de la matriz actualizada", "Desigualdad en la creación de la longitud de la matriz".
Las siguientes reglas se aplican a los tipos definidos por el usuario en los programas KAREL:
• Una vez que se crea un tipo, nunca se puede cambiar, independientemente de si un programa hace referencia a él o
no. Si se eliminan todas las variables que hacen referencia al tipo, el tipo también se eliminará. A continuación, se
puede cargar una nueva versión.
C-23
C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL MARRC75KR07091E Rev H
• Si ya existe un tipo cuando se carga un programa con una definición de tipo diferente, el archivo .PC no se
cargará. Se publican los siguientes errores; "Crear tipo -nombre_varfalló", "Desajuste de creación
duplicada".
• Si ya existe un tipo cuando se carga un archivo .VR con una definición de tipo diferente, el archivo .VR
dejará de cargarse cuando detecte el error. Se publican los siguientes errores; "Crear tipo -nombre_var
falló", "Desajuste de creación duplicada".
Sintaxis:CERRAR SESIÓN
Objetivo:Cierra la sesión del usuario actual del dispositivo KCL fuera del sistema. El nivel de contraseña vuelve al nivel
de OPERADOR. Si las contraseñas no están habilitadas, KCL mostrará un mensaje de error como "Ningún usuario ha
iniciado sesión actualmente".
Ejemplo:KCL>CERRAR SESIÓN
dónde:
ruta_nombre:un subdirectorio creado previamente en el dispositivo de la tarjeta de memoria usando el comando mkdir.
dónde:
C–24
MARRC75KR07091E Rev H C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL
Objetivo:MOUNT indica al controlador que hay un dispositivo de almacenamiento disponible para leer o escribir
datos.
Un dispositivo debe formatearse con el comando KCL> FORMAT antes de que pueda montarse correctamente.
Sintaxis:MOVER <ARCHIVO>file_spec
dónde:
Objetivo:Mueve el archivo especificado de un dispositivo de archivo de memoria a otro. El archivo debe existir
en los discos FROM o RAM. Si file_spec es un archivo en el disco FROM, el archivo se mueve al disco RAM y
viceversa.
El carácter comodín (*) se puede utilizar para reemplazar el nombre de archivo completo, la primera parte del nombre de
archivo, la última parte del nombre de archivo o la primera y la última parte del nombre de archivo. El tipo de archivo
también puede usar el comodín de la misma manera. Si file_spec especifica varios archivos, todos se mueven al otro disco.
dónde:
La ejecución del segmento de movimiento actual y la declaración del programa actual se completan antes de que se detenga
la tarea.
C–25
C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL MARRC75KR07091E Rev H
Los manejadores de condiciones permanecen activos. Si la acción del controlador de condiciones es NOPAUSE y se cumple la
condición, se reanuda la ejecución de la tarea.
Si la sentencia es WAIT FOR y la condición de espera se cumple mientras la tarea está en pausa, la
sentencia que sigue a WAIT FOR se ejecuta inmediatamente cuando se reanuda la tarea.
Si la declaración es un DEMORA, el tiempo continuará mientras la tarea está en pausa. Si el tiempo de demora finaliza
mientras la tarea está en pausa, la instrucción que sigue a DELAY se ejecuta inmediatamente cuando se reanuda la
tarea. Si la declaración es LECTURA, aceptará la entrada aunque la tarea esté en pausa.
El comando KCL> CONTINUE reanuda la ejecución de una tarea en pausa. Cuando una tarea está en pausa, el
botón INICIO DE CICLO en el panel del operador tiene el mismo efecto que el comando KCL> CONTINUAR.
dónde:
nombre del dispositivo:el nombre del dispositivo de archivo de memoria que se va a purgar
Objetivo:Purga el dispositivo de archivo de memoria especificado liberando los bloques usados que ya no son
necesarios. El dispositivo debe establecerse en "FR:" para DESDE el disco, "RD:" para el disco RAM o "MF:" para ambos
discos.
La operación de purga solo es necesaria cuando el dispositivo no tiene suficiente memoria para realizar una operación. La
operación de purga borrará los bloques de archivos que se usaron anteriormente, pero que ya no son necesarios. Estos se
llaman bloques de basura. El disco FROM puede contener muchos bloques de basura si los archivos se eliminan o
sobrescriben. El disco RAM normalmente no contendrá bloques de basura, pero pueden ocurrir cuando se desconecta la
energía durante una copia de archivo.
El dispositivo debe estar montado y no se pueden abrir archivos en el dispositivo o se mostrará un error.
Sintaxis:IMPRESIÓNfile_spec
dónde:
C–26
MARRC75KR07091E Rev H C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL
dónde:
Objetivo:Registra la posición del TCP y/o ejes auxiliares o extendidos. El robot debe calibrarse antes de emitir el
comando RECORD. La variable puede ser una variable del sistema o una variable de programa que exista en la
memoria. La posición se registra en relación con el marco de referencia del usuario.
Debe ingresar el comando KCL> SAVE para asignar permanentemente la posición registrada. La tecla de
función Grabar, F3, en el menú TEACH de la consola portátil, también le permite grabar posiciones.
Sintaxis:RENOMBRAR ARCHIVOespecificación_archivo_antiguoAespecificación_archivo_nuevo
dónde:
Utilice el comando KCL> COPIAR ARCHIVO para cambiar el nombre de dispositivo de un archivo.
C–27
C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL MARRC75KR07091E Rev H
dónde:
Debe ingresar el comando KCL> GUARDAR VARS para que el cambio sea permanente.
dónde:
Antes de usar el comando RENAME VARS, los datos variables deben existir en la memoria bajo el
antiguo_nombre_prog.Los datos variables no pueden existir ya en la memoria bajo elnombre_nuevo_prog.
El comando no cambia el nombre del programa. Para cambiar el nombre de un programa KAREL, utilice KCL> RENOMBRAR ARCHIVO
para cambiar el nombre del archivo .KL, edite el nombre del programa en el archivo .KL, traduzca el programa y cargue el nuevo archivo
C. Para cambiar el nombre de un programa TP, utilice el menú SELECCIONAR.
Debe ingresar el comando KCL> GUARDAR VARS para que el cambio sea permanente.
C–28
MARRC75KR07091E Rev H C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL
Utilice esta secuencia de comandos KCL para copiar los datos variables de un programa (prog_1)en un
archivo variable que luego es utilizado por otro programa (prog_2):
VARIABLES DE CARGAprog_1
GUARDAR VARIABLESprog_2
CARGAR TODOprog_2
El efecto de esta secuencia de comandos no se puede lograr con el comando KCL> COPIAR
ARCHIVO.
El nombre del programa al que pertenecen los datos variables se almacena en el archivo de variables. El comando
KCL> COPY FILE no cambia el nombre del programa almacenado, por lo que los datos no se pueden usar con otro
programa.
Sintaxis:REINICIAR
Objetivo:Habilita la alimentación del servo después de que una condición de error haya apagado la alimentación del servo,
siempre que se haya solucionado la causa del error. El comando también borra la línea de mensaje en la pantalla CRT/KB. El
mensaje de error permanece en pantalla si la condición de error aún existe.
El comando RESET no tiene efecto en un programa que se está ejecutando. Tiene el mismo efecto que el
botón FAULT RESET en el panel del operador y la tecla de función RESET en la pantalla RESET de la consola
portátil.
Ejemplo:KCL> RESTABLECER
dónde:
ruta_nombre:un subdirectorio creado previamente en el dispositivo de la tarjeta de memoria usando el comando mkdir.
Objetivo:RMDIR elimina un subdirectorio en el dispositivo de tarjeta de memoria (MC:). El directorio debe estar vacío
antes de poder eliminarlo.
C–29
C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL MARRC75KR07091E Rev H
Sintaxis:EJECUTAR <prog_name>
dónde:
Objetivo:Ejecuta el programa especificado. El programa debe estar cargado en memoria. Si no se especifica ningún programa,
se ejecuta el programa predeterminado. Si se encuentran variables no inicializadas, la ejecución del programa se detiene.
La ejecución comienza en la primera línea ejecutable. RUN es un comando de movimiento; por lo tanto, el dispositivo
desde el que se emite debe tener control de movimiento. Si se emite un comando EJECUTAR en un archivo de
comandos, se ejecuta como un comando NOWAIT. Por lo tanto, la declaración que sigue al comando RUN se ejecutará
inmediatamente después de que se emita el comando RUN sin esperar a que finalice el programa, especificado por el
comando RUN.
Ver también:Consulte la descripción de $RMT_MASTER en elManual de referencia del software de FANUC America
Corporationpara obtener más información sobre la asignación de control de movimiento a un dispositivo remoto.
dónde:
Objetivo:Ejecuta el procedimiento de comando KCL que se almacena en el archivo de entrada especificado y muestra la salida en el
archivo de salida especificado. Se supone que el tipo de archivo de entrada es .CF. Se supone que el tipo de archivo de salida es .LS si no
se proporciona ningún tipo de archivo.
El comando RUNCF se puede anidar dentro de los archivos de comandos hasta en cuatro niveles. Usar%INCLUYE
input_file_specpara incluir otro archivo .CF en el procedimiento de comando. El comando RUNCF en sí mismo no está
permitido dentro de un procedimiento de comando.
C–30
MARRC75KR07091E Rev H C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL
Si el archivo de comandos contiene comandos de movimiento, el dispositivo desde el que se emite el comando RUNCF
debe tener control de movimiento.
Ver también:Referirse aSección 14.4, “Procedimientos de comando”, para obtener más información
dónde:
Objetivo:Guarda el archivo de datos de masterización desde el dispositivo de almacenamiento predeterminado y el directorio predeterminado en la
memoria utilizando el nombre de archivo especificado o predeterminado. El tipo de archivo será ".SV".
dónde:
Objetivo:Guarda los parámetros del servo en el dispositivo de almacenamiento predeterminado utilizando el nombre de archivo especificado
dónde:
C-31
C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL MARRC75KR07091E Rev H
Objetivo:Guarda los valores de las variables del sistema en el dispositivo de almacenamiento predeterminado y en el directorio
predeterminado utilizando el archivo de variables del sistema especificado (.SV). Si no especifica unfile_specse utiliza el nombre
predeterminado, “SYSVARS.SV”. Por ejemplo:
GUARDAR SISTEMAfile_1
En este caso, los datos de las variables del sistema se guardan en un archivo de variables llamadofile_1.SV.
GUARDAR SISTEMA
En este caso, los datos de las variables del sistema se guardan en un archivo de variables del sistema “SYSVARS.SV”.
dónde:
GUARDAR TPfile_1
GUARDAR TP =prog_1
En este caso, el programa TPprog_1se guarda en un archivo cuyo nombre es el nombre del programa predeterminado.
Si especifica un nombre de programa, debe estar precedido por un signo igual (=).
KCL> GUARDAR TP
C-32
MARRC75KR07091E Rev H C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL
dónde:
Objetivo:Guarda datos variables del programa especificado, incluidos los valores actualmente asignados, en el
archivo de variables especificado (.VR). Si no especifica unfile_nameo unprog_name,se utiliza el nombre del
programa predeterminado. Si solo unfile_namese especifica, ese nombre también se utilizará paraprog_name
. Por ejemplo:
GUARDAR VARIABLESfile_1
En este caso, los datos variables para el programafile_1se guarda en un archivo variable llamadofile_1.VR.
En este caso, los datos variables paraprog_1 se guarda en un archivo variable cuyo nombre es el nombre del programa
predeterminado.
Si especifica un nombre de programa, debe estar precedido por un signo igual (=).
Cualquier dato variable que no se guarde se perderá cuando se realice un arranque inicial del controlador.
dónde:
C-33
C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL MARRC75KR07091E Rev H
dónde:
PANTALLA: el mensaje se muestra en el menú USUARIO de la consola portátil cuando se ejecuta el punto de interrupción
Objetivo:Le permite establecer un punto de interrupción en una línea específica en el programa especificado o
predeterminado. La línea especificada debe ser una línea ejecutable de código fuente. Los puntos de ruptura se ejecutarán
antes de la línea especificada en el programa. De forma predeterminada, la tarea se detendrá cuando se ejecute el punto de
interrupción. DISPLAY, TRACE ON y TRACE OFF no pausarán la ejecución de la tarea.
Los puntos de ruptura son locales solo para el programa en el que se establecieron los puntos de ruptura. Por ejemplo, el punto de
ruptura #1 puede existir entre uno o más programas cargados con cada uno en un número de línea único. Si especifica un número
de punto de interrupción existente, el punto de interrupción existente se borra y se establece uno nuevo en el programa
especificado en la línea especificada.
Los puntos de ruptura en un programa se borran si el programa se borra de la memoria. También utiliza el comando
KCL> CLEAR BREAK PROGRAM para borrar los puntos de interrupción de la memoria.
Use el comando KCL> CONTINUE o el botón CYCLE START del panel del operador para reanudar la
ejecución de un programa en pausa.
C-34
MARRC75KR07091E Rev H C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL
dónde:
La fecha se especifica utilizando dos caracteres numéricos para el día, una abreviatura de tres letras para el
mes y dos caracteres numéricos para el año; por ejemplo, 01-ENE-00.
La hora se especifica mediante dos caracteres numéricos para la hora y dos caracteres numéricos para los
minutos; por ejemplo, 12:45.
Sintaxis:ESTABLECER PREDETERMINADOprog_name
dónde:
Objetivo:Establece el nombre de programa predeterminado que se utilizará como argumento predeterminado para los nombres de programa y
archivo. El nombre del programa predeterminado también se puede configurar en el dispositivo de programación.
Sintaxis:ESTABLECER GRUPOgrupo_no
dónde:
C-35
C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL MARRC75KR07091E Rev H
dónde:
nombre_idioma:un idioma en particular. Las opciones disponibles son INGLÉS, JAPONÉS, FRANCÉS, ALEMÁN,
ESPAÑOL o PREDETERMINADO.
dónde:
Objetivo:Asigna el valor especificado a la variable local o parámetro de rutina especificado. Puede asignar
valores constantes o valores variables, pero el valor debe ser del tipo de datos que se ha declarado para la
variable.
Utilice el comando HELP SET VAR para obtener más información sobre la asignación de tipos de datos.
Si se omite la cláusula IN, se asume la rutina en la parte superior de la pila. Si se omite la cláusula FROM, se asume el
programa predeterminado. Si elnombre de la tarease omite, se busca en la pila de la tarea predeterminada de KCL.
C-36
MARRC75KR07091E Rev H C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL
dónde:
Objetivo:Asigna el valor especificado a un puerto de entrada o salida especificado. SET PORT se puede usar con
puertos de salida físicos o simulados, pero solo con puertos de entrada simulados.
DIN, DOUT, RDO, OPOUT, TPOUT, WDI, WDO (BOOLEANO)-AIN, AOUT, GIN, GOUT
(ENTERO)
dónde:
nombre_atributo:PRIORIDAD o TRACELEN
Objetivo:Establece el atributo de tarea especificado. PRIORITY establece la prioridad de la tarea. Cuanto menor sea el número, mayor
es la prioridad. 1 a 89 es más bajo que el movimiento, pero más alto que la interfaz de usuario. 90 a 99 es inferior a la interfaz de
usuario. El valor predeterminado es 50. TRACELEN establece la longitud del búfer de seguimiento. El valor predeterminado es 10 líneas.
C–37
C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL MARRC75KR07091E Rev H
dónde:
Objetivo:Activa o desactiva la función de rastreo (la opción predeterminada es desactivada). La declaración del programa que se está
ejecutando actualmente y su número de línea se almacenan en un búfer cuando TRACE está activado. TRACE solo debe establecerse
en ON durante las operaciones de depuración porque ralentiza la ejecución del programa. Para ver los datos de rastreo, se debe usar
el comando SHOW TRACE.
dónde:
Puede asignar valores a variables del sistema con acceso de escritura KCL, a variables de programa o a variables y
campos estándar y definidos por el usuario. Solo puede asignar un elemento ARRAY. Use corchetes ([]) después del
nombre de la variable para especificar un elemento.
Ciertos tipos de datos como posiciones y vectores pueden tener más de un valor especificado.
El comando SET VARIABLE muestra el valor anterior de la variable especificada seguido del valor que
acaba de asignar, brindándole la oportunidad de verificar la asignación. La tecla DATA en la consola
portátil también le permite asignar valores a las variables.
Cuando usa SET VARIABLE para definir una posición, puede usar uno de los siguientes formatos:
C-38
MARRC75KR07091E Rev H C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL
donde X,Y,Z,W,P y R especifican la ubicación y la orientación, c_str es un valor de cadena que representa la
configuración en términos de ubicación de juntas y números de giro. Consulte la Sección 8.1, “Datos de
posición”. Por ejemplo, para establecer X=200,0, W=60,0 y los números de giro de los ejes 4 y 6 en 1 y 0,
escribiría las siguientes líneas:
Debe ingresar el comando KCL>SAVE VARS para que los cambios sean permanentes.
Objetivo:Esto activa o desactiva la visualización de los comandos KCL durante la ejecución de un procedimiento de comando
KCL (el valor predeterminado es ON, lo que significa que cada comando se muestra a medida que se ejecuta). Solo se muestra
el comando RUNCF cuando VERIFY está APAGADO.
dónde:
C–39
C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL MARRC75KR07091E Rev H
Objetivo:Muestra una lista de puntos de interrupción del programa para el programa predeterminado o especificado. La siguiente
información se muestra para cada punto de ruptura:
KCL> SH BREAK
Objetivo:Muestra todas las funciones integradas de softpart que están cargadas en el controlador.
dónde:
Objetivo:Muestra el controlador de condiciones especificado o una lista de controladores de condiciones para el programa predeterminado o
especificado. También muestra el estado activado/desactivado y si se ha establecido un punto de interrupción. Los controladores de condiciones
solo existen cuando un programa se está ejecutando o está en pausa.
KCL> SH COND
C-40
MARRC75KR07091E Rev H C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL
Objetivo:Muestra la posición del TCP en relación con el marco de referencia del usuario actual con una
ubicación x, y y z en milímetros; orientación w, p y r en grados; y la cadena de configuración actual.
Asegúrese de que el robot esté calibrado.
Sintaxis:MOSTRAR PREDETERMINADO
dónde:
Sintaxis:MOSTRAR DICTOS
C-41
C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL MARRC75KR07091E Rev H
Sintaxis:MOSTRAR HISTORIAL
Objetivo:Muestra la información de anidamiento de las llamadas de rutina. Para mostrar las líneas fuente de los
programas KAREL, los programas .KL deben existir en el disco RAM.
Sintaxis:MOSTRAR IDIOMA
Sintaxis:MOSTRAR IDIOMAS
dónde:
C-42
MARRC75KR07091E Rev H C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL
Objetivo:Muestra el nombre, tipo y valor de la variable local o parámetro de rutina especificado. Use corchetes ([ ])
después del nombre de la variable para especificar un elemento ARRAY específico. Si no especifica un elemento
específico, se muestra la variable completa.
Si se omite la cláusula IN, se asume la rutina en la parte superior de la pila. Si se omite la cláusula FROM, se asume el
programa predeterminado. Si elnombre de la tarease omite, se busca en la pila de la tarea predeterminada de KCL.
Para mostrar las variables locales, el programa debe estar ejecutándose, en pausa o abortado en la rutina especificada.
KCL> EJECUTAR
KCL> pausa
C–43
C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL MARRC75KR07091E Rev H
dónde:
Objetivo:Muestra una lista que incluye el nombre, el tipo y, si se especifica, el valor actual de cada variable
local y cada parámetro de rutina.
Si se omite la cláusula IN, se asume la rutina en la parte superior de la pila. Si se omite la cláusula FROM, se asume el
programa predeterminado. Si elnombre de la tarease omite, se busca en la pila de la tarea predeterminada de KCL
Objetivo:Muestra el estado actual de la memoria. El comando muestra la siguiente información de estado para la
memoria y enumera cada grupo de memoria por separado:
dónde:
C-44
MARRC75KR07091E Rev H C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL
Objetivo:Muestra la información de estado del programa especificado o predeterminado que se está ejecutando.
KCL> SH PROG
Objetivo:Muestra una lista de programas y datos variables que están actualmente cargados en la memoria.
KCL> SH PROG
dónde:
Objetivo:Muestra una lista que incluye el nombre, el tipo y, si se especifica, el valor actual de cada variable del
sistema. Si especifica untipo de datos,sólo se enumeran las variables del sistema de ese tipo.
KCL> SH SIS
dónde:
Objetivo:Muestra los datos de control de tareas para la tarea especificada. Siprog_nameno se especifica, se utiliza el
programa predeterminado.
C-45
C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL MARRC75KR07091E Rev H
KCL> SH TAREA
Objetivo:Muestra el estado de todas las tareas conocidas que ejecutan programas KAREL o programas TP.
Es posible que vea tareas adicionales ejecutándose que no son suyas. Si la consola portátil muestra un menú
escrito con KAREL, como Ajuste de programa o Contraseñas de configuración, también verá el estado de esta
tarea.
dónde:
Objetivo:Muestra todas las instrucciones del programa y los números de línea que se han ejecutado desde que
se activó TRACE.
El número de líneas que se muestran depende de la longitud del búfer de seguimiento, que se puede configurar
con el comando SET_TASK o la rutina integrada SET_TSK_ATTR. Para mostrar las líneas fuente de los programas
KAREL, los archivos .KL deben existir en el disco RAM.
dónde:
C-46
MARRC75KR07091E Rev H C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL
Objetivo:Muestra una lista que incluye el nombre, el tipo y, si se especifica, los campos de cada tipo definido por el usuario en el
programa especificado o predeterminado. No se muestran las dimensiones reales de la matriz y los tamaños de cadena.
KCL> TIPOS SH
dónde:
Puede mostrar los valores de las variables del sistema que permiten el acceso de lectura de KCL o los valores de las variables
del programa. Use corchetes ([]) después del nombre de la variable para especificar un elemento ARRAY específico. Si no
especifica un elemento específico, se muestra la variable completa.
dónde:
Objetivo:Muestra una lista que incluye el nombre, el tipo y, si se especifica, el valor actual de cada variable en el
programa predeterminado o especificado.
C–47
C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL MARRC75KR07091E Rev H
Ver también:comando MOSTRAR VARIABLE, comando MOSTRAR SISTEMA, comando MOSTRAR TIPOS
KCL> SH VARS
dónde:
KCL> SH ENTERO
dónde:
Objetivo:La simulación de E/S le permite probar un programa que utiliza E/S. La simulación de E/S en realidad no envía
señales de salida ni recibe señales de entrada.
Advertencia
C–48
MARRC75KR07091E Rev H C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL
Al simular un valor de puerto, puede especificar su valor simulado inicial o permitir que el valor inicial sea el
mismo que el valor del puerto físico. Si no se especifica ningún valor, se utiliza el valor del puerto físico actual.
dónde:
Las instrucciones de movimiento completas se omiten con este comando. No puede omitir segmentos de un solo
movimiento. El comando KCL> CONTINUE reanuda la ejecución de la tarea en pausa con la instrucción que sigue a la
última instrucción omitida. Las declaraciones END no se pueden omitir.
Si omite la última instrucción RETURN en una rutina de función, no hay forma de devolver el valor de la
función al programa que llama. Por lo tanto, al ejecutar la instrucción END de la rutina, la tarea se
abortará.
Si salta a un bucle FOR, ha saltado la declaración que inicializa el contador de bucles. Cuando se ejecuta la instrucción
ENDFOR, el programa intentará eliminar el contador de bucles de la pila. Si el bucle FOR estaba anidado en otro bucle
FOR, el contador de bucles del bucle FOR anterior se eliminará de la pila, lo que provocará resultados potencialmente
no válidos. Si el bucle FOR no estaba anidado, se producirá un error de subdesbordamiento de la pila, lo que provocará
la cancelación de la tarea.
Las instrucciones READ, MOVE, DELAY, WAIT FOR y PULSE se pueden pausar una vez que han comenzado a
ejecutarse. En estos casos, cuando se reanuda la tarea, la ejecución de la instrucción en pausa debe finalizar antes
de que se ejecuten las instrucciones posteriores. Las sentencias omitidas subsiguientes no se ejecutarán. En
particular, las declaraciones READ y WAIT FOR a menudo requieren la intervención del usuario, como ingresar datos,
antes de que se complete la ejecución de la declaración.
C-49
C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL MARRC75KR07091E Rev H
La operación del modo de pasos y el tipo de modo de pasos no tienen efecto en el comando KCL> SKIP.
KCL> SALTAR
Sintaxis:SALIR
Ejemplo:KCL> SALIR
dónde:
KCL> PASE EN
dónde:
RS: cree un archivo de pila de rutinas (.rs) para el acceso local a var
Objetivo:Traduce el código fuente de KAREL (archivos de tipo .KL) a código p (archivos de tipo .PC), que se
puede cargar en la memoria y ejecutar.
C-50
MARRC75KR07091E Rev H C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL
La traducción de un programa se puede cancelar utilizando la tecla CANCELAR COMANDO, CTRL-C o CTRL-Y en el
CRT/KB.
KCL> TRAN
Sintaxis:ESCRIBEfile_spec
dónde:
Objetivo:Este comando le permite mostrar el contenido del archivo ASCII especificado en el CRT/KB.
Puede especificar cualquier tipo de archivo ASCII.
Sintaxis:DESIMULAR (nombre_puerto[índice]|TODOS)
dónde:
Objetivo:Interrumpe la simulación del puerto de entrada o salida especificado. Cuando un puerto no está
simulado, el valor físico reemplaza el valor simulado.
Advertencia
Si especifica TODOS en lugar de un puerto en particular, se interrumpe la simulación en todos los puertos simulados.
C-51
C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL MARRC75KR07091E Rev H
dónde:
DONE: especifica que el procedimiento de comando espere hasta que se complete o cancele la ejecución de la tarea
actual
PAUSA: especifica que el procedimiento de comando espere hasta que la ejecución de la tarea actual se detenga,
complete o cancele.
Objetivo:Aplaza la ejecución de los comandos que siguen al comando KCL> WAIT en un procedimiento de comando hasta
que una tarea hace una pausa o completa la ejecución.
El procedimiento de comando espera hasta que se cumpla la condición especificada con el argumento DONE o
PAUSE.
C–52
Apéndice D
CÓDIGOS DE CARÁCTER
Contenido
D–1
D. CÓDIGOS DE CARÁCTER MARRC75KR07091E Rev H
Este apéndice enumera los códigos decimales numéricos ASCII y sus correspondientes caracteres ASCII,
multinacionales, gráficos y europeos implementados en el sistema KAREL. El juego de caracteres ASCII es el juego de
caracteres predeterminado para el sistema KAREL. Utilice la función incorporada de CHR, en el Apéndice A, para
acceder a los conjuntos de caracteres multinacionales y gráficos.
D–2
MARRC75KR07091E Rev H D. CÓDIGOS DE CARÁCTER
129 Borrar hasta el final de la línea 155 48 Color de primer plano negro
130 Borrar hasta el final de la ventana 155 49 color de primer plano rojo
131 Establecer la posición del cursor 155 50 Color de primer plano verde
D–3
D. CÓDIGOS DE CARÁCTER MARRC75KR07091E Rev H
137 Cursor de inicio en la ventana 155 127 Color de primer plano por defecto
D–4
MARRC75KR07091E Rev H D. CÓDIGOS DE CARÁCTER
2
018 (PU2) 050 082 Ò 114 o
3
019 (STS) 051 083 o 115 o
D–5
D. CÓDIGOS DE CARÁCTER MARRC75KR07091E Rev H
H
002 (STX) 034 " 066 B 098 T
F
003 (ETX) 035 # 067 C 099 F
C
004 (EOT) 036 ps 068 D 100 R
L
005 (ESQ) 037 % 069 mi 101 F
006 (ACK) 038 & 070 F 102
L
V
009 (HT) 041 ) 073 yo 105 T
010 (LF) 042 * 074 j 106 ┘
011 (VERMONT) 043 + 075 k 107 ┐
012 (FF) 044 ' 076 L 108 ┌
013 (CR) 045 - 077 METRO 109 └
014 (ASI QUE) 046 . 078 norte 110 +
015 (SI) 047 / 079 O 111 -
016 (DLE) 048 0 080 PAGS 112 -
017 (DC1) 049 1 081 q 113 -
018 (DC2) 050 2 082 R 114 -
019 (DC3) 051 3 083 S 115 _
020 (DC4) 052 4 084 T 116
D–6
MARRC75KR07091E Rev H D. CÓDIGOS DE CARÁCTER
5 53 185 ADELANTE
6 54 186 BWD
D–7
D. CÓDIGOS DE CARÁCTER MARRC75KR07091E Rev H
7 55 187 COORDINADOR
8 56 188 +X
9 57 189 +Y
128 ANTERIOR 190 +Z
129 F1 191 + X rotación
133 F4 194 -X
134 F5 195 - si
135 SIGUIENTE 196 -Z
143 SELECCIONE 197 - Rotación X
D–8
MARRC75KR07091E Rev H D. CÓDIGOS DE CARÁCTER
A^ = A con ^ encima
Ao = A con o arriba
A~ = A con ~ encima
A: = A con .. arriba
AE = A y E corren juntos
OE = A y E corren juntos
Sib = Beta
97 a caja solida
102 F diamante
D-9
D. CÓDIGOS DE CARÁCTER MARRC75KR07091E Rev H
123 { Pi
124 | No es igual
D-10
Apéndice E
DIAGRAMAS DE SINTAXIS
Contenido
E–1
E. DIAGRAMAS DE SINTAXIS MARRC75KR07091E Rev H
Rectángulo
Un rectángulo encierra elementos que están definidos en otro diagrama de sintaxis o en el texto
que lo acompaña.
Oval
Un óvalo encierra palabras reservadas de KAREL que se ingresan exactamente como se muestra.
Circulo
Punto
Un punto indica un final de línea obligatorio (; o tecla ENTER) antes del siguiente elemento de sintaxis.
Signo de intercalación
^
Un signo de intercalación indica un final de línea opcional.
flechas
Rama
Las ramas indican caminos o secuencias opcionales.
E-2
MARRC75KR07091E Rev H E. DIAGRAMAS DE SINTAXIS
Figura E–1.
lista de directivas
declaración de TIPO
nombre del programa
declaración VAR
PROGRAMA identificador
^ declaración CONST
Declaración de RUTINA
EMPEZAR
declaración FINAL identificador
lista
Definición de RUTINA
fin de linea
- - nueva línea
fin de linea
E-3
E. DIAGRAMAS DE SINTAXIS MARRC75KR07091E Rev H
Figura E–2.
lista de directivas
directiva
^
directiva
%ALFABETIZAR
%COMENTARIO = citado
cuerda
%CMOSVARS
%DISPOSITIVO CRT
%DEFGRUPO = (entero)
constante
%DEMORA = (entero)
constante
%AMBIENTE identificador
,
%NOABORTAR = ERROR + DOMINIO
%NOBUSYLAMP
%NOLOCKGROUP
%NOPAUSESHFT
%PRIORIDAD = (entero)
constante
%TPMOVIMIENTO
E-4
MARRC75KR07091E Rev H E. DIAGRAMAS DE SINTAXIS
Figura E–3.
= constante
^
identificador
^
CONSTITUCIÓN
constante
nombre constante
identificador
literal
=^
escribe un nombre
ESCRIBE
^ identificador
DE identificador
E–5
E. DIAGRAMAS DE SINTAXIS MARRC75KR07091E Rev H
Figura E–4.
tipo de usuario
tipo de datos
ESTRUCTURA
^
lista de campo ESTRUCTURA FINAL
lista de campo
identificador
: matriz de estructura
escribe
tipo de datos
BYTE
CORTO
E-6
MARRC75KR07091E Rev H E. DIAGRAMAS DE SINTAXIS
Figura E–5.
tipo de datos
escribe un nombre
identificador
ENTERO
REAL
BOOLEANO
VECTOR
VIS_PROCESO
MODELO
CAM_SETUP
EXPEDIENTE
CONFIGURAR
SENDERO
ENCABEZADO DE RUTA
=
^
identificador
,
nombre del tipo de estructura
DATOS DE NODO =
^
identificador
E–7
E. DIAGRAMAS DE SINTAXIS MARRC75KR07091E Rev H
Figura E–6.
EN GRUPO [ (entero) ]
Tipo de Posición
constante
tamaño de cadena
CUERDA [ (entero) ]
constante
[ (entero) ]
FORMACIÓN DE matriz de estructura
constante escribe
E-8
MARRC75KR07091E Rev H E. DIAGRAMAS DE SINTAXIS
Figura E–7.
Tipo de Posición
POSICIÓN
XYZWPR
CONJUNTOPOS1
CONJUNTOPOS2
CONJUNTOPOS3
CONJUNTOPOS4
CONJUNTOPOS5
CONJUNTOPOS6
CONJUNTOPOS7
CONJUNTOPOS8
CONJUNTOPOS9
POS CONJUNTO
XYZWPREXT
E–9
E. DIAGRAMAS DE SINTAXIS MARRC75KR07091E Rev H
Figura E–8.
nombre de la variable
VAR :
^
datos
identificador
escribe
, DE identificador
DRACMA
RUTINA identificador
DE identificador
variables locales
declaración VAR
constantes locales
declaración CONST
declaración
EMPEZAR FINAL identificador
lista
E-10
MARRC75KR07091E Rev H E. DIAGRAMAS DE SINTAXIS
Figura E–9.
escribe un nombre
identificador
ENTERO
REAL
BOOLEANO
VECTOR
CONFIGURAR
CUERDA
[ * ]
E–11
E. DIAGRAMAS DE SINTAXIS MARRC75KR07091E Rev H
Figura E–10.
tipo de parámetro
escribe un nombre
identificador
ENTERO
REAL
BOOLEANO
VECTOR
VIS_PROCESO
MODELO
CAM_SETUP
EXPEDIENTE
CONFIGURAR
SENDERO
ENCABEZAMIENTO =
^
identificador
,
nombre del tipo de estructura
DATOS DE NODO =
^
identificador
E–12
MARRC75KR07091E Rev H E. DIAGRAMAS DE SINTAXIS
Figura E–11.
EN GRUPO [ (entero) ]
Tipo de Posición
constante
CUERDA
[ * ]
E–13
E. DIAGRAMAS DE SINTAXIS MARRC75KR07091E Rev H
Figura E–12.
lista de declaraciones
declaración
^
declaración
Nombre de etiqueta
identificador ::
Declaración ABORTAR
sentencia de asignación
Declaración ADJUNTA
rutina de declaración de llamada
instrucción CANCELAR
Declaración de CONDICIÓN
instrucción DEMORA
Declaración DESHABILITAR
Declaración HABILITAR
PARA declaración
declaración IR A
Declaración de retención
declaración SI
Declaración de PAUSA
Declaración de PULSO
Declaración de PURGA
LEER declaración
declaración RELAX
Declaración de LIBERACIÓN
instrucción REPETIR
Declaración de REANUDAR
instrucción DEVOLUCIÓN
instrucción SELECCIONAR
declaración SEÑAL
declaración de PARADA
declaración UNHOLD
Declaración de USO
Declaración de ESPERA
MIENTRAS declaración
ESCRIBIR declaración
E–14
Traducido del inglés al español - www.onlinedoctranslator.com
Figura E–13.
ABORTAR - declaración
número de tarea
asignación - declaración
=
^
variable expresión
acceso
ADJUNTAR - declaración
ADJUNTAR
LLAMADA - rutina
parámetro real
nombre de la rutina
( expresión )
^
identificador
CANCELAR - declaración
GRUPO [ (entero) ]
CANCELAR
constante
variable de archivo
especificaciones de la mano
E-15
E. DIAGRAMAS DE SINTAXIS MARRC75KR07091E Rev H
Figura E–14.
,
^
CUANDO
^ acción
^
condición mundial HACER
CONDICIÓN FINAL
Y ,
condición mundial
^ O
variable de reloj
DEMORA - declaración
DEMORA (entero)
expresión
DESHABILITAR - declaración
manejador de condición
número
DESHABILITAR CONDICIÓN [ (entero) ]
expresión
E-16
MARRC75KR07091E Rev H E. DIAGRAMAS DE SINTAXIS
Figura E–15.
variable de reloj
ENABLE - declaración
manejador de condiciones-
número
PARA - declaración
A
variable de conteo valor inicial
= ^ (entero)
^
POR (entero) expresión
identificador
ABAJO A
IR A - declaración
IR
Nombre de etiqueta
(destino)
VAMOS A identificador
etiqueta de declaración
MANTENER - declaración
GRUPO [ (entero) ]
MANTENER
constante
,
^
SI ENTONCES - declaración
verdadera alternativa
alternativa falsa
SI MÁS declaración
^
(booleano) DESPUÉS declaración TERMINARA SI
lista lista
expresión
E-17
E. DIAGRAMAS DE SINTAXIS MARRC75KR07091E Rev H
Figura E–16.
variable de archivo
especificación de uso
variable
( ,
^ ^
ABIERTO (cuerda)
EXPEDIENTE
acceso
expresión
especificación de archivo
(cuerda) )
expresión
especificaciones de la mano
PAUSA - declaración
número de tarea
PULSO - declaración
especificación de tiempo (ms)
número de puerto
DOUT Ger) ] FOR (entero) NO, ESPERA
[
^
LEGUMBRES (entre
identificador
expresión
RDO
PURGA - declaración
manejador de condiciones
número
PURGA CONDICIÓN [ (entero) ]
expresión
E-18
MARRC75KR07091E Rev H E. DIAGRAMAS DE SINTAXIS
Figura E–17.
LEER - declaración
variable de archivo
variable
LEER ( )
^
acceso leer
artículo
RC
variable
:: (entero) :: (entero)
acceso
expresión expresión
RELÁJATE - declaración
especificaciones de la mano
LIBERACIÓN - declaración
LIBERAR
REPETIR - declaración
cuerpo de bucle
declaración booleano
REPETIR HASTA QUE
expresión
lista
RESUMEN - declaración
GRUPO [ (entero) ]
REANUDAR
constante
E–19
E. DIAGRAMAS DE SINTAXIS MARRC75KR07091E Rev H
Figura E–18.
RETORNO - declaración
valor de retorno
( )
^
DEVOLVER expresión
SELECCIONAR - declaración
^
expresión lista
constante
otra alternativa
MÁS : declaración ENDSELECT
lista
SEÑAL - declaración
numero de evento
ALTO - declaración
GRUPO [ (entero) ]
DETÉNGASE
constante
UNHOLD - declaración
GRUPO [ (entero) ]
DESMANEJAR
constante
,
^
E–20
MARRC75KR07091E Rev H E. DIAGRAMAS DE SINTAXIS
Figura E–19.
ESPERA - declaración
POR global
^
ESPERE
condición
MIENTRAS - declaración
cuerpo de bucle
ENTREVISTA
^
HACER
TIEMPO (booleano) declaración
expresión lista
ESCRIBIR - declaración
variable de archivo
variable escribe
( )
^
ESCRIBE acceso artículo
escribir elemento
RC
1er formato 2do formato
Especificaciones Especificaciones
(entero) (entero)
expresión :: ::
expresión expresión
E–21
E. DIAGRAMAS DE SINTAXIS MARRC75KR07091E Rev H
Figura E–20.
condición mundial
( global
^
)
condición
ERROR
error/evento/sema-
número de foro
[ (entero) ]
EVENTO
expresión
SEMÁFORO *
ABORTAR
número de tarea
PAUSA PROGRAMA [ (entero) ]
expresión
SEGUIR
ENCENDER
variable = variable
acceso
^ acceso
<>
< EVALUAR
<=
>
( Exp )
>=
constante
NO
E–22
MARRC75KR07091E Rev H E. DIAGRAMAS DE SINTAXIS
Figura E–21.
MANTENER
DESMANEJAR
DETÉNGASE
CANCELAR
NO ABORTAR
SIN PAUSA
DESPAUSAR
SIN MENSAJE
RESTAURAR
HABILITAR
comanejador de condiciones nu ámbar
CONDICIÓN [ (entero) ]
expresión
DESHABILITAR
vísperant/semáforo nu ámbar
SEÑAL EVENTO [ ]
(entero)
expresión
SEMÁFORO
RDO
expresión
^ expresión
procedimiento nombre
identificador
E–23
E. DIAGRAMAS DE SINTAXIS MARRC75KR07091E Rev H
Figura E–22.
constante
variable
=
acceso
^ port variable na yo índice de puerto
identificador
[ (entero) ]
expresión
ABORTAR
número de tarea
SEGUIR PROGRAMA [ (entero) ]
expresión
PAUSA
E–24
MARRC75KR07091E Rev H E. DIAGRAMAS DE SINTAXIS
Figura E–23.
acceso variable
var/puerto/campo/nombre de parámetro
identificador
acceso variable .
identificador
índice de matriz
^
nombre de ruta
índice de nodo de inicio índice de nodo final
expresión
suma
<>
<
<=
>
>=
> =<
E–25
E. DIAGRAMAS DE SINTAXIS MARRC75KR07091E Rev H
Figura E–24.
suma
producto
+ ^
O
^
+
producto
factor
^
/
DIV
MODIFICACIÓN
factor
primario
NO ^
:
^
@
E–26
MARRC75KR07091E Rev H E. DIAGRAMAS DE SINTAXIS
Figura E–25.
primario
acceso variable
constante
( )
^
expresión
nombre de la función
identificador
parámetro real
( expresión )
^
,
literal
personaje
no firmado
numérico
valor
E–27
MARRC75KR07091E Rev H Glosario
Glosario
A
abortar
Terminación anormal de un programa de computadora causada por un mal funcionamiento del hardware o software o por la
cancelación del operador.
valor A/D
Un valor analógico a digital. Convierte un patrón de sistema eléctrico analógico multinivel en un bit digital.
AI
Entrada analogica.
OA
Salida analógica.
alarma
La diferencia de valor entre la respuesta real y la respuesta deseada en el desempeño de una
máquina, sistema o proceso controlado. Alarma=Error.
algoritmo
Un procedimiento paso a paso fijo para lograr un resultado dado.
alfanumérico
Datos que son tanto alfabéticos como numéricos.
E-28
Glosario MARRC75KR07091E Rev H
AMPERIOS
Cantidad de amperaje.
cosa análoga
La representación de cantidades numéricas por cantidades medibles como longitud, voltaje o resistencia. También
se refiere a bloques de E/S de tipo analógico y los distingue de los bloques de E/S discretos. Datos numéricos que
pueden variar continuamente, por ejemplo, niveles de voltaje que pueden variar dentro del rango de -10 a +10
voltios.
Y
Una operación que coloca dos contactos o grupos de contactos en serie. Todos los contactos en serie controlan el
estado resultante y también el operador matemático.
ANSI
American National Standard Institute, la organización del gobierno de EE. UU. responsable del
desarrollo y anuncio de estándares de datos técnicos.
APC
Ver sistema de código de pulso absoluto.
motor APC
Ver servomotor.
programa de aplicación
El conjunto de instrucciones que define las tareas específicas previstas de los robots y sistemas de robots
para hacerlos reprogramables y multifuncionales. Puede iniciar y cambiar estos programas.
brazo
Un componente de robot que consta de un conjunto interconectado de enlaces y articulaciones motorizadas que mueven y
sostienen el encaje de la muñeca y el efector final.
brazo articulado
Un brazo robótico construido para simular el brazo humano, que consta de una serie de articulaciones y movimientos rotatorios,
cada uno accionado por un motor.
ASCII
Abreviatura de Código Estándar Estadounidense para el Intercambio de Información. Un código de 8 niveles (7 bits más 1 bit de
paridad) comúnmente utilizado para el intercambio de datos.
modo automatico
El estado del robot en el que se puede iniciar la operación automática.
operación automática
El tiempo durante el cual los robots realizan tareas programadas a través de la ejecución de programas sin
supervisión.
E–29
MARRC75KR07091E Rev H Glosario
eje
1. Una línea recta sobre la cual gira o se mueve una articulación robótica. 2. Una de las líneas de referencia o un sistema
de coordenadas. 3. Una única articulación en el brazo del robot.
B
backplane
Un grupo de conectores montados en la parte posterior de un bastidor de controlador al que se acoplan las placas de circuito
impreso.
BAR
Unidad de presión igual a 100.000 pascales.
barrera
Un medio para separar físicamente a las personas del entorno de trabajo restringido; cualquier límite físico a un
peligro o dispositivo/componente eléctrico.
baudios
Una unidad de velocidad de transmisión igual al número de elementos de código (bits) por segundo.
big-endian
Los adjetivos big-endian y little-endian se refieren a qué bytes son más significativos en los tipos de datos de varios bytes y
describen el orden en que se almacena una secuencia de bytes en la memoria de una computadora. En un sistema big-endian,
el valor más significativo de la secuencia se almacena en la dirección de almacenamiento más baja (es decir, primero). En un
sistema little-endian, el valor menos significativo de la secuencia se almacena primero.
binario
Un sistema de numeración que usa solo 0 y 1.
un poco
Contracción de dígito binario. 1. La unidad de información más pequeña en el sistema numérico binario,
representada por un 0 o un 1. 2. La división más pequeña de una palabra de controlador programable.
bps
Bits por segundo.
buffer
Un área de almacenamiento en la computadora donde los datos se guardan temporalmente hasta que la computadora pueda procesarlos.
autobús
E–30
Glosario MARRC75KR07091E Rev H
controlador de autobús
escaneo de autobús
byte
Una secuencia de dígitos binarios que se puede usar para almacenar un valor de 0 a 255 y generalmente se opera como una unidad.
Consta de ocho bits que se utilizan para almacenar dos caracteres numéricos o uno alfabético.
C
calibración
El proceso mediante el cual el ángulo de articulación de cada eje se calcula a partir de un punto de referencia conocido.
Coordenadas cartesianas
Un conjunto de tres números que define la ubicación de un punto dentro de un sistema de coordenadas rectilíneas y
que consta de tres ejes perpendiculares (x, y, z).
canal
El dispositivo a lo largo del cual fluyen los datos entre las unidades de entrada/salida de una computadora y el almacenamiento primario.
personaje
Uno de un conjunto de elementos que se pueden organizar en grupos ordenados para expresar información. Cada
carácter tiene dos formas: 1. una forma inteligible por el hombre, el gráfico, incluidos los dígitos decimales 0-9, las
letras AZ, los signos de puntuación y otros símbolos de formato y control; 2. una forma inteligible por computadora, el
código, que consta de un grupo de dígitos binarios (bits).
circular
Una opción de MOTYPE en la que el punto central de la herramienta del robot se mueve en un arco definido por tres puntos. Estos
puntos pueden ser posiciones o nodos de ruta.
E-31
MARRC75KR07091E Rev H Glosario
claro
Para reemplazar información en una unidad de almacenamiento por cero (o en blanco, en algunas máquinas).
bucle cerrado
Un sistema de control que utiliza retroalimentación. Un sistema de control de lazo abierto no usa retroalimentación.
RAM C-MOS
Memoria complementaria de acceso aleatorio de semiconductores de óxido de metal. Una memoria de lectura/escritura
en la que la celda de memoria básica es un par de transistores MOS (semiconductor de óxido de metal). Es una
implementación de S-RAM que tiene un consumo de energía muy bajo, pero puede ser menos densa que otras
implementaciones de S-RAM.
cable coaxial
Una línea de transmisión en la que un conductor está centrado en el interior y aislado de un tubo de metal exterior
que sirve como segundo conductor. También conocido como coaxial, línea coaxial, línea de transmisión coaxial, cable
concéntrico, línea concéntrica, línea de transmisión concéntrica.
componente
Término inclusivo que se utiliza para identificar una materia prima, un ingrediente, una pieza o un subensamblaje que pasa a un
nivel superior de ensamblaje, compuesto u otro elemento.
computadora
Un dispositivo capaz de aceptar información, aplicar procesos prescritos a la información y
proporcionar los resultados de estos procesos.
configuración
Las posiciones conjuntas de un robot y el número de giros de la muñeca que describen al robot en una posición específica. La
configuración se designa mediante un valor STRING y se incluye en los datos de posición.
camino continuo
Un sistema de control de trayectoria que permite que el brazo del robot se mueva a una velocidad punta constante a través de
una serie de ubicaciones predefinidas. Se requiere un efecto de redondeo de la ruta cuando la punta intenta pasar por estos
lugares.
producción continua
Un sistema de producción en el que el equipo productivo está organizado y secuenciado de acuerdo con los pasos
necesarios para producir el producto. Indica que el flujo de material es continuo durante el proceso de producción. El
enrutamiento de los trabajos es fijo y las configuraciones rara vez se cambian.
parada controlada
Una parada controlada controla la desaceleración del robot hasta que se detiene. Cuando se abre una entrada de parada de seguridad, como
una señal de valla de seguridad, el robot desacelera de manera controlada y luego se detiene. Después de que el robot se detiene, el contactor
de control del motor se abre y se desconecta la alimentación de la unidad.
E–32
Glosario MARRC75KR07091E Rev H
controlador
Una unidad de hardware que contiene la fuente de alimentación, los controles del operador, los circuitos de control y la
memoria que dirige la operación y el movimiento del robot y las comunicaciones con dispositivos externos. Ver unidad de
control.
unidad de control
La parte de una computadora que dirige la operación automática de la computadora, interpreta las instrucciones de la
computadora e inicia las señales adecuadas a los otros circuitos de la computadora para ejecutar las instrucciones.
sistema coordinado
Ver sistema de coordenadas cartesianas.
UPC
Véase unidad central de procesamiento.
cps (viscosidad)
Centipoises por segundo.
CRT/KB
Tubo de rayos catódicos/teclado. Un dispositivo de interfaz opcional para el sistema de robot. El CRT/KB se usa para algunas
operaciones de robot y para ingresar programas. Puede ser un dispositivo remoto que se conecta al robot a través de un
cable.
ciclo
1. Una secuencia de operaciones que se repite regularmente. El tiempo que tarda en ocurrir una de esas
secuencias. 2. El intervalo de tiempo durante el cual un sistema o proceso, como la demanda estacional o una
operación de fabricación, vuelve periódicamente a condiciones iniciales similares. 3. El intervalo de tiempo durante
el cual se completa un evento o conjunto de eventos. En el control de producción, un ciclo es el tiempo que
transcurre entre la liberación de una orden de fabricación y el envío al cliente o al inventario.
1. En ingeniería industrial, el tiempo entre la finalización de dos unidades discretas de producción. 2. En la gestión de
materiales, el tiempo que transcurre desde que el material entra en una instalación de producción hasta que sale.
Ver rendimiento.
E–33
MARRC75KR07091E Rev H Glosario
cursor
Un indicador en una pantalla colgante o CRT en la que se produce la entrada o edición de comandos. El
indicador puede ser un campo resaltado o una flecha (> o ^).
cilíndrico
Tipo de envolvente de trabajo que tiene dos ejes principales lineales y un eje principal de rotación. Dispositivo robótico que debido a su
diseño tiene una envolvente de trabajo predominantemente cilíndrica. Por lo general, tiene menos de 6 articulaciones y, por lo general,
solo tiene 1 eje lineal.
D
Convertidor D/A
Un convertidor de digital a analógico. Un dispositivo que transforma datos digitales en datos analógicos.
valor D/A
Un valor de digital a analógico. Convierte un patrón de bits digital en un sistema eléctrico analógico multinivel.
cadena de margaritas
Un medio para conectar dispositivos (lectores, impresoras, etc.) a un procesador central mediante buses de entrada/salida de línea
compartida que unen estos dispositivos mediante conectores macho y hembra. El último conector hembra está cortocircuitado por una
terminación de línea adecuada.
configuración en cadena
Un enlace de comunicaciones formado por una conexión en cadena tipo margarita de un cable de par trenzado.
datos
Una colección de hechos, caracteres numéricos y alfabéticos, o cualquier representación de información que sea
adecuada para la comunicación y el procesamiento.
base de datos
Una filosofía de archivo de datos diseñada para establecer la independencia del programa de computadora de los archivos de
datos. Se minimiza la redundancia y se pueden agregar o eliminar elementos de datos de los diseños de archivos sin cambiar
los programas informáticos existentes.
corriente continua
Un interruptor de control en la consola portátil que se usa para habilitar la potencia del servo. Al presionar el interruptor DEADMAN
mientras el dispositivo de enseñanza está encendido, se activa la potencia del servo y se liberan los frenos del robot; soltar el
interruptor desactiva la alimentación del servo y aplica los frenos del robot.
depuración
El proceso de detección, localización y eliminación de errores de un programa informático o sistema de control
de fabricación. Ver rutina de diagnóstico.
E-34
Glosario MARRC75KR07091E Rev H
tolerancia de desaceleración
La especificación del porcentaje de desaceleración que debe completarse antes de que un movimiento se
considere terminado y pueda comenzar otro movimiento.
defecto
El valor, pantalla, función o programa seleccionado automáticamente si no ha especificado una opción.
desviación
Por lo general, la diferencia absoluta entre un número y la media de un conjunto de números, o entre un
valor de pronóstico y los datos reales.
dispositivo
Cualquier tipo de hardware de control, como un botón de parada de emergencia, un interruptor selector, un control colgante, un
relé, una válvula solenoide o un sensor.
rutina diagnóstica
Un programa de prueba utilizado para detectar e identificar fallas de hardware/software en el controlador
y su equipo de E/S asociado. Ver depuración.
diagnóstico
Información que permite la identificación y evaluación de las condiciones del robot y de los dispositivos periféricos.
digital
Una descripción de cualquier dato que se exprese en formato numérico. Además, teniendo los estados On y Off solamente.
controles digitales
El uso de una computadora digital para realizar tareas de procesamiento y control de una manera más
precisa y menos costosa que un sistema de control analógico.
señal digital
Una señal de control de un solo punto enviada hacia o desde el controlador. La señal representa uno de dos estados: ENCENDIDO
(VERDADERO, 1. o APAGADO (FALSO, 0).
directorio
Una lista de los archivos almacenados en un dispositivo.
discreto
Consta de entidades individuales y distintas, como bits, caracteres, circuitos o componentes de circuitos. También se
refiere a bloques de E/S de tipo ON/OFF.
disco
Un dispositivo de memoria secundaria en el que la información se almacena en un disco giratorio magnéticamente sensible.
memoria de disco
Una memoria de acceso aleatorio, de almacenamiento masivo y no programable que consta de un recubrimiento magnetizado en
uno o ambos lados de una placa circular delgada giratoria.
E–35
MARRC75KR07091E Rev H Glosario
potencia de accionamiento
La fuente o fuentes de energía para los servomotores del robot que producen movimiento.
DRACMA
Memoria dinámica de acceso aleatorio. Una memoria de lectura/escritura en la que la celda de memoria básica es un
condensador. DRAM (o D-RAM) tiende a tener una mayor densidad que SRAM (o S-RAM). Debido al circuito de soporte
requerido y las necesidades de consumo de energía, generalmente no es práctico de usar. Se puede usar una batería para
retener el contenido en caso de pérdida de energía.
mi
editar
1. Un modo de software que permite la creación o modificación de un programa. 2. Para modificar la forma o el formato de
los datos, por ejemplo, para insertar o eliminar caracteres.
parada de emergencia
El funcionamiento de un circuito que utiliza componentes basados en hardware que anula todos los demás controles del robot,
elimina la potencia de accionamiento de los actuadores y hace que se detengan todas las piezas móviles. El panel del operador y la
consola portátil están equipados con botones de PARADA DE EMERGENCIA.
dispositivo habilitador
Un dispositivo operado manualmente que, cuando se activa continuamente, permite el movimiento. Al soltar el dispositivo, se
detiene el movimiento del robot y del equipo asociado que podría representar un peligro.
codificador
1. Un dispositivo dentro del robot que envía al controlador información sobre dónde se encuentra el robot. 2. Un transductor utilizado
para convertir datos de posición en señales eléctricas. El sistema de robot utiliza un codificador óptico incremental para proporcionar
retroalimentación de posición para cada articulación. Los datos de velocidad se calculan a partir de las señales del codificador y se
utilizan como una señal de retroalimentación adicional para asegurar la estabilidad del servo.
efector final
Una herramienta o dispositivo accesorio diseñado específicamente para acoplarse a la muñeca del robot o a la placa de montaje de la herramienta para
permitir que el robot realice las tareas previstas. Los ejemplos incluyen pinzas, pistolas de soldadura por puntos, pistolas de soldadura por arco, pistolas de
Cualquiera de una serie de herramientas, como pistolas de soldar, sopletes, campanas, dispositivos de pulverización de pintura, unidos
a la placa frontal de la muñeca del robot. También llamado efector final o EOAT.
unidades de ingeniería
Unidades de medida aplicadas a una variable de proceso, por ejemplo, psi, grados F, etc.
sobre, máximo
El volumen de espacio que abarca los movimientos máximos diseñados de todas las partes del robot, incluido el
efector final, la pieza de trabajo y los accesorios.
E–36
Glosario MARRC75KR07091E Rev H
EOAT
Véase utillaje de extremo de brazo, herramienta.
EPROM
Memoria de sólo lectura programable y borrable. Memoria de semiconductores que se puede borrar y
reprogramar. Una memoria de almacenamiento no volátil.
error
La diferencia de valor entre la respuesta real y la respuesta deseada en el desempeño de una
máquina, sistema o proceso controlado. Alarma=Error.
mensaje de error
Un mensaje numerado, que se muestra en el CRT/KB y en el colgante de programación, que indica un problema del sistema o
advierte de un problema potencial.
ethernet
Tecnología de hardware orientada a bus de red de área local (LAN) que se utiliza para conectar computadoras,
impresoras, concentradores de terminales (servidores) y muchos otros dispositivos. Consiste en un cable maestro y
dispositivos de conexión en cada máquina del cable que permiten que los distintos dispositivos "hablen" entre sí. Es
necesario un software que pueda acceder a Ethernet y cooperar con las máquinas conectadas al cable. Los Ethernets
vienen en variedades como banda base y banda ancha y pueden ejecutarse en diferentes medios, como coaxial, par
trenzado y fibra. Ethernet es una marca comercial de Xerox Corporation.
ejecutar
Para realizar una operación específica, como una que se lograría mediante el procesamiento de una
instrucción o comando, una serie de instrucciones o comandos, o un programa o procedimiento de
comando completo.
eje extendido
Un eje servocontrolado opcional que brinda capacidad de alcance extendido para un robot, incluido el riel en la cabina, brazo de
enlace simple o doble, que también se usa para controlar el movimiento de los dispositivos de posicionamiento.
F
placa frontal
La placa de montaje de herramientas del robot.
retroalimentación
1. La señal o datos retroalimentados a una unidad de comando desde una máquina o proceso controlado para
indicar su respuesta a la señal de comando. La señal que representa la diferencia entre la respuesta real y la
respuesta deseada que utiliza la unidad de mando para mejorar el rendimiento de la máquina o proceso
controlado. 2. El flujo de información de vuelta al sistema de control para que el rendimiento real pueda
compararse con el rendimiento planificado, por ejemplo, en un servosistema.
E–37
MARRC75KR07091E Rev H Glosario
campo
Un área específica de un registro utilizado para una categoría particular de datos. 2. Un grupo de elementos relacionados que ocupan el
mismo espacio en una pantalla CRT/KB o en una pantalla LCD colgante de aprendizaje. Nombre de campo es el nombre del campo; los
elementos de campo son los miembros del grupo.
dispositivos de campo
Dispositivos proporcionados por el usuario que brindan información al PLC (entradas: botones pulsadores, interruptores de
límite, contactos de relé, etc.) o realizan tareas de PLC (salidas: arrancadores de motor, solenoides, luces indicadoras, etc.)
expediente
1. Una colección organizada de registros que se pueden almacenar o recuperar por nombre. 2. El dispositivo de almacenamiento en el
que se guardan estos registros, como una memoria de burbujas o un disco.
filtrar
Un dispositivo para suprimir la interferencia que aparecería como ruido.
Una porción de la memoria FROM que funciona como un dispositivo de almacenamiento separado. Cualquier archivo se puede almacenar en
el disco DESDE.
memoria flash
Memoria flash de solo lectura. Flash ROM no es una memoria respaldada por batería, pero no es volátil. Todos los datos en
Flash ROM se guardan incluso después de apagar y encender el robot.
diagrama de flujo
Una herramienta de análisis de sistemas para mostrar gráficamente un procedimiento en el que se utilizan símbolos para
representar operaciones, datos, flujo y equipo. Ver diagrama de bloques, diagrama de proceso.
control de flujo
Un sistema de control de producción específico que se basa principalmente en establecer tasas de producción e introducir
trabajo en producción para cumplir con las tasas planificadas, y luego seguirlo a través de la producción para asegurarse de
que se está moviendo. Este concepto tiene más éxito en la producción repetitiva.
formato
Para configurar o preparar una tarjeta de memoria o disquete (no compatible con la versión 7.20 y posteriores) para que pueda
usarse para almacenar datos en un sistema específico.
FR
Véase FlashROM.
DE
Véase FlashROM.
DESDE el disco
Véase FlashROM.
E–38
Glosario MARRC75KR07091E Rev H
GRAMO
pinza
La "mano" de un robot que levanta, sujeta y suelta la pieza u objeto que se está manipulando. A veces se lo
denomina manipulador. Ver EOAT, herramienta.
señal de grupo
Una señal de entrada/salida que tiene un número variable de señales digitales, reconocidas y tomadas como un grupo.
pistola
Ver aplicador.
H
Modelo de mano.
Utilizado en la comprobación de interferencias, el modelo de mano es el conjunto de elementos del modelo virtual (esferas y cilindros)
que se utilizan para representar la ubicación y la forma de las herramientas del extremo del brazo con respecto a la placa frontal del
robot.
hardware
1. En procesamiento de datos, los dispositivos mecánicos, magnéticos, eléctricos y electrónicos de los que se construye
una computadora, controlador, robot o panel. 2. En la fabricación, elementos relativamente estándar como tuercas,
pernos, arandelas, clips, etc.
cable duro
Para conectar componentes eléctricos con hilos metálicos macizos.
cableado
1. Tener un programa o sistema de control cableado fijo incorporado por el fabricante y no sujeto a cambios
por programación. 2. Interconexión de dispositivos eléctricos y electrónicos directamente a través de
cableado físico.
movimiento peligroso
Movimiento del robot no intencionado o inesperado que puede causar lesiones.
hexadecimal
Un sistema de numeración que tiene como base el 16 y está representado por los dígitos del 0 al 9 y de la A a la F.
E–39
MARRC75KR07091E Rev H Glosario
mantener
Una detención suavemente desacelerada de todo el movimiento del robot y una pausa en la ejecución del programa. La energía se
mantiene en el robot y la ejecución del programa generalmente se puede reanudar desde una espera.
HTML.
Lenguaje de marcado de hipertexto. Un lenguaje de marcado que se utiliza para crear documentos de hipertexto e
hipermedia que incorporan texto, gráficos, sonido, video e hipervínculos.
http.
Protocolo de Transferencia de Hipertexto. El protocolo utilizado para transferir archivos HTML entre servidores web.
yo
impedancia
Una medida de la oposición total al flujo de corriente en un circuito eléctrico.
índice
Un número entero que se utiliza para especificar la ubicación de la información dentro de una tabla o programa.
registro de índice
Un dispositivo de memoria que contiene un índice.
robot industrial
Un manipulador multifuncional reprogramable diseñado para mover materiales, piezas, herramientas o dispositivos
especializados a través de movimientos programados variables para realizar una variedad de tareas.
información
El significado derivado de los datos que se han organizado y mostrado de manera que se relacionen con lo
que ya se conoce. Ver datos.
inicializar
1. Establecer todas las áreas variables de un programa o rutina de computadora en su estado inicial deseado, generalmente se hace la
primera vez que se ejecuta el código durante cada ejecución. 2. Un programa o circuito de hardware que devuelve un programa, un
sistema o un dispositivo de hardware a su estado original. Véase puesta en marcha, inicial.
E-40
Glosario MARRC75KR07091E Rev H
aporte
Los datos suministrados desde un dispositivo externo a una computadora para su procesamiento. El dispositivo utilizado
para lograr esta transferencia de datos.
dispositivo de entrada
Un dispositivo como un teclado de terminal que, a través de una acción mecánica o eléctrica, convierte los datos de la forma en
que se recibieron en señales electrónicas que pueden ser interpretadas por la CPU o el controlador programable. Algunos
ejemplos son los interruptores de límite, los botones pulsadores, los interruptores de presión, los codificadores digitales y los
dispositivos analógicos.
de entrada y salida
Información o señales transferidas entre dispositivos, señales eléctricas discretas para control externo.
control de entrada/salida
Una técnica para controlar la capacidad donde la producción real de un centro de trabajo se compara con la producción
planificada desarrollada por CRP. La entrada también se supervisa para ver si se corresponde con los planes, de modo que no
se espere que los centros de trabajo generen una salida cuando los trabajos no estén disponibles para trabajar.
circuito integrado
Un microcircuito de estado sólido contenido completamente dentro de un chip de material semiconductor, generalmente silicio.
También llamado chip.
interactivo
Se refiere a aplicaciones en las que te comunicas con un programa de computadora a través de una terminal ingresando
datos y recibiendo respuestas de la computadora.
interfaz
1. Concepto que involucra las especificaciones de la interconexión entre dos equipos con funciones
diferentes. 2. Para conectar un PLC con el dispositivo de aplicación, canal de comunicaciones y periféricos
a través de varios módulos y cables. 3. El método o equipo utilizado para comunicarse entre dispositivos.
zona de interferencia
Un área que cae dentro de la envolvente de trabajo de un robot, en la que existe la posibilidad de que el
movimiento del robot coincida con el movimiento de otro robot o máquina, y que ocurra una colisión.
entrelazar
Un arreglo por el cual la operación de un control o mecanismo produce, o previene, las
operaciones de otro.
interrumpir
Una interrupción en el flujo normal de un sistema o programa que ocurre de manera que el flujo puede reanudarse desde ese
punto en un momento posterior. Las interrupciones son iniciadas por dos tipos de señales: 1. señales que se originan dentro
del sistema informático para sincronizar el funcionamiento del sistema informático con el exterior
E–41
MARRC75KR07091E Rev H Glosario
mundo; 2. Señales que se originan en el exterior del sistema informático para sincronizar el funcionamiento del
sistema informático con el mundo exterior.
E/S
Abreviatura de entrada/salida o control de entrada/salida.
bloque de E/S
Un dispositivo de estado sólido resistente, configurable y basado en microprocesador al que se conectan dispositivos de E/S de
campo.
módulo de E/S
Un conjunto de circuito impreso que es la interfaz entre los dispositivos de usuario y el PLC Series Six.
exploración de E/S
Un método por el cual la CPU monitorea todas las entradas y controla todas las salidas dentro de un tiempo prescrito. Un
período durante el cual cada dispositivo en el bus recibe un turno para enviar información y escuchar todos los datos de
transmisión en el bus.
YO ASI
aislamiento
1. La capacidad de un circuito lógico que tiene más de una entrada para asegurar que cada señal de entrada no se vea afectada por
ninguna de las otras. 2. Un método para separar los circuitos de cableado de campo de los circuitos de nivel lógico, que
generalmente se realiza de manera óptica.
artículo
1. Una categoría que se muestra en la consola portátil en un menú. 2. Un conjunto de dígitos, bits o caracteres
adyacentes que se trata como una unidad y transmite una sola unidad de información. 3. Cualquier pieza o ensamblaje
único fabricado o comprado: producto final, ensamblaje, subensamblaje, componente o materia prima.
j
sistemas de coordenadas jog
Coordine sistemas que lo ayuden a mover el robot de manera más efectiva para una aplicación específica. Estos
sistemas incluyen CONJUNTO, MUNDO, HERRAMIENTA y USUARIO.
CUADRO DE AVANCE
Un sistema de coordenadas de avance que usted define para hacer que el robot avance de la mejor manera posible para una aplicación
trotar
Presionando teclas especiales en el colgante de enseñanza para mover el robot.
E–42
Glosario MARRC75KR07091E Rev H
velocidad de trote
articulación
1. Un solo eje de rotación. Hay hasta seis articulaciones en un brazo robótico (el brazo oscilante P-155 tiene 8). 2.
Un sistema de coordenadas jog en el que se mueve un eje a la vez.
ARTICULACIÓN
Un tipo de movimiento en el que el robot mueve la combinación adecuada de ejes de forma independiente para llegar a un
punto de la manera más eficiente. (Punto a punto, movimiento no lineal).
k
k
Abreviatura de kilo, o exactamente 1024 en la jerga informática. Relacionado con 1024 palabras de memoria.
CAREL
El lenguaje de programación desarrollado para robots por FANUC America Corporation.
L
etiqueta
Conjunto ordenado de caracteres que se utiliza para identificar simbólicamente una instrucción, un programa, una cantidad o un área
de datos.
LCD
Ver pantalla de cristal líquido.
tiempo de espera
El lapso de tiempo necesario para realizar una actividad. En el contexto de producción y control de inventario, esta actividad es
normalmente la adquisición de materiales y/o productos de un proveedor externo o de la propia planta de fabricación. Los
componentes del tiempo de entrega pueden incluir el tiempo de preparación del pedido, el tiempo de espera, el tiempo de
movimiento o transporte, el tiempo de recepción e inspección.
DIRIGIÓ
Pantalla LED
Una pantalla alfanumérica que consta de una matriz de LED.
E–43
MARRC75KR07091E Rev H Glosario
dispositivo limitador
Un dispositivo que restringe el entorno de trabajo al detener o hacer que se detenga todo el movimiento del robot y que es
independiente del programa de control y los programas de aplicación.
límite de cambio
Un interruptor que es accionado por alguna parte o movimiento de una máquina o equipo para alterar el circuito eléctrico
asociado con él. Se puede utilizar para la detección de posición.
lineal
Un tipo de movimiento en el que se mueve la combinación adecuada de ejes para mover el TCP del robot en línea recta
mientras se mantiene la orientación del punto central de la herramienta.
little-endian
Los adjetivos big-endian y little-endian se refieren a qué bytes son más significativos en los tipos de datos de varios bytes y
describen el orden en que se almacena una secuencia de bytes en la memoria de una computadora. En un sistema big-endian,
el valor más significativo de la secuencia se almacena en la dirección de almacenamiento más baja (es decir, primero). En un
sistema little-endian, el valor menos significativo de la secuencia se almacena primero.
carga
1. El peso (fuerza) aplicado al extremo del brazo robótico. 2. Un dispositivo colocado intencionalmente en un circuito o
conectado a una máquina o aparato para absorber energía y convertirla en la forma útil deseada. 3. Para copiar
programas o datos en el almacenamiento de memoria.
ubicación
1. Una posición de almacenamiento en la memoria especificada únicamente por una dirección. 2. Las coordenadas de un objeto
utilizadas para describir su posición x, y y z en un sistema de coordenadas cartesianas.
bloqueo y etiquetado
La colocación de un candado y/o etiqueta en el dispositivo de aislamiento de energía (dispositivo de desconexión de energía) en
la posición de apagado o abierto. Esto indica que el dispositivo de aislamiento de energía o el equipo que se controla no se
operará hasta que se retire el candado/etiqueta.
Iniciar sesión
lógica
Un conjunto fijo de respuestas (salidas) a varias condiciones externas (entradas). También conocido como el
programa.
círculo
La ejecución repetida de una serie de instrucciones por un número fijo de veces, o hasta que sea interrumpida por
el operador.
E–44
Glosario MARRC75KR07091E Rev H
METRO
mamá
Véase miliamperios.
Lenguaje de máquina
Un lenguaje escrito en una serie de bits que son comprensibles y, por lo tanto, instruyen a una computadora. Este es un
lenguaje informático de "primer nivel", en comparación con un lenguaje ensamblador de "segundo nivel" o un lenguaje
compilador de "tercer nivel".
bloqueo de la máquina
Una opción de ejecución de prueba que permite al operador ejecutar un programa sin que el robot se mueva.
macro
Instrucción en lenguaje fuente a partir de la cual se pueden generar muchas instrucciones en lenguaje máquina.
disco magnetico
Un disquete de metal o plástico (no compatible con la versión 7.10 y posteriores) que parece un disco fonográfico
cuya superficie puede almacenar datos en forma de puntos magnetizados.
cinta magnética
Cinta de plástico, como la que se usa en las grabadoras, en la que se almacenan los datos en forma de puntos imantados.
mantenimiento
Mantener los robots y el sistema en su correcto estado de funcionamiento.
MC
Véase tarjeta de memoria.
unidad mecanica
El brazo robótico, incluido el eje auxiliar, y los abridores de capó/plataforma y puertas.
medio
pluralmedios de comunicación.La sustancia física en la que se graban los datos, como una tarjeta de memoria (o un disquete
que no es compatible con la versión 7.10 y posteriores).
memoria
Un dispositivo o medio utilizado para almacenar información en una forma que puede ser recuperada y entendida
por la computadora o el hardware del controlador. La memoria del controlador incluye C-MOS RAM, Flash ROM y
D-RAM.
tarjeta de memoria
Una tarjeta de memoria RAM C-MOS o una tarjeta de PC basada en disco flash.
E–45
MARRC75KR07091E Rev H Glosario
menú
Una lista de opciones que se muestran en la pantalla de la consola portátil.
mensaje
Un grupo de palabras, de longitud variable, que transportan un elemento de información.
microprocesador
Un solo circuito integrado que contiene los elementos aritméticos, lógicos, de registro, de control y de memoria de una
computadora.
microsegundo
Una millonésima (0.000001) de segundo
miliamperio
Una milésima parte de un amperio. mA abreviado.
milisegundo
Una milésima de segundo. mseg abreviado.
módulo
Una unidad distinta e identificable de programa de computadora para fines tales como compilación, carga y
edición de enlaces. Eventualmente se combina con otras unidades para formar un programa completo.
tipo de movimiento
Una función que le permite seleccionar cómo desea que el robot se mueva de un punto al siguiente. Los
MOTIPOS incluyen conjuntos, lineales y circulares.
modo
1. Una de varias condiciones alternativas o métodos de operación de un dispositivo. 2. El valor más común o
frecuente en un grupo de valores.
norte
la red
1. La interconexión de una serie de dispositivos mediante instalaciones de comunicación de datos. "Redes
locales" es la red de comunicaciones interna de un robot. "Redes globales" es la capacidad de proporcionar
conexiones de comunicaciones fuera del sistema interno del robot. 2. Conexión de ordenadores y/o terminales
separados geográficamente por líneas de comunicación. El control de la transmisión se gestiona mediante un
protocolo estándar.
memoria no volátil
Memoria capaz de retener su información almacenada cuando se apaga la alimentación.
E–46
Glosario MARRC75KR07091E Rev H
Modelo de obstáculos.
Utilizado en la comprobación de interferencias, el modelo de obstáculos es el conjunto de elementos del modelo virtual
(esferas, cilindros y planos) que se utilizan para representar la forma y la ubicación de un obstáculo dado en el espacio.
desconectado
compensar
La salida del valor de conteo de un convertidor A/D resultante de un voltaje analógico de entrada cero. Se utiliza para
corregir mediciones subsiguientes distintas de cero, así como la posición incremental o el valor de ajuste del marco.
en línea
Un término para describir equipos o dispositivos que están conectados a la línea de comunicaciones.
procesamiento en línea
Un enfoque de procesamiento de datos en el que las transacciones se ingresan directamente en la computadora, a medida que ocurren.
sistema operativo
Programa de supervisión del sistema de nivel más bajo.
operador
Una persona designada para iniciar, monitorear y detener la operación productiva prevista de un robot o sistema de
robot.
características opcionales
Capacidades adicionales disponibles a un costo superior al precio base.
E–47
MARRC75KR07091E Rev H Glosario
O
Una operación que coloca dos contactos o grupos de contactos en paralelo. Cualquiera de los contactos puede controlar el
estado resultante, también una operación matemática.
orientación
La actitud de un objeto en el espacio. Comúnmente descrito por tres ángulos: rotación alrededor de x (w), rotación alrededor de
y (p) y rotación alrededor de z (r).
origen
El punto en un sistema de coordenadas cartesianas donde los ejes se cruzan; el punto de referencia que define la
ubicación de un marco.
Antiguo Testamento
Ver sobrecarrera.
producción
Información que se transfiere desde la CPU para el control de dispositivos o procesos externos.
dispositivo de salida
Un dispositivo, como motores de arranque, solenoides, que reciben datos del controlador programable.
módulo de salida
Un módulo de E/S que convierte los niveles lógicos dentro de la CPU en una señal de salida utilizable para controlar una
máquina o un proceso.
salidas
Señales, normalmente activadas o desactivadas, que controlan dispositivos externos en función de los comandos de la CPU.
anular
Ver anulación general.
sobrecarrera
Una condición que ocurre cuando el movimiento de un eje de robot excede sus límites prescritos.
Sobrescribir
Para reemplazar el contenido de un archivo con el contenido de otro archivo al copiar.
PAGS
paridad
El estado anticipado, par o impar, de un conjunto de dígitos binarios.
bit de paridad
Un dígito binario agregado a una matriz de bits para hacer que la suma de todos los bits sea siempre impar o siempre par.
comprobación de paridad
Una verificación que prueba si el número de unos (o ceros) en una matriz de dígitos binarios es impar o par.
E–48
Glosario MARRC75KR07091E Rev H
error de paridad
Una condición que ocurre cuando una verificación de paridad calculada no concuerda con el bit de paridad.
parte
Un elemento de material que se utiliza como componente y no es un ensamblaje o subensamblaje.
pascal
Unidad de presión en el sistema metro-kilogramo-segundo equivalente a un newton por metro cuadrado.
sendero
1. Un tipo de variable disponible en el sistema KAREL que consiste en una lista de posiciones. Cada nodo incluye
información posicional y datos asociados. 2. La trayectoria seguida por el TCP en un movimiento.
interfaz de computadora
La opción Interfaz de PC proporciona las funciones RPC y macros de envío de PC requeridas por las aplicaciones creadas
con el Kit de desarrollador de PC.
colgante
Ver enseñar colgante.
SOCIEDAD ANÓNIMA
PMC
Las funciones del controlador de máquina programable (PMC) proporcionan un entorno de programación de lógica de
escalera para crear funciones de PMC. Esto proporciona la capacidad de usar el sistema de E/S del robot para ejecutar
programas de PLC en el fondo de las operaciones normales del robot. Esta función se puede utilizar para controlar sistemas de
suministro a granel, automatización fija que forma parte de la celda de trabajo del robot u otros dispositivos que normalmente
requerirían controles PLC básicos.
modo de producción
Ver modo automático.
programa
1. Un plan para la solución de un problema. Un programa completo incluye planes para la transcripción de datos, codificación
para la computadora y planes para la absorción de los resultados en el sistema. 2. Una secuencia de instrucciones que debe
ejecutar la computadora o el controlador para controlar un robot/sistema de robot. 3. Dotar a una computadora de un código
de instrucciones. 4. Enseñar a un sistema de robot un conjunto específico de movimientos e instrucciones para realizar una
tarea.
E–49
MARRC75KR07091E Rev H Glosario
controlador programable
Véase controlador lógico programable o controlador de celda.
El software Program ToolBox proporciona utilidades de programación como la imagen especular y las capacidades de edición de
muñeca giratoria.
protocolo
Un conjunto de interfaces de hardware y software en una terminal o computadora que le permite transmitir a través
de una red de comunicaciones y que, en conjunto, forma un lenguaje de comunicaciones.
psi
Libras por pulgada cuadrada.
q
cola.
1. Líneas de espera por retrasos temporales en la prestación del servicio. 2. La cantidad de tiempo que un trabajo espera en un
centro de trabajo antes de que se configure o se realice el trabajo en el trabajo. Véase también cola de trabajos.
R
RAM
Consulte Memoria de acceso aleatorio.
acceso aleatorio
Término que describe archivos que no tienen que buscarse secuencialmente para encontrar un registro en particular, sino que
pueden abordarse directamente.
rango
1. Una caracterización de una variable o función. Todos los valores que puede poseer una función. 2. En estadística,
la dispersión en una serie de observaciones. 3. Un espectro de valores de voltaje o corriente programable al cual se
pueden limitar las señales analógicas de entrada o salida.
Rhode Island
Entrada de robot.
E–50
Glosario MARRC75KR07091E Rev H
RO
Salida de robots.
leer
Para copiar, generalmente de una forma de almacenamiento a otra, particularmente del almacenamiento externo o
secundario al almacenamiento interno. Sentir el significado de arreglos de hardware. Para detectar la presencia de
información en un medio de grabación.
registro
Para almacenar el conjunto o conjuntos actuales de información en un dispositivo de almacenamiento.
recuperación
La restauración del procesamiento normal después de un mal funcionamiento del hardware o software a través de procedimientos detallados para la
Registrarse
1. Una sección especial de almacenamiento primario en una computadora donde se guardan los datos mientras se trabaja con ellos.
2. Un dispositivo de memoria capaz de contener uno o más bits o palabras de computadora.
remoto/local
Una conexión de dispositivo a una computadora determinada, con dispositivos remotos conectados a través de líneas de
comunicación y dispositivos locales conectados directamente a un canal de computadora; en una red, la computadora puede
ser un dispositivo remoto para la CPU que controla la red.
reparar
Para restaurar robots y sistemas de robots a condiciones operativas después de daños, mal funcionamiento o desgaste.
repetibilidad
La proximidad de acuerdo entre el número de movimientos consecutivos realizados por el brazo del robot a un punto
específico.
Reiniciar
RÍA
Subcomité de la Asociación de Industrias Robóticas del American National Standards Institute, Inc.
E–51
MARRC75KR07091E Rev H Glosario
robot
Un manipulador multifuncional reprogramable diseñado para mover materiales, piezas, herramientas o dispositivos
especializados, a través de movimientos programados variables para la realización de una variedad de tareas.
Modelo de robot.
Utilizado en la verificación de interferencias, el modelo de robot es el conjunto de elementos del modelo virtual (esfera y
cilindros) que se utilizan para representar la ubicación y la forma del brazo del robot con respecto a la base del robot. En
general, la estructura de un robot de seis ejes se puede modelar con precisión como una serie de cilindros y esferas. Cada
elemento del modelo representa un enlace o parte del brazo robótico.
ROM
Consulte Memoria de solo lectura.
rutina
1. Una lista de instrucciones codificadas en un programa. 2. Una serie de instrucciones de computadora que realizan una tarea
específica y pueden ejecutarse tantas veces como sea necesario durante la ejecución del programa.
S
guardando datos
Almacenamiento de datos de programa en Flash ROM, en un disquete (no compatible con la versión 7.10 y posteriores) o en una
tarjeta de memoria.
scfm
Pies cúbicos estándar por minuto.
sensor
Un dispositivo que responde a estímulos físicos, como calor, luz, presión de sonido, magnetismo o movimiento, y
transmite la señal o los datos resultantes para proporcionar una medición, operar un control o ambos. También un
dispositivo que se utiliza para medir o ajustar las diferencias de voltaje con el fin de controlar dinámicamente
maquinaria sofisticada.
comunicación serial
Un método de transferencia de datos dentro de un PLC mediante el cual los bits se manejan secuencialmente en lugar de
simultáneamente como en la transmisión en paralelo.
Interfaz de serie
Un método de transmisión de datos que permite transmitir un solo bit a la vez a través de una sola línea. Se utiliza cuando
no es necesaria una entrada de alta velocidad.
E–52
Glosario MARRC75KR07091E Rev H
servo motor
Un motor eléctrico que se controla para producir un movimiento de precisión. También llamado motor "inteligente".
SI
Entrada del sistema.
señal
El evento, fenómeno o cantidad eléctrica que transmite información de un punto a otro.
poco significativo
Un bit que contribuye a la precisión de un número. Estos se contabilizan empezando por el bit
que aporta más valor, de "bit más significativo", y terminando por el bit que aporta menos
valor, o "bit menos significativo".
singularizando
Separación de piezas en una sola capa.
hoja de deslizamiento
Una lámina de material colocada entre ciertas capas de una unidad de carga. También conocido como hoja de nivel.
ASI QUE
Gravedad específica
La relación de una masa de sólido o líquido a la masa de un volumen igual de agua a 45C. Debe conocer la gravedad
específica del material dosificado para realizar la calibración de la señal de volumen. La gravedad específica de un
material de dosificación se indica en la MSDS para ese material.
SRAM
Una memoria de lectura/escritura en la que la celda de memoria básica es un transistor. SRAM (o S-RAM) tiende a tener una densidad
más baja que DRAM. Se puede usar una batería para retener el contenido en caso de pérdida de energía.
slpm
Litros estándar por minuto.
estado
La condición de encendido o apagado de la corriente hacia y desde un dispositivo de entrada o salida.
declaración
Ver instrucción.
dispositivo de almacenamiento
Cualquier dispositivo que pueda aceptar, retener y volver a leer una o más veces. Los dispositivos de almacenamiento
disponibles son SRAM, Flash ROM (FROM o F-ROM), disquetes (no disponible en la versión 7.10 y posteriores), tarjetas de
memoria o una memoria extraíble USB.
E–53
MARRC75KR07091E Rev H Glosario
T
Tara
La diferencia entre el peso bruto de un objeto y su contenido, y el objeto mismo. El
peso de un objeto sin su contenido.
TCP
Ver punto central de la herramienta.
enseñando
Generar y almacenar una serie de puntos de datos posicionales efectuados al mover el brazo del robot a través de una trayectoria
de movimientos previstos.
modo de enseñanza
1. El modo de operación en el que se instruye a un robot en sus movimientos, generalmente guiándolo a través de estos
movimientos usando un dispositivo de enseñanza. 2. La generación y almacenamiento de datos posicionales. Los datos de
posición se pueden enseñar utilizando la consola portátil para mover el robot a través de una serie de posiciones y registrar
esas posiciones para que las utilice un programa de aplicación.
enseñar colgante
1. Un dispositivo portátil que se utiliza para instruir a un robot, especificando el carácter y los tipos de movimientos que debe
realizar. También conocida como caja de enseñanza, pistola de enseñanza. 2. Un dispositivo portátil, que consta de una
pantalla LCD y un teclado, que sirve como interfaz de usuario para el sistema KAREL y se conecta a la caja del operador o al
panel del operador a través de un cable. La botonera de enseñanza se utiliza para operaciones de robot, como mover el robot,
enseñar y registrar posiciones y probar y depurar programas.
telemetría
El método de transmisión de mediciones realizadas por un instrumento o un sensor a una ubicación remota.
tipo de terminación
Función que controla la combinación del movimiento del robot entre segmentos.
herramienta
Un término que se usa vagamente para definir algo montado en el extremo del brazo del robot, por ejemplo, una mano, una pinza o
un soplete de soldadura por arco.
1. La ubicación en el efector final o herramienta de una mano robótica cuya posición y orientación definen las
coordenadas del objeto controlado. 2. Punto de referencia para el control de posición, es decir, el punto de la
herramienta que se utiliza para enseñar posiciones. TCP abreviado.
E–54
Glosario MARRC75KR07091E Rev H
Marco HERRAMIENTA
El sistema de coordenadas cartesianas que tiene como origen la posición del TCP a stet. El eje z del marco de la
herramienta indica el vector de aproximación de la herramienta.
TP.
Ver enseñar colgante.
transductor
Un dispositivo para convertir energía de una forma a otra.
tu
UOP
Ver panel de operador de usuario.
URL
Localizador de recursos universal. Un esquema de direccionamiento estándar utilizado para ubicar o hacer referencia a archivos en
servidores web.
La interfaz de dispositivo de memoria USB del controlador admite una interfaz USB 1.1. La Organización USB
especifica estándares para USB 1.1 y 2.0. La mayoría de los dispositivos Memory Stick cumplen con la especificación
USB 2.0 para los estándares eléctricos y de funcionamiento. Los dispositivos USB 2.0 definidos por la especificación
USB deben ser compatibles con dispositivos USB 1.1. Sin embargo, FANUC America Corporation no admite ninguna
función de seguridad o cifrado en dispositivos de memoria USB. El controlador es compatible con la mayoría de las
memorias USB Flash disponibles desde 32 MB hasta 1 GB de tamaño.
Marco de USUARIO
El sistema de coordenadas cartesianas que puede definir para una aplicación específica. El valor predeterminado del marco de
usuario es el marco mundial. Todos los datos posicionales se registran en relación con el marco de usuario.
V
variable
Una cantidad que puede asumir cualquiera de un conjunto dado de valores.
diferencia
La diferencia entre lo esperado (o planificado) y lo real, también definiciones estadísticas.
sistema de visión
Un dispositivo que recopila datos y forma una imagen que puede ser interpretada por una computadora
robótica para determinar la posición o "ver" un objeto.
E–55
MARRC75KR07091E Rev H Glosario
memoria volatil
Memoria que perderá la información almacenada en ella si se desconecta la alimentación del dispositivo del circuito de memoria.
W
Servidor web
Una aplicación que le permite acceder a archivos en el robot utilizando un navegador web estándar.
dispositivo de advertencia
Un dispositivo audible o visible que se utiliza para alertar al personal sobre posibles riesgos de seguridad.
sobre de trabajo
El volumen de espacio que encierra el alcance máximo diseñado del manipulador del robot, incluido el efector final, la
pieza de trabajo y el propio robot. La envolvente de trabajo se puede reducir o restringir mediante dispositivos
limitadores. La distancia máxima que el robot puede recorrer después de que se activa el dispositivo de límite se
considera la base para definir el entorno de trabajo restringido.
escribe
Para entregar datos a un medio como el almacenamiento.
E–56
Índice
de memoria 9–7
127 DRAM, 1–8
dtbr USB, 9–3
transferencia de datos entre robots, 12–1
O
mi Número de orden
F PAGS
Disco F-ROM, 9–2 computadora personal, 9–2
Índice–1
Glosario MARRC75KR07091E Rev H
tu procedimiento incorporado, A–
383 V_OVERRIDE
Memoria USB, 9–3 procedimiento incorporado, A–
Dispositivo de memoria USB (UD1), 9–7 a 9–8 384 V_RALC_QUEUE
Dispositivo de memoria USB (UT1), 9–7 procedimiento incorporado, A–
385 V_RUN_FIND
V procedimiento incorporado, A–
385 V_SAVE_IMREG
V_ACQ_VAMAP
procedimiento incorporado, A–
procedimiento incorporado, A–
387 V_SET_REF
370 V_ADJ_2D
procedimiento incorporado, A–
procedimiento incorporado, A–
388 V_SNAP_VIEW
371 V_CAM_CALIB
procedimiento integrado, A–
procedimiento incorporado, A–
389 V_START_VTRK
372 V_CLR_VAMAP
procedimiento incorporado, A–
procedimiento incorporado, A–
390 V_STOP_VTRK
374 V_DISPLAY4D
procedimiento incorporado, A–
procedimiento incorporado, A–
391 VAR_INFO
374 V_FIND_VIEW
procedimiento incorporado, A–
procedimiento incorporado, A–
391 VAR_LIST
375 V_GET_OFFSET
procedimiento integrado, A–
procedimiento incorporado, A–
394 VECTOR
376 V_GET_PASSFL
tipo de datos, A–396
procedimiento incorporado, A–
VOL_ESPACIO
378 V_GET_QUEUE
procedimiento integrado, A–
procedimiento incorporado, A–
397 VREG_FND_POS
379 V_GET_VPARAM
procedimiento incorporado, A–
procedimiento incorporado, A–
399 VREG_OFFSET
380 V_INIT_QUEUE
procedimiento incorporado, A–399
procedimiento incorporado, A–
381 V_IRCONNECT
Índice–2