You are on page 1of 956

FANUC America Corporation

SYSTEM R-30iA and R-30iB


Controller KAREL Reference
Manual
MARRC75KR07091E Rev H
Applies to Version 7.50 and higher
© 2014 FANUC America Corporation
All Rights Reserved.

This publication contains proprietary information of FANUC America


Corporation furnished for customer use only. No other uses are
authorized without the express written permission of FANUC America
Corporation.
FANUC America Corporation
3900 W. Hamlin Road
Rochester Hills, Michigan 48309–3253
About This Manual
If you have a controller labeled R-J3iC, you should read R-J3iC as R-30iA.

Copyrights and Trademarks


This new publication contains proprietary information of FANUC America Corporation, furnished for
customer use only. No other uses are authorized without the express written permission of FANUC
America Corporation.

FANUC America Corporation


3900 W. Hamlin Road
Rochester Hills, MI 48309-3253

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’s manuals present descriptions, specifications, drawings, schematics, bills of


material, parts, connections and/or procedures for installing, disassembling, connecting, operating
and programming FANUC America Corporation’s products and/or systems. Such systems consist of
robots, extended axes, robot controllers, application software, the KAREL® programming language,
INSIGHT® vision equipment, and special tools.

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

FANUC America Corporation


3900 W. Hamlin Road
Rochester Hills, MI 48309-3253

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.

Send your comments and suggestions about this manual to:


product.documentation@fanucamerica.com

The information illustrated or contained herein is not to be reproduced, copied, downloaded,


translated into another language, distributed, or published in any physical or electronic format,
including Internet, or transmitted in whole or in part in any way without the prior written consent
of FANUC America America, Inc.

AccuStat®, ArcTool®, iRVision®, KAREL®, PaintTool®,PalletTool®, SOCKETS®, SpotTool®,


SpotWorks®, and TorchMate® are Registered Trademarks of FANUC America Corporation.

FANUC America reserves all proprietary rights, including but not limited to trademark and trade
name rights, in the following names:

AccuAir™, AccuCal™, AccuChop™, AccuFlow™, AccuPath™, AccuSeal™, ARC Mate™,


ARC Mate Sr.™, ARC Mate System 1™, ARC Mate System 2™, ARC Mate System 3™, ARC
Mate System 4™, ARC Mate System 5™, ARCWorks Pro™, AssistTool™, AutoNormal™,
AutoTCP™, BellTool™, BODYWorks™, Cal Mate™, Cell Finder™, Center Finder™, Clean Wall™,
DualARM™, LR Tool™, MIG Eye™, MotionParts™, MultiARM™, NoBots™, Paint Stick™,
PaintPro™, PaintTool 100™, PAINTWorks™, PAINTWorks II™, PAINTWorks III™, PalletMate™,
PalletMate PC™, PalletTool PC™, PayloadID™, RecipTool™, RemovalTool™, Robo Chop™, Robo
Spray™, S-420i™, S-430i™, ShapeGen™, SoftFloat™, SOFT PARTS™, SpotTool+™, SR Mate™,
SR ShotTool™, SureWeld™, SYSTEM R-J2 Controller™, SYSTEM R-J3 Controller™, SYSTEM
R-J3iB Controller™, SYSTEM R-J3iC Controller™, SYSTEM R-30iA Controller™, SYSTEM
R-30iA Mate Controller™, SYSTEM R-30iB Controller™, SYSTEM R-30iB Mate Controller™,
TCP Mate™, TorchMate™, TripleARM™, TurboMove™, visLOC™, visPRO-3D™, visTRAC™,
WebServer™, WebTP™, and YagTool™.

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

FRA Patent List

4,630,567 4,639,878 4,707,647 4,708,175 4,708,580 4,942,539 4,984,745 5,238,029 5,239,739


5,272,805 5,293,107 5,293,911 5,331,264 5,367,944 5,373,221 5,421,218 5,434,489 5,644,898
5,670,202 5,696,687 5,737,218 5,823,389 5,853,027 5,887,800 5,941,679 5,959,425 5,987,726
6,059,092 6,064,168 6,070,109 6,086,294 6,122,062 6,147,323 6,204,620 6,243,621 6,253,799
6,285,920 6,313,595 6,325,302 6,345,818 6,356,807 6,360,143 6,378,190 6,385,508 6,425,177
6,477,913 6,490,369 6,518,980 6,540,104 6,541,757 6,560,513 6,569,258 6,612,449 6,703,079
6,705,361 6,726,773 6,768,078 6,845,295 6,945,483 7,149,606 7,149,606 7,211,978 7,266,422
7,399,363

FANUC LTD Patent List

4,571,694 4,626,756 4,700,118 4,706,001 4,728,872 4,732,526 4,742,207 4,835,362 4,894,596


4,899,095 4,920,248 4,931,617 4,934,504 4,956,594 4,967,125 4,969,109 4,970,370 4,970,448
4,979,127 5,004,968 5,006,035 5,008,834 5,063,281 5,066,847 5,066,902 5,093,552 5,107,716
5,111,019 5,130,515 5,136,223 5,151,608 5,170,109 5,189,351 5,267,483 5,274,360 5,292,066
5,300,868 5,304,906 5,313,563 5,319,443 5,325,467 5,327,057 5,329,469 5,333,242 5,337,148
5,371,452 5,375,480 5,418,441 5,432,316 5,440,213 5,442,155 5,444,612 5,449,875 5,451,850
5,461,478 5,463,297 5,467,003 5,471,312 5,479,078 5,485,389 5,485,552 5,486,679 5,489,758
5,493,192 5,504,766 5,511,007 5,520,062 5,528,013 5,532,924 5,548,194 5,552,687 5,558,196
5,561,742 5,570,187 5,570,190 5,572,103 5,581,167 5,582,750 5,587,635 5,600,759 5,608,299
5,608,618 5,624,588 5,630,955 5,637,969 5,639,204 5,641,415 5,650,078 5,658,121 5,668,628
5,687,295 5,691,615 5,698,121 5,708,342 5,715,375 5,719,479 5,727,132 5,742,138 5,742,144
5,748,854 5,749,058 5,760,560 5,773,950 5,783,922 5,799,135 5,812,408 5,841,257 5,845,053
5,872,894 5,887,122 5,911,892 5,912,540 5,920,678 5,937,143 5,980,082 5,983,744 5,987,591
5,988,850 6,023,044 6,032,086 6,040,554 6,059,169 6,088,628 6,097,169 6,114,824 6,124,693
6,140,788 6,141,863 6,157,155 6,160,324 6,163,124 6,177,650 6,180,898 6,181,096 6,188,194
6,208,105 6,212,444 6,219,583 6,226,181 6,236,011 6,236,896 6,250,174 6,278,902 6,279,413
6,285,921 6,298,283 6,321,139 6,324,443 6,328,523 6,330,493 6,340,875 6,356,671 6,377,869
6,382,012 6,384,371 6,396,030 6,414,711 6,424,883 6,431,018 6,434,448 6,445,979 6,459,958
6,463,358 6,484,067 6,486,629 6,507,165 6,654,666 6,665,588 6,680,461 6,696,810 6,728,417
6,763,284 6,772,493 6,845,296 6,853,881 6,888,089 6,898,486 6,917,837 6,928,337 6,965,091
6,970,802 7,038,165 7,069,808 7,084,900 7,092,791 7,133,747 7,143,100 7,149,602 7,131,848
7,161,321 7,171,041 7,174,234 7,173,213 7,177,722 7,177,439 7,181,294 7,181,313 7,280,687
7,283,661 7,291,806 7,299,713 7,315,650 7,324,873 7,328,083 7,330,777 7,333,879 7,355,725
7,359,817 7,373,220 7,376,488 7,386,367 7,464,623 7,447,615 7,445,260 7,474,939 7,486,816
7,495,192 7,501,778 7,502,504 7,508,155 7,512,459 7,525,273 7,526,121

VersaBell, ServoBell and SpeedDock Patents Pending.

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

Information appearing under WARNING concerns the protection of


personnel. It is boxed and in bold type to set it apart from other text.

Caution

Information appearing under CAUTION concerns the protection of equipment,


software, and data. It is boxed to set it apart from other text.

Note Information appearing next to NOTE concerns related information or useful hints.

iv
Contents

About This Manual ................................................................................................................................. i

Safety ............................................................................................................................................... xxix

Chapter 1 KAREL LANGUAGE OVERVIEW ................................................................................ 1–1


1.1 OVERVIEW .................................................................................................................... 1–2
1.2 KAREL PROGRAMMING LANGUAGE ............................................................................. 1–2
1.2.1 Overview ......................................................................................................................... 1–2
1.2.2 Creating a Program ............................................................................................................ 1–4
1.2.3 Translating a Program ........................................................................................................ 1–4
1.2.4 Loading Program Logic and Data ......................................................................................... 1–4
1.2.5 Executing a Program .......................................................................................................... 1–5
1.2.6 Execution History ............................................................................................................. 1–5
1.2.7 Program Structure ............................................................................................................. 1–5
1.3 SYSTEM SOFTWARE ...................................................................................................... 1–7
1.3.1 Software Components ........................................................................................................ 1–7
1.3.2 Supported Robots .............................................................................................................. 1–8
1.4 CONTROLLER ................................................................................................................ 1–8
1.4.1 Memory .......................................................................................................................... 1–8
1.4.2 Input/Output System ........................................................................................................ 1–10
1.4.3 User Interface Devices ..................................................................................................... 1–11

Chapter 2 LANGUAGE ELEMENTS ............................................................................................ 2–1


2.1 LANGUAGE COMPONENTS ............................................................................................ 2–2
2.1.1 Character Set .................................................................................................................... 2–2
2.1.2 Operators ......................................................................................................................... 2–5
2.1.3 Reserved Words ................................................................................................................ 2–5
2.1.4 User-Defined Identifiers ...................................................................................................... 2–7
2.1.5 Labels ............................................................................................................................. 2–7
2.1.6 Predefined Identifiers ......................................................................................................... 2–8
2.1.7 System Variables ............................................................................................................... 2–9
2.1.8 Comments ..................................................................................................................... 2–10
2.2 TRANSLATOR DIRECTIVES ....................................................................................... 2–10
2.3 DATA TYPES ................................................................................................................ 2–12
2.4 USER-DEFINED DATA TYPES AND STRUCTURES ......................................................... 2–13
2.4.1 User-Defined Data Types .................................................................................................. 2–14
2.4.2 User-Defined Data Structures ............................................................................................ 2–15
2.5 ARRAYS ....................................................................................................................... 2–18
2.5.1 Multi-Dimensional Arrays ................................................................................................ 2–18
2.5.2 Variable-Sized Arrays ...................................................................................................... 2–20

Chapter 3 USE OF OPERATORS ................................................................................................ 3–1

v
Contents MARRC75KR07091E Rev H

3.1 EXPRESSIONS AND ASSIGNMENTS ................................................................................ 3–2


3.1.1 Rule for Expressions and Assignments .................................................................................. 3–2
3.1.2 Evaluation of Expressions and Assignments ........................................................................... 3–2
3.1.3 Variables and Expressions ................................................................................................... 3–4
3.2 OPERATIONS ................................................................................................................. 3–4
3.2.1 Arithmetic Operations ........................................................................................................ 3–5
3.2.2 Relational Operations ......................................................................................................... 3–6
3.2.3 Boolean Operations ........................................................................................................... 3–7
3.2.4 Special Operations ............................................................................................................. 3–8

Chapter 4 PROGRAM CONTROL ............................................................................................... 4–1


4.1 OVERVIEW ..................................................................................................................... 4–2
4.2 PROGRAM CONTROL STRUCTURES ............................................................................... 4–2
4.2.1 Alternation Control Structures ............................................................................................. 4–2
4.2.2 Looping Control Statements ................................................................................................ 4–3
4.2.3 Unconditional Branch Statement .......................................................................................... 4–3
4.2.4 Execution Control Statements .............................................................................................. 4–3
4.2.5 Condition Handlers ............................................................................................................ 4–4

Chapter 5 ROUTINES ................................................................................................................. 5–1


5.1 ROUTINE EXECUTION ................................................................................................... 5–2
5.1.1 Declaring Routines ............................................................................................................ 5–2
5.1.2 Invoking Routines ............................................................................................................. 5–5
5.1.3 Returning from Routines .................................................................................................... 5–7
5.1.4 Scope of Variables ............................................................................................................. 5–8
5.1.5 Parameters and Arguments .................................................................................................. 5–9
5.1.6 Stack Usage ................................................................................................................... 5–13
5.2 BUILT- IN ROUTINES .................................................................................................... 5–15

Chapter 6 CONDITION HANDLERS ............................................................................................ 6–1


6.1 CONDITION HANDLER OPERATIONS ............................................................................. 6–3
6.1.1 Global Condition Handlers .................................................................................................. 6–3
6.2 CONDITIONS ................................................................................................................. 6–6
6.2.1 Port_Id Conditions ............................................................................................................ 6–7
6.2.2 Relational Conditions ......................................................................................................... 6–7
6.2.3 System and Program Event Conditions .................................................................................. 6–8
6.3 ACTIONS ..................................................................................................................... 6–11
6.3.1 Assignment Actions ......................................................................................................... 6–11
6.3.2 Motion Related Actions .................................................................................................... 6–12
6.3.3 Routine Call Actions ........................................................................................................ 6–13
6.3.4 Miscellaneous Actions ..................................................................................................... 6–14

Chapter 7 FILE INPUT/OUTPUT OPERATIONS ........................................................................... 7–1


7.1 OVERVIEW .................................................................................................................... 7–3
7.2 FILE VARIABLES ............................................................................................................ 7–3
7.3 OPEN FILE STATEMENT ................................................................................................. 7–4
7.3.1 Setting File and Port Attributes ............................................................................................ 7–5
7.3.2 File String ...................................................................................................................... 7–10
7.3.3 Usage String ................................................................................................................... 7–11
7.4 CLOSE FILE STATEMENT ............................................................................................. 7–13

vi
MARRC75KR07091E Rev H Contents

7.5 READ STATEMENT ....................................................................................................... 7–14


7.6 WRITE STATEMENT ..................................................................................................... 7–16
7.7 INPUT/OUTPUT BUFFER ............................................................................................... 7–17
7.8 FORMATTING TEXT (ASCII) INPUT/OUTPUT ................................................................. 7–18
7.8.1 Formatting INTEGER Data Items ....................................................................................... 7–19
7.8.2 Formatting REAL Data Items ............................................................................................ 7–22
7.8.3 Formatting BOOLEAN Data Items ..................................................................................... 7–25
7.8.4 Formatting STRING Data Items ......................................................................................... 7–27
7.8.5 Formatting VECTOR Data Items ........................................................................................ 7–30
7.8.6 Formatting Positional Data Items ....................................................................................... 7–31
7.9 FORMATTING BINARY INPUT/OUTPUT ........................................................................ 7–33
7.9.1 Formatting INTEGER Data Items ....................................................................................... 7–34
7.9.2 Formatting REAL Data Items ............................................................................................ 7–35
7.9.3 Formatting BOOLEAN Data Items ..................................................................................... 7–35
7.9.4 Formatting STRING Data Items ......................................................................................... 7–35
7.9.5 Formatting VECTOR Data Items ........................................................................................ 7–36
7.9.6 Formatting POSITION Data Items ...................................................................................... 7–36
7.9.7 Formatting XYZWPR Data Items ....................................................................................... 7–36
7.9.8 Formatting XYZWPREXT Data Items ................................................................................ 7–36
7.9.9 Formatting JOINTPOS Data Items ..................................................................................... 7–37
7.10 USER INTERFACE TIPS ................................................................................................. 7–37
7.10.1 USER Menu on the Teach Pendant ..................................................................................... 7–37
7.10.2 USER Menu on the CRT/KB ............................................................................................. 7–38

Chapter 8 POSITION DATA ......................................................................................................... 8–1


8.1 OVERVIEW .................................................................................................................... 8–2
8.2 POSITIONAL DATA ......................................................................................................... 8–2
8.3 FRAMES OF REFERENCE ............................................................................................... 8–3
8.3.1 World Frame .................................................................................................................... 8–4
8.3.2 User Frame (UFRAME) ..................................................................................................... 8–5
8.3.3 Tool Definition (UTOOL) ................................................................................................... 8–5
8.3.4 Using Frames in the Teach Pendant Editor (TP) ...................................................................... 8–5
8.4 JOG COORDINATE SYSTEMS .......................................................................................... 8–6

Chapter 9 FILE SYSTEM ............................................................................................................ 9–1


9.1 OVERVIEW .................................................................................................................... 9–2
9.2 FILE SPECIFICATION ...................................................................................................... 9–3
9.2.1 Device Name .................................................................................................................... 9–3
9.2.2 File Name ........................................................................................................................ 9–4
9.2.3 File Type ......................................................................................................................... 9–5
9.3 STORAGE DEVICE ACCESS ............................................................................................ 9–6
9.3.1 Overview ......................................................................................................................... 9–7
9.3.2 Memory File Devices ....................................................................................................... 9–13
9.3.3 Virtual Devices ............................................................................................................... 9–14
9.3.4 File Pipes ....................................................................................................................... 9–16
9.4 FILE ACCESS ............................................................................................................... 9–20
9.5 FORMATTING XML INPUT ........................................................................................... 9–20
9.5.1 Overview ....................................................................................................................... 9–20
9.5.2 Installation Sequence ....................................................................................................... 9–21
9.5.3 Example KAREL Program Referencing an XML File ............................................................ 9–21

vii
Contents MARRC75KR07091E Rev H

9.5.4 ...................................................................................................................
Parse Errors 9–26
9.6 MEMORY DEVICE ........................................................................................................ 9–26

Chapter 10 DICTIONARIES AND FORMS ................................................................................... 10–1


10.1 OVERVIEW ................................................................................................................... 10–3
10.2 CREATING USER DICTIONARIES .................................................................................. 10–3
10.2.1 Dictionary Syntax ........................................................................................................... 10–3
10.2.2 Dictionary Element Number .............................................................................................. 10–4
10.2.3 Dictionary Element Name ................................................................................................. 10–5
10.2.4 Dictionary Cursor Positioning ............................................................................................ 10–5
10.2.5 Dictionary Element Text ................................................................................................... 10–6
10.2.6 Dictionary Reserved Word Commands ................................................................................ 10–8
10.2.7 Character Codes ............................................................................................................. 10–10
10.2.8 Nesting Dictionary Elements ............................................................................................ 10–10
10.2.9 Dictionary Comment ....................................................................................................... 10–10
10.2.10 Generating a KAREL Constant File ................................................................................... 10–11
10.2.11 Compressing and Loading Dictionaries on the Controller ....................................................... 10–11
10.2.12 Accessing Dictionary Elements from a KAREL Program ....................................................... 10–12
10.3 CREATING USER FORMS ............................................................................................. 10–13
10.3.1 Form Syntax .................................................................................................................. 10–14
10.3.2 Form Attributes ............................................................................................................. 10–15
10.3.3 Form Title and Menu Label .............................................................................................. 10–16
10.3.4 Form Menu Text ............................................................................................................ 10–17
10.3.5 Form Selectable Menu Item .............................................................................................. 10–18
10.3.6 Edit Data Item ............................................................................................................... 10–19
10.3.7 Dynamic Forms using Tree View ........................................................................................ 10–26
10.3.8 Non-Selectable Text ........................................................................................................ 10–27
10.3.9 Display Only Data Items .................................................................................................. 10–27
10.3.10 Cursor Position Attributes ................................................................................................ 10–27
10.3.11 Form Reserved Words and Character Codes ........................................................................ 10–28
10.3.12 Form Function Key Element Name or Number .................................................................... 10–30
10.3.13 Form Function Key Using a Variable ................................................................................. 10–31
10.3.14 Form Help Element Name or Number ................................................................................ 10–31
10.3.15 Teach Pendant Form Screen ............................................................................................. 10–32
10.3.16 CRT/KB Form Screen ..................................................................................................... 10–32
10.3.17 Form File Naming Convention .......................................................................................... 10–33
10.3.18 Compressing and Loading Forms on the Controller ............................................................... 10–34
10.3.19 Displaying a Form .......................................................................................................... 10–36

Chapter 11 SOCKET MESSAGING ............................................................................................. 11–1


11.1 OVERVIEW .................................................................................................................. 11–2
11.2 SYSTEM REQUIREMENTS ............................................................................................ 11–2
11.2.1 Overview ....................................................................................................................... 11–2
11.2.2 Software Requirements .................................................................................................... 11–2
11.2.3 Hardware Requirements ................................................................................................... 11–2
11.3 CONFIGURING THE SOCKET MESSAGING OPTION ...................................................... 11–3
11.3.1 Overview ....................................................................................................................... 11–3
11.3.2 Setting up a Server Tag ..................................................................................................... 11–3
11.3.3 Setting up a Client Tag ..................................................................................................... 11–6
11.4 SOCKET MESSAGING AND KAREL ............................................................................... 11–8
11.4.1 Overview ....................................................................................................................... 11–8
11.4.2 MSG_CONN( string, integer ) .......................................................................................... 11–8

viii
MARRC75KR07091E Rev H Contents

11.4.3 MSG_DISCO( string, integer ) .......................................................................................... 11–9


11.4.4 MSG_PING( string, integer ) ............................................................................................ 11–9
11.4.5 Exchanging Data during a Socket Messaging Connection ....................................................... 11–10
11.5 NETWORK PERFORMANCE ......................................................................................... 11–10
11.5.1 Overview ...................................................................................................................... 11–10
11.5.2 Guidelines for a Good Implementation ............................................................................... 11–10
11.6 PROGRAMMING EXAMPLES ....................................................................................... 11–11
11.6.1 .................................................................................................................................... 11–11
11.6.2 A KAREL Client Application ........................................................................................... 11–11
11.6.3 A KAREL Server Application .......................................................................................... 11–13
11.6.4 ANSI C Loopback Client Example .................................................................................... 11–15

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

Chapter 13 SYSTEM VARIABLES ............................................................................................... 13–1


13.1 ACCESS RIGHTS .......................................................................................................... 13–2
13.2 STORAGE ..................................................................................................................... 13–3

Chapter 14 KAREL COMMAND LANGUAGE (KCL) .................................................................... 14–1


14.1 COMMAND FORMAT .................................................................................................... 14–2
14.1.1 Default Program .............................................................................................................. 14–2
14.1.2 Variables and Data Types .................................................................................................. 14–3
14.2 PROGRAM CONTROL COMMANDS .............................................................................. 14–3
14.3 ENTERING COMMANDS ............................................................................................... 14–3
14.3.1 Abbreviations ................................................................................................................. 14–4
14.3.2 Error Messages ............................................................................................................... 14–4
14.3.3 Subdirectories ................................................................................................................. 14–4
14.4 COMMAND PROCEDURES ............................................................................................ 14–4
14.4.1 Command Procedure Format ............................................................................................. 14–5
14.4.2 Creating Command Procedures .......................................................................................... 14–6
14.4.3 Error Processing .............................................................................................................. 14–6
14.4.4 Executing Command Procedures ........................................................................................ 14–6

Chapter 15 INPUT/OUTPUT SYSTEM ......................................................................................... 15–1

ix
Contents MARRC75KR07091E Rev H

15.1 USER-DEFINED SIGNALS ............................................................................................. 15–2


15.1.1 DIN and DOUT Signals .................................................................................................... 15–2
15.1.2 GIN and GOUT Signals .................................................................................................... 15–3
15.1.3 AIN and AOUT Signals .................................................................................................... 15–3
15.1.4 Hand Signals .................................................................................................................. 15–5
15.2 SYSTEM-DEFINED SIGNALS ........................................................................................ 15–5
15.2.1 Robot Digital Input and Output Signals (RDI/RDO) ............................................................... 15–6
15.2.2 Operator Panel Input and Output Signals (OPIN/OPOUT) ....................................................... 15–6
15.2.3 Teach Pendant Input and Output Signals (TPIN/TPOUT) ....................................................... 15–15
15.3 SERIAL INPUT/OUTPUT .............................................................................................. 15–20
15.3.1 Serial Input/Output ......................................................................................................... 15–20

Chapter 16 MULTI-TASKING ....................................................................................................... 16–1


16.1 MULTI-TASKING TERMINOLOGY ................................................................................. 16–2
16.2 INTERPRETER ASSIGNMENT ....................................................................................... 16–3
16.3 MOTION CONTROL ...................................................................................................... 16–3
16.4 TASK SCHEDULING ..................................................................................................... 16–4
16.4.1 Priority Scheduling .......................................................................................................... 16–5
16.4.2 Time Slicing ................................................................................................................... 16–6
16.5 STARTING TASKS ......................................................................................................... 16–6
16.5.1 Running Programs from the User Operator Panel (UOP) PNS Signal ........................................ 16–7
16.5.2 Child Tasks .................................................................................................................... 16–7
16.6 TASK CONTROL AND MONITORING ............................................................................. 16–7
16.6.1 From TPP Programs ........................................................................................................ 16–8
16.6.2 From KAREL Programs ................................................................................................... 16–8
16.6.3 From KCL ..................................................................................................................... 16–8
16.7 USING SEMAPHORES AND TASK SYNCHRONIZATION ................................................. 16–9
16.8 USING QUEUES FOR TASK COMMUNICATIONS ........................................................... 16–14

Appendix A KAREL LANGUAGE ALPHABETICAL DESCRIPTION ............................................... A–1


A.1 OVERVIEW .................................................................................................................. A–10
A.2 - A - KAREL LANGUAGE DESCRIPTION ........................................................................ A–18
A.2.1 ABORT Action ............................................................................................................... A–18
A.2.2 ABORT Condition ........................................................................................................... A–19
A.2.3 ABORT Statement ........................................................................................................... A–19
A.2.4 ABORT_TASK Built-In Procedure ..................................................................................... A–20
A.2.5 ABS Built-In Function ..................................................................................................... A–21
A.2.6 ACOS Built-In Function ................................................................................................... A–21
A.2.7 ACT_SCREEN Built-In Procedure ..................................................................................... A–22
A.2.8 ACT_TBL Built-In Procedure ............................................................................................. A–23
A.2.9 ADD_BYNAMEPC Built-In Procedure ............................................................................... A–24
A.2.10 ADD_DICT Built-In Procedure ......................................................................................... A–26
A.2.11 ADD_INTPC Built-In Procedure ........................................................................................ A–27
A.2.12 ADD_REALPC Built-In Procedure .................................................................................... A–28
A.2.13 ADD_STRINGPC Built-In Procedure ................................................................................. A–29
A.2.14 %ALPHABETIZE Translator Directive ............................................................................... A–31
A.2.15 APPEND_NODE Built-In Procedure .................................................................................. A–31
A.2.16 APPEND_QUEUE Built-In Procedure ................................................................................ A–32
A.2.17 APPROACH Built-In Function .......................................................................................... A–33
A.2.18 ARRAY Data Type .......................................................................................................... A–33
A.2.19 ARRAY_LEN Built-In Function ........................................................................................ A–35

x
MARRC75KR07091E Rev H Contents

A.2.20 ASIN Built-In Function .................................................................................................... A–35


A.2.21 Assignment Action .......................................................................................................... A–36
A.2.22 Assignment Statement ...................................................................................................... A–37
A.2.23 ATAN2 Built-In Function ................................................................................................. A–39
A.2.24 ATTACH Statement ......................................................................................................... A–40
A.2.25 ATT_WINDOW_D Built-In Procedure ................................................................................ A–40
A.2.26 ATT_WINDOW_S Built-In Procedure ................................................................................ A–41
A.2.27 AVL_POS_NUM Built-In Procedure .................................................................................. A–42
A.3 - B - KAREL LANGUAGE DESCRIPTION ........................................................................ A–43
A.3.1 BOOLEAN Data Type ..................................................................................................... A–43
A.3.2 BYNAME Built-In Function ............................................................................................. A–44
A.3.3 BYTE Data Type ............................................................................................................. A–45
A.3.4 BYTES_AHEAD Built-In Procedure .................................................................................. A–46
A.3.5 BYTES_LEFT Built-In Function ........................................................................................ A–47
A.4 - C - KAREL LANGUAGE DESCRIPTION ........................................................................ A–48
A.4.1 CALL_PROG Built-In Procedure ....................................................................................... A–48
A.4.2 CALL_PROGLIN Built-In Procedure ................................................................................. A–49
A.4.3 CANCEL Action ............................................................................................................. A–50
A.4.4 CANCEL Statement ........................................................................................................ A–50
A.4.5 CANCEL FILE Statement ................................................................................................ A–51
A.4.6 CHECK_DICT Built-In Procedure ..................................................................................... A–52
A.4.7 CHECK_EPOS Built-In Procedure ..................................................................................... A–53
A.4.8 CHECK_NAME Built-In Procedure ................................................................................... A–54
A.4.9 CHR Built-In Function ..................................................................................................... A–54
A.4.10 CLEAR Built-In Procedure ............................................................................................... A–55
A.4.11 CLEAR_SEMA Built-In Procedure .................................................................................... A–56
A.4.12 CLOSE FILE Statement ................................................................................................... A–56
A.4.13 CLOSE HAND Statement ................................................................................................. A–57
A.4.14 CLOSE_TPE Built-In Procedure ........................................................................................ A–57
A.4.15 CLR_IO_STAT Built-In Procedure ..................................................................................... A–58
A.4.16 CLR_PORT_SIM Built-In Procedure .................................................................................. A–58
A.4.17 CLR_POS_REG Built-In Procedure ................................................................................... A–59
A.4.18 %CMOSVARS Translator Directive ................................................................................... A–60
A.4.19 %CMOS2SHADOW Translator Directive ............................................................................ A–60
A.4.20 CNC_DYN_DISB Built-In Procedure ................................................................................. A–60
A.4.21 CNC_DYN_DISE Built-In Procedure ................................................................................. A–61
A.4.22 CNC_DYN_DISI Built-In Procedure .................................................................................. A–62
A.4.23 CNC_DYN_DISP Built-In Procedure ................................................................................. A–63
A.4.24 CNC_DYN_DISR Built-In Procedure ................................................................................. A–63
A.4.25 CNC_DYN_DISS Built-In Procedure ................................................................................. A–64
A.4.26 CNCL_STP_MTN Built-In Procedure ................................................................................. A–65
A.4.27 CNV_CNF_STRG Built-In Procedure .................................................................................. A–65
A.4.28 CNV_CONF_STR Built-In Procedure ................................................................................. A–66
A.4.29 CNV_INT_STR Built-In Procedure .................................................................................... A–67
A.4.30 CNV_JPOS_REL Built-In Procedure .................................................................................. A–68
A.4.31 CNV_REAL_STR Built-In Procedure ................................................................................. A–68
A.4.32 CNV_REL_JPOS Built-In Procedure .................................................................................. A–69
A.4.33 CNV_STR_CONF Built-In Procedure ................................................................................. A–70
A.4.34 CNV_STR_INT Built-In Procedure .................................................................................... A–71
A.4.35 CNV_STR_REAL Built-In Procedure ................................................................................. A–72
A.4.36 CNV_STR_TIME Built-In Procedure ................................................................................. A–72
A.4.37 CNV_TIME_STR Built-In Procedure ................................................................................. A–73
A.4.38 %COMMENT Translator Directive .................................................................................... A–74
A.4.39 COMPARE_FILE Built-in Procedure ................................................................................... A–74
A.4.40 CONDITION...ENDCONDITION Statement ....................................................................... A–76

xi
Contents MARRC75KR07091E Rev H

A.4.41 CONFIG Data Type ......................................................................................................... A–78


A.4.42 CONNECT TIMER Statement ........................................................................................... A–79
A.4.43 CONTINUE Action ......................................................................................................... A–80
A.4.44 CONTINUE Condition ..................................................................................................... A–80
A.4.45 CONT_TASK Built-In Procedure ....................................................................................... A–81
A.4.46 COPY_FILE Built-In Procedure ......................................................................................... A–82
A.4.47 COPY_PATH Built-In Procedure ........................................................................................ A–83
A.4.48 COPY_QUEUE Built-In Procedure .................................................................................... A–84
A.4.49 COPY_TPE Built-In Procedure .......................................................................................... A–86
A.4.50 COS Built-In Function ..................................................................................................... A–87
A.4.51 CR Input/Output Item ...................................................................................................... A–87
A.4.52 CREATE_TPE Built-In Procedure ...................................................................................... A–88
A.4.53 CREATE_VAR Built-In Procedure ..................................................................................... A–89
A.4.54 %CRTDEVICE ............................................................................................................... A–91
A.4.55 CURJPOS Built-In Function ............................................................................................. A–92
A.4.56 CURPOS Built-In Function ............................................................................................... A–93
A.4.57 CURR_PROG Built-In Function ........................................................................................ A–94
A.5 - D - KAREL LANGUAGE DESCRIPTION ........................................................................ A–94
A.5.1 DAQ_CHECKP Built-In Procedure .................................................................................... A–94
A.5.2 DAQ_REGPIPE Built-In Procedure .................................................................................... A–95
A.5.3 DAQ_START Built-In Procedure ....................................................................................... A–97
A.5.4 DAQ_STOP Built-In Procedure ......................................................................................... A–99
A.5.5 DAQ_UNREG Built-In Procedure .................................................................................... A–100
A.5.6 DAQ_WRITE Built-In Procedure ..................................................................................... A–101
A.5.7 %DEFGROUP Translator Directive .................................................................................. A–103
A.5.8 DEF_SCREEN Built-In Procedure ................................................................................... A–103
A.5.9 DEF_WINDOW Built-In Procedure .................................................................................. A–104
A.5.10 %DELAY Translator Directive ........................................................................................ A–105
A.5.11 DELAY Statement ......................................................................................................... A–106
A.5.12 DELETE_FILE Built-In Procedure ................................................................................... A–107
A.5.13 DELETE_NODE Built-In Procedure ................................................................................. A–107
A.5.14 DELETE_QUEUE Built-In Procedure ............................................................................... A–108
A.5.15 DEL_INST_TPE Built-In Procedure ................................................................................. A–109
A.5.16 DET_WINDOW Built-In Procedure ................................................................................. A–109
A.5.17 DISABLE CONDITION Action ....................................................................................... A–110
A.5.18 DISABLE CONDITION Statement .................................................................................. A–111
A.5.19 DISCONNECT TIMER Statement ................................................................................... A–112
A.5.20 DISCTRL_ALPH Built_In Procedure ............................................................................... A–113
A.5.21 DISCTRL_FORM Built_In Procedure ............................................................................... A–114
A.5.22 DISCTRL_LIST Built-In Procedure .................................................................................. A–117
A.5.23 DISCTRL_PLMN Built-In Procedure ............................................................................... A–118
A.5.24 DISCTRL_SBMN Built-In Procedure ............................................................................... A–120
A.5.25 DISCTRL_TBL Built-In Procedure .................................................................................. A–123
A.5.26 DISMOUNT_DEV Built-In Procedure .............................................................................. A–125
A.5.27 DISP_DAT_T Data Type ................................................................................................ A–126
A.5.28 DOSFILE_INF Built-In Procedure ..................................................................................... A–127
A.6 - E - KAREL LANGUAGE DESCRIPTION ...................................................................... A–129
A.6.1 ENABLE CONDITION Action ....................................................................................... A–129
A.6.2 ENABLE CONDITION Statement ................................................................................... A–130
A.6.3 %ENVIRONMENT Translator Directive ........................................................................... A–130
A.6.4 ERR_DATA Built-In Procedure ....................................................................................... A–132
A.6.5 ERROR Condition ......................................................................................................... A–133
A.6.6 EVAL Clause ............................................................................................................... A–134
A.6.7 EVENT Condition ......................................................................................................... A–134
A.6.8 EXP Built-In Function ................................................................................................... A–135

xii
MARRC75KR07091E Rev H Contents

A.7 - F - KAREL LANGUAGE DESCRIPTION ...................................................................... A–136


A.7.1 FILE Data Type ............................................................................................................ A–136
A.7.2 FILE_LIST Built-In Procedure ........................................................................................ A–136
A.7.3 FOR...ENDFOR Statement ............................................................................................. A–138
A.7.4 FORCE_SPMENU Built-In Procedure .............................................................................. A–139
A.7.5 FORMAT_DEV Built-In Procedure .................................................................................. A–142
A.7.6 FRAME Built-In Function .............................................................................................. A–143
A.7.7 FROM Clause .............................................................................................................. A–144
A.8 - G - KAREL LANGUAGE DESCRIPTION ...................................................................... A–145
A.8.1 GET_ATTR_PRG Built-In Procedure ............................................................................... A–145
A.8.2 GET_FILE_POS Built-In Function ................................................................................... A–147
A.8.3 GET_JPOS_REG Built-In Function .................................................................................. A–148
A.8.4 GET_JPOS_TPE Built-In Function ................................................................................... A–149
A.8.5 GET_PORT_ASG Built-in Procedure ............................................................................... A–150
A.8.6 GET_PORT_ATR Built-In Function ................................................................................. A–151
A.8.7 GET_PORT_CMT Built-In Procedure ............................................................................... A–154
A.8.8 GET_PORT_MOD Built-In Procedure .............................................................................. A–154
A.8.9 GET_PORT_SIM Built-In Procedure ................................................................................ A–156
A.8.10 GET_PORT_VAL Built-In Procedure ................................................................................ A–157
A.8.11 GET_POS_FRM Built-In Procedure ................................................................................. A–157
A.8.12 GET_POS_REG Built-In Function ................................................................................... A–158
A.8.13 GET_POS_TPE Built-In Function .................................................................................... A–159
A.8.14 GET_POS_TYP Built-In Procedure .................................................................................. A–160
A.8.15 GET_PREG_CMT Built-In-Procedure ............................................................................... A–161
A.8.16 GET_QUEUE Built-In Procedure ..................................................................................... A–161
A.8.17 GET_REG Built-In Procedure ......................................................................................... A–163
A.8.18 GET_REG_CMT .......................................................................................................... A–163
A.8.19 GET_SREG_CMT Builtin Procedure ................................................................................. A–164
A.8.20 GET_STR_REG Built-In Procedure ................................................................................... A–164
A.8.21 GET_TIME Built-In Procedure ......................................................................................... A–165
A.8.22 GET_TPE_CMT Built-in Procedure ................................................................................. A–166
A.8.23 GET_TPE_PRM Built-in Procedure ................................................................................. A–167
A.8.24 GET_TSK_INFO Built-In Procedure ................................................................................ A–169
A.8.25 GET_USEC_SUB Built-In Procedure ................................................................................ A–171
A.8.26 GET_USEC_TIM Built-In Function .................................................................................. A–172
A.8.27 GET_VAR Built-In Procedure ......................................................................................... A–172
A.8.28 GO TO Statement .......................................................................................................... A–176
A.9 - H - KAREL LANGUAGE DESCRIPTION ...................................................................... A–177
A.9.1 HOLD Action ............................................................................................................... A–177
A.9.2 HOLD Statement .......................................................................................................... A–178
A.10 - I - KAREL LANGUAGE DESCRIPTION ....................................................................... A–178
A.10.1 IF ... ENDIF Statement .................................................................................................. A–178
A.10.2 IN Clause .................................................................................................................... A–179
A.10.3 %INCLUDE Translator Directive ..................................................................................... A–180
A.10.4 INDEX Built-In Function ............................................................................................... A–181
A.10.5 INI_DYN_DISB Built-In Procedure ................................................................................. A–182
A.10.6 INI_DYN_DISE Built-In Procedure .................................................................................. A–184
A.10.7 INI_DYN_DISI Built-In Procedure .................................................................................. A–185
A.10.8 INI_DYN_DISP Built-In Procedure .................................................................................. A–187
A.10.9 INI_DYN_DISR Built-In Procedure ................................................................................. A–188
A.10.10 INI_DYN_DISS Built-In Procedure .................................................................................. A–189
A.10.11 INIT_QUEUE Built-In Procedure .................................................................................... A–190
A.10.12 INIT_TBL Built-In Procedure ......................................................................................... A–190
A.10.13 IN_RANGE Built-In Function ......................................................................................... A–201

xiii
Contents MARRC75KR07091E Rev H

A.10.14 INSERT_NODE Built-In Procedure .................................................................................. A–202


A.10.15 INSERT_QUEUE Built-In Procedure ................................................................................ A–203
A.10.16 INTEGER Data Type ..................................................................................................... A–204
A.10.17 INV Built-In Function .................................................................................................... A–205
A.10.18 IO_MOD_TYPE Built-In Procedure ................................................................................. A–206
A.10.19 IO_STATUS Built-In Function ......................................................................................... A–207
A.11 - J - KAREL LANGUAGE DESCRIPTION ....................................................................... A–209
A.11.1 J_IN_RANGE Built-In Function ...................................................................................... A–209
A.11.2 JOINTPOS Data Type .................................................................................................... A–209
A.11.3 JOINT2POS Built-In Function ......................................................................................... A–210
A.12 - K - KAREL LANGUAGE DESCRIPTION ...................................................................... A–211
A.12.1 KCL Built-In Procedure ................................................................................................. A–211
A.12.2 KCL_NO_WAIT Built-In Procedure ................................................................................. A–212
A.12.3 KCL_STATUS Built-In Procedure .................................................................................... A–213
A.13 - L - KAREL LANGUAGE DESCRIPTION ...................................................................... A–213
A.13.1 LN Built-In Function ..................................................................................................... A–213
A.13.2 LOAD Built-In Procedure ............................................................................................... A–214
A.13.3 LOAD_STATUS Built-In Procedure ................................................................................. A–215
A.13.4 LOCK_GROUP Built-In Procedure .................................................................................. A–216
A.13.5 %LOCKGROUP Translator Directive ............................................................................... A–217
A.14 - M - KAREL LANGUAGE DESCRIPTION ..................................................................... A–218
A.14.1 MIRROR Built-In Function ............................................................................................. A–218
A.14.2 MODIFY_QUEUE Built-In Procedure .............................................................................. A–220
A.14.3 MOTION_CTL Built-In Function .................................................................................... A–221
A.14.4 MOUNT_DEV Built-In Procedure ................................................................................... A–222
A.14.5 MOVE_FILE Built-In Procedure ...................................................................................... A–222
A.14.6 MSG_CONNECT Built-In Procedure ............................................................................... A–223
A.14.7 MSG_DISCO Built-In Procedure ..................................................................................... A–225
A.14.8 MSG_PING ................................................................................................................. A–225
A.15 - N - KAREL LANGUAGE DESCRIPTION ...................................................................... A–226
A.15.1 NOABORT Action ........................................................................................................ A–226
A.15.2 %NOABORT Translator Directive ................................................................................... A–227
A.15.3 %NOBUSYLAMP Translator Directive ............................................................................ A–227
A.15.4 NODE_SIZE Built-In Function ........................................................................................ A–228
A.15.5 %NOLOCKGROUP Translator Directive .......................................................................... A–229
A.15.6 NOMESSAGE Action .................................................................................................... A–230
A.15.7 NOPAUSE Action ......................................................................................................... A–230
A.15.8 %NOPAUSE Translator Directive .................................................................................... A–231
A.15.9 %NOPAUSESHFT Translator Directive ............................................................................ A–232
A.16 - O - KAREL LANGUAGE DESCRIPTION ...................................................................... A–232
A.16.1 OPEN FILE Statement ................................................................................................... A–232
A.16.2 OPEN HAND Statement ................................................................................................. A–233
A.16.3 OPEN_TPE Built-In Procedure ........................................................................................ A–234
A.16.4 ORD Built-In Function ................................................................................................... A–235
A.16.5 ORIENT Built-In Function .............................................................................................. A–235
A.17 - P - KAREL LANGUAGE DESCRIPTION ...................................................................... A–236
A.17.1 PATH Data Type ........................................................................................................... A–236
A.17.2 PATH_LEN Built-In Function .......................................................................................... A–238
A.17.3 PAUSE Action .............................................................................................................. A–239
A.17.4 PAUSE Condition ......................................................................................................... A–239
A.17.5 PAUSE Statement ......................................................................................................... A–240
A.17.6 PAUSE_TASK Built-In Procedure .................................................................................... A–241
A.17.7 PEND_SEMA Built-In Procedure .................................................................................... A–242

xiv
MARRC75KR07091E Rev H Contents

A.17.8 PIPE_CONFIG Built-In Procedure ................................................................................... A–243


A.17.9 POP_KEY_RD Built-In Procedure ................................................................................... A–244
A.17.10 Port_Id Action .............................................................................................................. A–244
A.17.11 Port_Id Condition .......................................................................................................... A–245
A.17.12 POS Built-In Function .................................................................................................... A–246
A.17.13 POS2JOINT Built-In Function ......................................................................................... A–247
A.17.14 POS_REG_TYPE Built-In Procedure ................................................................................ A–248
A.17.15 POSITION Data Type .................................................................................................... A–250
A.17.16 POST_ERR Built-In Procedure ........................................................................................ A–251
A.17.17 POST_ERR_L Built-In Procedure ...................................................................................... A–252
A.17.18 POST_SEMA Built-In Procedure ..................................................................................... A–253
A.17.19 PRINT_FILE Built-In Procedure ...................................................................................... A–254
A.17.20 %PRIORITY Translator Directive .................................................................................... A–254
A.17.21 PROG_BACKUP Built-In Procedure ................................................................................ A–256
A.17.22 PROG_CLEAR Built-In Procedure ................................................................................... A–259
A.17.23 PROG_RESTORE Built-In Procedure ............................................................................... A–261
A.17.24 PROG_LIST Built-In Procedure ....................................................................................... A–263
A.17.25 PROGRAM Statement ................................................................................................... A–264
A.17.26 PULSE Action .............................................................................................................. A–265
A.17.27 PULSE Statement ......................................................................................................... A–266
A.17.28 PURGE CONDITION Statement ..................................................................................... A–267
A.17.29 PURGE_DEV Built-In Procedure ..................................................................................... A–268
A.17.30 PUSH_KEY_RD Built-In Procedure ................................................................................. A–268
A.18 - Q - KAREL LANGUAGE DESCRIPTION ...................................................................... A–270
A.18.1 QUEUE_TYPE Data Type .............................................................................................. A–270
A.19 - R - KAREL LANGUAGE DESCRIPTION ...................................................................... A–270
A.19.1 READ Statement ........................................................................................................... A–270
A.19.2 READ_DICT Built-In Procedure ...................................................................................... A–272
A.19.3 READ_DICT_V Built-In-Procedure ................................................................................. A–273
A.19.4 READ_KB Built-In Procedure ......................................................................................... A–274
A.19.5 REAL Data Type ........................................................................................................... A–278
A.19.6 Relational Condition ...................................................................................................... A–280
A.19.7 RELAX HAND Statement .............................................................................................. A–281
A.19.8 RELEASE Statement ..................................................................................................... A–282
A.19.9 REMOVE_DICT Built-In Procedure ................................................................................. A–282
A.19.10 RENAME_FILE Built-In Procedure ................................................................................. A–283
A.19.11 RENAME_VAR Built-In Procedure .................................................................................. A–284
A.19.12 RENAME_VARS Built-In Procedure ................................................................................ A–284
A.19.13 REPEAT ... UNTIL Statement ......................................................................................... A–285
A.19.14 RESET Built-In Procedure .............................................................................................. A–286
A.19.15 RESUME Action .......................................................................................................... A–287
A.19.16 RESUME Statement ...................................................................................................... A–287
A.19.17 RETURN Statement ...................................................................................................... A–288
A.19.18 RGET_PORTCMT Built-In ROUTINE ............................................................................... A–289
A.19.19 RGET_PORTSIM Built-In ROUTINE ................................................................................ A–290
A.19.20 RGET_PORTVAL Built-In ROUTINE................................................................................ A–291
A.19.21 RGET_PREGCMT Built-In ROUTINE .............................................................................. A–292
A.19.22 RGET_REG Built-In ROUTINE ........................................................................................ A–293
A.19.23 RGET_REG_CMT Built-In ROUTINE ............................................................................... A–294
A.19.24 RGET_SREGCMT Built-in ROUTINE ............................................................................... A–295
A.19.25 RGET_STR_REG Built-In ROUTINE ................................................................................ A–296
A.19.26 RMCN_ALERT Built-In ROUTINE ................................................................................... A–297
A.19.27 RMCN_SEND Built-in ROUTINE ..................................................................................... A–298
A.19.28 RNUMREG_RECV Built-In ROUTINE ............................................................................. A–299
A.19.29 RNUMREG_SEND Built-In ROUTINE .............................................................................. A–301

xv
Contents MARRC75KR07091E Rev H

A.19.30 ROUND Built-In Function .............................................................................................. A–302


A.19.31 ROUTINE Statement ..................................................................................................... A–302
A.19.32 RPREG_RECV Built-In ROUTINE ................................................................................... A–304
A.19.33 RPREG_SEND Built-in ROUTINE .................................................................................... A–305
A.19.34 RSET_INT_REG Built-in ROUTINE ................................................................................. A–307
A.19.35 RSET_PORTCMT Built-in ROUTINE ............................................................................... A–307
A.19.36 RSET_PORTSIM Built-in ROUTINE ................................................................................. A–308
A.19.37 RSET_PORTVAL Built-in ROUTINE ................................................................................ A–309
A.19.38 RSET_PREGCMT Built-in ROUTINE ............................................................................... A–310
A.19.39 RSET_REALREG Built-in ROUTINE ................................................................................ A–311
A.19.40 RSET_REG_CMT Built-In ROUTINE ............................................................................... A–312
A.19.41 RSET_SREGCMT Built-in ROUTINE ............................................................................... A–313
A.19.42 RSET_STR_REG Built-in ROUTINE................................................................................. A–314
A.19.43 RUN_TASK Built-In Procedure ....................................................................................... A–315
A.20 - S - KAREL LANGUAGE DESCRIPTION ...................................................................... A–316
A.20.1 SAVE Built-In Procedure ................................................................................................ A–316
A.20.2 SAVE_DRAM Built-In Procedure .................................................................................... A–317
A.20.3 SELECT ... ENDSELECT Statement ................................................................................ A–318
A.20.4 SELECT_TPE Built-In Procedure .................................................................................... A–319
A.20.5 SEMA_COUNT Built-In Function ................................................................................... A–319
A.20.6 SEMAPHORE Condition ............................................................................................... A–320
A.20.7 SEND_DATAPC Built-In Procedure ................................................................................. A–320
A.20.8 SEND_EVENTPC Built-In Procedure ............................................................................... A–321
A.20.9 SET_ATTR_PRG Built-In Procedure ................................................................................ A–322
A.20.10 SET_CURSOR Built-In Procedure ................................................................................... A–324
A.20.11 SET_EPOS_REG Built-In Procedure ................................................................................ A–325
A.20.12 SET_EPOS_TPE Built-In Procedure ................................................................................. A–326
A.20.13 SET_FILE_ATR Built-In Procedure ................................................................................. A–327
A.20.14 SET_FILE_POS Built-In Procedure .................................................................................. A–328
A.20.15 SET_INT_REG Built-In Procedure ................................................................................... A–329
A.20.16 SET_JPOS_REG Built-In Procedure ................................................................................. A–329
A.20.17 SET_JPOS_TPE Built-In Procedure ................................................................................. A–330
A.20.18 SET_LANG Built-In Procedure ....................................................................................... A–331
A.20.19 SET_PERCH Built-In Procedure ...................................................................................... A–332
A.20.20 SET_PORT_ASG Built-In Procedure ................................................................................ A–333
A.20.21 SET_PORT_ATR Built-In Function .................................................................................. A–334
A.20.22 SET_PORT_CMT Built-In Procedure ............................................................................... A–336
A.20.23 SET_PORT_MOD Built-In Procedure ............................................................................... A–337
A.20.24 SET_PORT_SIM Built-In Procedure ................................................................................. A–338
A.20.25 SET_PORT_VAL Built-In Procedure ................................................................................ A–339
A.20.26 SET_POS_REG Built-In Procedure .................................................................................. A–340
A.20.27 SET_POS_TPE Built-In Procedure ................................................................................... A–341
A.20.28 SET_PREG_CMT Built-In-Procedure ............................................................................... A–342
A.20.29 SET_REAL_REG Built-In Procedure ............................................................................... A–342
A.20.30 SET_REG_CMT Built-In-Procedure ................................................................................. A–343
A.20.31 SET_SREG_CMT Built-in Procedure ................................................................................. A–343
A.20.32 SET_STR_REG Built-in Procedure .................................................................................... A–344
A.20.33 SET_TIME Built-In Procedure ........................................................................................ A–344
A.20.34 SET_TPE_CMT Built-In Procedure .................................................................................. A–346
A.20.35 SET_TRNS_TPE Built-In Procedure ................................................................................ A–346
A.20.36 SET_TSK_ATTR Built-In Procedure ................................................................................ A–347
A.20.37 SET_TSK_NAME Built-In Procedure ............................................................................... A–348
A.20.38 SET_VAR Built-In Procedure .......................................................................................... A–349
A.20.39 %SHADOWVARS Translator Directive ............................................................................ A–352
A.20.40 SHORT Data Type ......................................................................................................... A–352

xvi
MARRC75KR07091E Rev H Contents

A.20.41 SIGNAL EVENT Action ................................................................................................ A–352


A.20.42 SIGNAL EVENT Statement ............................................................................................ A–353
A.20.43 SIGNAL SEMAPHORE Action ....................................................................................... A–354
A.20.44 SIN Built-In Function .................................................................................................... A–354
A.20.45 SQRT Built-In Function ................................................................................................. A–354
A.20.46 %STACKSIZE Translator Directive .................................................................................. A–355
A.20.47 STD_PTH_NODE Data Type .......................................................................................... A–355
A.20.48 STOP Action ................................................................................................................ A–356
A.20.49 STOP Statement ............................................................................................................ A–357
A.20.50 STRING Data Type ....................................................................................................... A–357
A.20.51 STR_LEN Built-In Function ........................................................................................... A–359
A.20.52 STRUCTURE Data Type ................................................................................................ A–359
A.20.53 SUB_STR Built-In Function ........................................................................................... A–360
A.21 - T - KAREL LANGUAGE DESCRIPTION ...................................................................... A–361
A.21.1 TAN Built-In Function ................................................................................................... A–361
A.21.2 %TIMESLICE Translator Directive .................................................................................. A–361
A.21.3 %TPMOTION Translator Directive .................................................................................. A–362
A.21.4 TRANSLATE Built-In Procedure ..................................................................................... A–362
A.21.5 TRUNC Built-In Function .............................................................................................. A–364
A.22 - U - KAREL LANGUAGE DESCRIPTION ...................................................................... A–364
A.22.1 UNHOLD Action .......................................................................................................... A–364
A.22.2 UNHOLD Statement ...................................................................................................... A–365
A.22.3 UNINIT Built-In Function .............................................................................................. A–366
A.22.4 %UNINITVARS Translator Directive ............................................................................... A–366
A.22.5 UNLOCK_GROUP Built-In Procedure ............................................................................. A–366
A.22.6 UNPAUSE Action ......................................................................................................... A–368
A.22.7 UNPOS Built-In Procedure ............................................................................................. A–368
A.22.8 USING ... ENDUSING Statement .................................................................................... A–369
A.23 - V - KAREL LANGUAGE DESCRIPTION ...................................................................... A–370
A.23.1 V_ACQ_VAMAP iRVision Built-In Procedure ..................................................................... A–370
A.23.2 V_ADJ_2D iRVision Built-In Procedure ............................................................................. A–371
A.23.3 V_CAM_CALIB iRVision Built-In Procedure ..................................................................... A–372
A.23.4 V_CLR_VAMAP iRVision Built-In Procedure...................................................................... A–374
A.23.5 V_DISPLAY4D iRVision Built-In Procedure ....................................................................... A–374
A.23.6 V_FIND_VIEW iRVision Built-In Procedure ....................................................................... A–375
A.23.7 V_GET_OFFSET iRVision Built-In Procedure .................................................................... A–376
A.23.8 V_GET_PASSFL iRVision Built-In Procedure ..................................................................... A–378
A.23.9 V_GET_QUEUE iRVision Built-in Procedure ..................................................................... A–379
A.23.10 V_GET_VPARAM iRVision Built-In Procedure ................................................................... A–380
A.23.11 V_INIT_QUEUE iRVision Built-in Procedure ..................................................................... A–381
A.23.12 V_IRCONNECT iRVision Built-In Procedure ...................................................................... A–381
A.23.13 V_LED_OFF iRVision Built-In Procedure ........................................................................... A–383
A.23.14 V_LED_ON iRVision Built-In Procedure ............................................................................ A–383
A.23.15 V_OVERRIDE iRVision Built-In Procedure ........................................................................ A–384
A.23.16 V_RALC_QUEUE iRVision Built-in Procedure ................................................................... A–385
A.23.17 V_RUN_FIND iRVision Built-In Procedure ........................................................................ A–385
A.23.18 V_SAVE_IMREG iRVision Built-In Procedure ..................................................................... A–387
A.23.19 V_SET_REF iRVision Built-In Procedure ........................................................................... A–388
A.23.20 V_SNAP_VIEW iRVision Built-In Procedure ...................................................................... A–389
A.23.21 V_START_VTRK iRVision Built-in Procedure .................................................................... A–390
A.23.22 V_STOP_VTRK iRVision Built-in Procedure ...................................................................... A–391
A.23.23 VAR_INFO Built-In Procedure ......................................................................................... A–391
A.23.24 VAR_LIST Built-In Procedure .......................................................................................... A–394
A.23.25 VECTOR Data Type ....................................................................................................... A–396

xvii
Contents MARRC75KR07091E Rev H

A.23.26 VOL_SPACE Built-In Procedure ...................................................................................... A–397


A.23.27 VREG_FND_POS iRVision Built-in Procedure .................................................................... A–399
A.23.28 VREG_OFFSET iRVision Built-in Procedure ...................................................................... A–399
A.24 - W - KAREL LANGUAGE DESCRIPTION ..................................................................... A–400
A.24.1 WAIT FOR Statement .................................................................................................... A–400
A.24.2 WHEN Clause .............................................................................................................. A–401
A.24.3 WHILE...ENDWHILE Statement ..................................................................................... A–401
A.24.4 WITH Clause ............................................................................................................... A–402
A.24.5 WRITE Statement ......................................................................................................... A–402
A.24.6 WRITE_DICT Built-In Procedure .................................................................................... A–403
A.24.7 WRITE_DICT_V Built-In Procedure ................................................................................ A–404
A.25 - X - KAREL LANGUAGE DESCRIPTION ...................................................................... A–405
A.25.1 XML_ADDTAG Built-In Procedure ................................................................................. A–405
A.25.2 XML_GETDATA Built-In Procedure ................................................................................. A–406
A.25.3 XML_REMTAG Built-In Procedure .................................................................................. A–407
A.25.4 XML_SCAN Built-In Procedure ....................................................................................... A–408
A.25.5 XML_SETVAR Built-In Procedure ................................................................................... A–409
A.25.6 XYZWPR Data Type ..................................................................................................... A–410
A.25.7 XYZWPREXT Data Type ............................................................................................... A–411
A.26 - Y - KAREL LANGUAGE DESCRIPTION ...................................................................... A–412
A.27 - Z - KAREL LANGUAGE DESCRIPTION ...................................................................... A–412

Appendix B KAREL EXAMPLE PROGRAMS ................................................................................ B–1


B.1 SETTING UP DIGITAL OUTPUT PORTS FOR PROCESS MONITORING .............................. B–6
B.2 COPYING PATH VARIABLES ......................................................................................... B–18
B.3 SAVING DATA TO THE DEFAULT DEVICE ..................................................................... B–28
B.4 STANDARD ROUTINES ................................................................................................. B–31
B.5 USING REGISTER BUILT-INS ........................................................................................ B–33
B.6 PATH VARIABLES AND CONDITION HANDLERS PROGRAM ......................................... B–38
B.7 LISTING FILES AND PROGRAMS AND MANIPULATING STRINGS ................................. B–44
B.8 GENERATING AND MOVING ALONG A HEXAGON PATH .............................................. B–49
B.9 USING THE FILE AND DEVICE BUILT-INS ..................................................................... B–53
B.10 USING DYNAMIC DISPLAY BUILT-INS .......................................................................... B–57
B.11 MANIPULATING VALUES OF DYNAMICALLY DISPLAYED VARIABLES ......................... B–68
B.12 DISPLAYING A LIST FROM A DICTIONARY FILE .......................................................... B–70
B.12.1 Dictionary Files .............................................................................................................. B–79
B.13 USING THE DISCTRL_ALPHA BUILT-IN ........................................................................ B–81
B.13.1 Dictionary Files .............................................................................................................. B–85
B.14 APPLYING OFFSETS TO A COPIED TEACH PENDANT PROGRAM .................................. B–85

Appendix C KCL COMMAND ALPHABETICAL DESCRIPTION ..................................................... C–1


C.1 ABORT command ............................................................................................................. C–6
C.2 APPEND FILE command ................................................................................................... C–6
C.3 APPEND NODE command ................................................................................................. C–6
C.4 CHDIR command ............................................................................................................. C–7
C.5 CLEAR ALL command ..................................................................................................... C–7
C.6 CLEAR BREAK CONDITION command ............................................................................. C–8

xviii
MARRC75KR07091E Rev H Contents

C.7 CLEAR BREAK PROGRAM command ............................................................................... C–8


C.8 CLEAR DICT command .................................................................................................... C–9
C.9 CLEAR PROGRAM command ........................................................................................... C–9
C.10 CLEAR VARS command ................................................................................................... C–9
C.11 COMPRESS DICT command ............................................................................................. C–10
C.12 COMPRESS FORM command ........................................................................................... C–10
C.13 CONTINUE command ..................................................................................................... C–11
C.14 COPY FILE command ...................................................................................................... C–11
C.15 CREATE VARIABLE command ........................................................................................ C–12
C.16 DELETE FILE command .................................................................................................. C–13
C.17 DELETE NODE command ............................................................................................... C–13
C.18 DELETE VARIABLE command ......................................................................................... C–14
C.19 DIRECTORY command .................................................................................................... C–14
C.20 DISABLE BREAK PROGRAM command ........................................................................... C–15
C.21 DISABLE CONDITION command ..................................................................................... C–15
C.22 DISMOUNT command ..................................................................................................... C–15
C.23 EDIT command .............................................................................................................. C–16
C.24 ENABLE BREAK PROGRAM .......................................................................................... C–16
C.25 ENABLE CONDITION command ...................................................................................... C–16
C.26 FORMAT command ......................................................................................................... C–17
C.27 HELP command .............................................................................................................. C–17
C.28 HOLD command ............................................................................................................. C–18
C.29 INSERT NODE command ................................................................................................ C–18
C.30 LOAD ALL command ...................................................................................................... C–18
C.31 LOAD DICT command ..................................................................................................... C–19
C.32 LOAD FORM command ................................................................................................... C–19
C.33 LOAD MASTER command ............................................................................................... C–20
C.34 LOAD PROGRAM command ........................................................................................... C–20
C.35 LOAD SERVO command ................................................................................................. C–21
C.36 LOAD SYSTEM command ............................................................................................... C–21
C.37 LOAD TP command ........................................................................................................ C–22
C.38 LOAD VARS command ................................................................................................... C–23
C.39 LOGOUT command ........................................................................................................ C–24
C.40 MKDIR command ........................................................................................................... C–24
C.41 MOUNT command .......................................................................................................... C–24
C.42 MOVE FILE command .................................................................................................... C–25
C.43 PAUSE command ............................................................................................................ C–25
C.44 PURGE command ........................................................................................................... C–26
C.45 PRINT command ............................................................................................................ C–26
C.46 RECORD command ........................................................................................................ C–27
C.47 RENAME FILE command ................................................................................................ C–27

xix
Contents MARRC75KR07091E Rev H

C.48 RENAME VARIABLE command ....................................................................................... C–28


C.49 RENAME VARS command .............................................................................................. C–28
C.50 RESET command ............................................................................................................ C–29
C.51 RMDIR command ........................................................................................................... C–29
C.52 RUN command ............................................................................................................... C–30
C.53 RUNCF command ........................................................................................................... C–30
C.54 SAVE MASTER command ............................................................................................... C–31
C.55 SAVE SERVO command .................................................................................................. C–31
C.56 SAVE SYSTEM command ................................................................................................ C–31
C.57 SAVE TP command ......................................................................................................... C–32
C.58 SAVE VARS command .................................................................................................... C–33
C.59 SET BREAK CONDITION command ................................................................................ C–33
C.60 SET BREAK PROGRAM command .................................................................................. C–34
C.61 SET CLOCK command .................................................................................................... C–35
C.62 SET DEFAULT command ................................................................................................ C–35
C.63 SET GROUP command .................................................................................................... C–35
C.64 SET LANGUAGE command ............................................................................................. C–36
C.65 SET LOCAL VARIABLE command ................................................................................... C–36
C.66 SET PORT command ....................................................................................................... C–37
C.67 SET TASK command ....................................................................................................... C–37
C.68 SET TRACE command .................................................................................................... C–38
C.69 SET VARIABLE command ............................................................................................... C–38
C.70 SET VERIFY command ................................................................................................... C–39
C.71 SHOW BREAK command ................................................................................................ C–39
C.72 SHOW BUILTINS command ............................................................................................ C–40
C.73 SHOW CONDITION command ......................................................................................... C–40
C.74 SHOW CLOCK command ................................................................................................ C–40
C.75 SHOW CURPOS command .............................................................................................. C–41
C.76 SHOW DEFAULT command ............................................................................................. C–41
C.77 SHOW DEVICE command ............................................................................................... C–41
C.78 SHOW DICTS command .................................................................................................. C–41
C.79 SHOW GROUP command ................................................................................................ C–41
C.80 SHOW HISTORY command ............................................................................................. C–42
C.81 SHOW LANG command .................................................................................................. C–42
C.82 SHOW LANGS command ................................................................................................ C–42
C.83 SHOW LOCAL VARIABLE command ............................................................................... C–42
C.84 SHOW LOCAL VARS command ....................................................................................... C–44
C.85 SHOW MEMORY command ............................................................................................ C–44
C.86 SHOW PROGRAM command ........................................................................................... C–44
C.87 SHOW PROGRAMS command ......................................................................................... C–45
C.88 SHOW SYSTEM command .............................................................................................. C–45

xx
MARRC75KR07091E Rev H Contents

C.89 SHOW TASK command ................................................................................................... C–45


C.90 SHOW TASKS command ................................................................................................. C–46
C.91 SHOW TRACE command ................................................................................................ C–46
C.92 SHOW TYPES command ................................................................................................. C–46
C.93 SHOW VARIABLE command ........................................................................................... C–47
C.94 SHOW VARS command ................................................................................................... C–47
C.95 SHOW data_type command .............................................................................................. C–48
C.96 SIMULATE command ..................................................................................................... C–48
C.97 SKIP command ............................................................................................................... C–49
C.98 STEP OFF command ....................................................................................................... C–50
C.99 STEP ON command ........................................................................................................ C–50
C.100 TRANSLATE command ................................................................................................... C–50
C.101 TYPE command .............................................................................................................. C–51
C.102 UNSIMULATE command ................................................................................................. C–51
C.103 WAIT command .............................................................................................................. C–52

Appendix D CHARACTER CODES ............................................................................................... D–1


D.1 CHARACTER CODES ..................................................................................................... D–2

Appendix E SYNTAX DIAGRAMS .................................................................................................. E–1


Glossary ........................................................................................................................................ GL–28

Index ............................................................................................................................................. Index–1

xxi
List of Figures

Figure 1–1. Controller Memory .......................................................................................................... 1–10


Figure 1–2. Controller ...................................................................................................................... 1–11
Figure 3–1. Determining w_handle Relative to WORLD Frame ............................................................... 3–10
Figure 3–2. Determining b_handle Relative to BUMPER Frame .............................................................. 3–11
Figure 7–1. "t_sc" Screen .................................................................................................................. 7–38
Figure 7–2. "t_sc" Screen with $TP_USESTAT = TRUE ......................................................................... 7–38
Figure 7–3. "c_sc" Screen ................................................................................................................. 7–39
Figure 7–4. "c_sc" Screen with $CRT_USERSTAT = TRUE .................................................................... 7–40
Figure 8–1. Referencing Positions in KAREL ......................................................................................... 8–4
Figure 9–1. XML File 1 Separated start and end tags ............................................................................... 9–22
Figure 9–2. XML File 2 Combined start and end tags .............................................................................. 9–22
Figure 9–3. XML File 3 GRID tag not registered or processed .................................................................. 9–22
Figure 9–4. KAREL Program .............................................................................................................. 9–22
Figure 10–1. Dictionary Compressor and User Dictionary File .................................................................. 10–12
Figure 10–2. Teach Pendant Form Screen ............................................................................................. 10–32
Figure 10–3. CRT/KB Form Screen ..................................................................................................... 10–33
Figure 10–4. Dictionary Compressor and Form Dictionary File ................................................................. 10–34
Figure 10–5. Example of Selectable Menu Items .................................................................................... 10–36
Figure 10–6. Example of Edit Data Items .............................................................................................. 10–38
Figure 10–7. Example of Display Only Data Items ................................................................................. 10–42
Figure 12–1. Data Transfer Between Robots over Ethernet.......................................................................... 12–2
Figure 12–2. Setup Over Ethernet .......................................................................................................... 12–4
Figure 12–3. TCP/IP Setup for ROBOGUIDE .......................................................................................... 12–5
Figure 12–4. Error Recovery ................................................................................................................ 12–12
Figure 12–5. Error Recovery 2 ............................................................................................................. 12–12
Figure 15–1. KAREL Logic for Converting Input to a Real Value Representing the Voltage ............................ 15–4
Figure 15–2. RSR Timing Diagram ..................................................................................................... 15–14
Figure 15–3. PNS Timing Diagram ...................................................................................................... 15–15
Figure 15–4. R-30iB Controller Ports .................................................................................................... 15–21
Figure 15–5. R-30iB Mate Controller Ports ............................................................................................. 15–21
Figure 16–1. Task Synchronization Using a Semaphore ........................................................................... 16–10
Figure A–1. Example of COMPARE_FILE built-in Procedure .................................................................... A–75
Figure A–2. FRAME Built-In Function .............................................................................................. A–144

xxiii
Contents MARRC75KR07091E Rev H

Figure A–3. GET_USEC_SUB Built-In Function .................................................................................. A–171


Figure E–1. ....................................................................................................................................... E–3
Figure E–2. ....................................................................................................................................... E–4
Figure E–3. ....................................................................................................................................... E–5
Figure E–4. ....................................................................................................................................... E–6
Figure E–5. ....................................................................................................................................... E–7
Figure E–6. ....................................................................................................................................... E–8
Figure E–7. ....................................................................................................................................... E–9
Figure E–8. ..................................................................................................................................... E–10
Figure E–9. ..................................................................................................................................... E–11
Figure E–10. ..................................................................................................................................... E–12
Figure E–11. ..................................................................................................................................... E–13
Figure E–12. ..................................................................................................................................... E–14
Figure E–13. ..................................................................................................................................... E–15
Figure E–14. ..................................................................................................................................... E–16
Figure E–15. ..................................................................................................................................... E–17
Figure E–16. ..................................................................................................................................... E–18
Figure E–17. ..................................................................................................................................... E–19
Figure E–18. ..................................................................................................................................... E–20
Figure E–19. ..................................................................................................................................... E–21
Figure E–20. ..................................................................................................................................... E–22
Figure E–21. ..................................................................................................................................... E–23
Figure E–22. ..................................................................................................................................... E–24
Figure E–23. ..................................................................................................................................... E–25
Figure E–24. ..................................................................................................................................... E–26
Figure E–25. ..................................................................................................................................... E–27

xxiv
List of Tables

Table 2–1. ASCII Character Set .......................................................................................................... 2–2


Table 2–2. Multinational Character Set ................................................................................................. 2–3
Table 2–3. Graphics Character Set ....................................................................................................... 2–4
Table 2–4. KAREL Operators ............................................................................................................. 2–5
Table 2–5. KAREL Operator Precedence .............................................................................................. 2–5
Table 2–6. Reserved Word List ........................................................................................................... 2–6
Table 2–7. Predefined Identifier and Value Summary ............................................................................... 2–8
Table 2–8. Port and File Predefined Identifier Summary ........................................................................... 2–8
Table 2–9. Translator Directives ........................................................................................................ 2–11
Table 2–10. Simple and Structured Data Types ...................................................................................... 2–13
Table 3–1. Summary of Operation Result Types ..................................................................................... 3–3
Table 3–2. KAREL Operators ............................................................................................................. 3–4
Table 3–3. Arithmetic Operations Using +, -, and * Operators ................................................................... 3–5
Table 3–4. Arithmetic Operations Examples .......................................................................................... 3–5
Table 3–5. Arithmetic Operations Using Bitwise Operands ....................................................................... 3–6
Table 3–6. KAREL Operator Precedence .............................................................................................. 3–6
Table 3–7. Relational Operation Examples ............................................................................................ 3–7
Table 3–8. BOOLEAN Operation Summary .......................................................................................... 3–8
Table 3–9. BOOLEAN Operations Using AND, OR, and NOT Operators ................................................... 3–8
Table 3–10. Examples of Vector Operations .......................................................................................... 3–12
Table 5–1. Stack Usage ................................................................................................................... 5–13
Table 5–2. KAREL Built—In Routine Summary .................................................................................. 5–15
Table 6–1. Conditions ....................................................................................................................... 6–2
Table 6–2. Actions ........................................................................................................................... 6–2
Table 6–3. Condition Handler Operations ............................................................................................. 6–3
Table 6–4. Interval Between Global Condition Handler Scans ................................................................... 6–4
Table 6–5. Port_Id Conditions ............................................................................................................ 6–7
Table 6–6. Relational Conditions ......................................................................................................... 6–8
Table 6–7. System and Program Event Conditions .................................................................................. 6–9
Table 6–8. Assignment Actions ......................................................................................................... 6–11
Table 6–9. Motion Related Actions .................................................................................................... 6–12
Table 6–10. Miscellaneous Actions ..................................................................................................... 6–14
Table 7–1. Predefined File Variables .................................................................................................... 7–3

xxv
Contents MARRC75KR07091E Rev H

Table 7–2. Predefined Attribute Types .................................................................................................. 7–5


Table 7–3. Attribute Values ................................................................................................................ 7–6
Table 7–4. Usage Specifiers .............................................................................................................. 7–11
Table 7–5. Text (ASCII) Input Format Specifiers .................................................................................. 7–18
Table 7–6. Text (ASCII) Output Format Specifiers ................................................................................ 7–18
Table 7–7. Examples of INTEGER Input Data Items ............................................................................. 7–20
Table 7–8. Examples of INTEGER Output Data Items ........................................................................... 7–21
Table 7–9. Examples of REAL Input Data Items .................................................................................. 7–22
Table 7–10. Examples of REAL Output Data Items ................................................................................ 7–23
Table 7–11. Examples of BOOLEAN Input Data Items ........................................................................... 7–25
Table 7–12. Examples of BOOLEAN Output Data Items ......................................................................... 7–26
Table 7–13. Examples of STRING Input Data Items ............................................................................... 7–27
Table 7–14. Examples of STRING Output Data Items ............................................................................. 7–29
Table 7–15. Examples of VECTOR Output Data Items ............................................................................ 7–31
Table 7–16. Examples of POSITION Output Data Items (p = POS(2.0,-4.0,8.0,0.0,90.0,0.0,config_var)) ............ 7–32
Table 7–17. Binary Input/Output Format Specifiers ................................................................................ 7–34
Table 7–18. Defined Windows for t_sc" ................................................................................................ 7–37
Table 7–19. Defined Windows for c_sc" ............................................................................................... 7–39
Table 8–1. Turn Number Definitions .................................................................................................... 8–2
Table 9–1. File Type Descriptions ........................................................................................................ 9–5
Table 9–2. Virtual Devices ............................................................................................................... 9–14
Table 9–3. System Variable Field Descriptions ..................................................................................... 9–18
Table 9–4. File Listings for the MD Device ......................................................................................... 9–27
Table 9–5. Testing Restrictions when Using the MD: Device .................................................................. 9–30
Table 10–1. Conversion Characters ..................................................................................................... 10–7
Table 10–2. Reserved Words .............................................................................................................. 10–9
Table 10–3. Conversion Characters .................................................................................................... 10–20
Table 10–4. Tree View Format ............................................................................................................ 10–26
Table 10–5. Reserved Words ............................................................................................................. 10–28
Table 10–6. Reserved Words for Scrolling Window ............................................................................... 10–29
Table 12–1. Program List to Transfer Registers and Position Registers ......................................................... 12–6
Table 12–2. Parameter Values .............................................................................................................. 12–7
Table 12–3. Parameter Values .............................................................................................................. 12–8
Table 12–4. Parameter Values .............................................................................................................. 12–9
Table 12–5. Possible Errors ................................................................................................................. 12–9
Table 12–6. Parameter Values ............................................................................................................. 12–10
Table 12–7. Possible Errors ................................................................................................................ 12–10
Table 12–8. DTBR KAREL Built-In Routines........................................................................................ 12–13
Table 13–1. Access Rights for System Variables .................................................................................... 13–2
Table 15–1. Standard Operator Panel Input Signals ................................................................................. 15–7
Table 15–2. Standard Operator Panel Output Signals .............................................................................. 15–7

xxvi
MARRC75KR07091E Rev H Contents

Table 15–3. User Operator Panel Input Signals ...................................................................................... 15–8


Table 15–4. User Operator Panel Output Signals ................................................................................... 15–12
Table 15–5. Teach Pendant Input Signal Assignments ............................................................................ 15–15
Table 15–6. Ports P1 - P4 ................................................................................................................. 15–22
Table 15–7. Default Communications Settings for Devices ..................................................................... 15–22
Table 16–1. System Function Priority Table .......................................................................................... 16–5
Table A–1. Syntax Notation .............................................................................................................. A–10
Table A–2. Actions ......................................................................................................................... A–12
Table A–3. Clauses ......................................................................................................................... A–12
Table A–4. Conditions ..................................................................................................................... A–13
Table A–5. Data Types ..................................................................................................................... A–13
Table A–6. Directives ...................................................................................................................... A–14
Table A–7. KAREL Built—In Routine Summary .................................................................................. A–14
Table A–8. Items ............................................................................................................................ A–17
Table A–9. Statements ..................................................................................................................... A–17
Table A–10. Valid and Invalid BOOLEAN Values .................................................................................. A–43
Table A–11. INTEGER Representation of Current Time ........................................................................ A–165
Table A–12. Conversion Characters ................................................................................................... A–186
Table A–13. Conversion Characters ................................................................................................... A–194
Table A–14. Valid and Invalid INTEGER Literals ................................................................................. A–205
Table A–15. IO_STATUS Errors ........................................................................................................ A–208
Table A–16. Group_mask Setting ...................................................................................................... A–216
Table A–17. Group_mask Setting ...................................................................................................... A–221
Table A–18. Valid and Invalid REAL operators .................................................................................... A–279
Table A–19. Parameter Values ............................................................................................................ A–300
Table A–20. Parameter Values ............................................................................................................ A–301
Table A–21. Parameter Values ............................................................................................................ A–305
Table A–22. Parameter Values ............................................................................................................ A–306
Table A–23. Group_mask setting ....................................................................................................... A–316
Table A–24. Attribute Values ............................................................................................................ A–335
Table A–25. 32–Bit INTEGER Format of Time .................................................................................... A–345
Table A–26. Example STRING Literals .............................................................................................. A–358
Table A–27. Group_mask Settings ..................................................................................................... A–367
Table A–28. Function Code Values .................................................................................................... A–372
Table A–29. Valid Data Types ............................................................................................................ A–392
Table A–30. Valid Data Types ............................................................................................................ A–395
Table B–1. KAREL Example Programs ............................................................................................... B–2
Table D–1. ASCII Character Codes ..................................................................................................... D–2
Table D–2. Special ASCII Character Codes ........................................................................................... D–3
Table D–3. Multinational Character Codes ............................................................................................ D–4
Table D–4. Graphics Character Codes (not available in R-30iB) ................................................................ D–5

xxvii
Contents MARRC75KR07091E Rev H

Table D–5. Teach Pendant Input Codes ................................................................................................ D–7


Table D–6. European Character Codes ................................................................................................. D–8
Table D–7. Graphics Characters .......................................................................................................... D–9

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.

CONSIDERING SAFETY FOR YOUR ROBOT INSTALLATION


Safety is essential whenever robots are used. Keep in mind the following factors with regard to safety:

• The safety of people and equipment


• Use of safety enhancing devices
• Techniques for safe teaching and manual operation of the robot(s)
• Techniques for safe automatic operation of the robot(s)
• Regular scheduled inspection of the robot and workcell
• Proper maintenance of the robot

xxix
Safety MARRC75KR07091E Rev H

Keeping People Safe

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

Using Safety Enhancing Devices

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:

• Safety fences, barriers, or chains


• Light curtains
• Interlocks
• Pressure mats
• Floor markings
• Warning lights
• Mechanical stops
• EMERGENCY STOP buttons
• DEADMAN switches

Setting Up a Safe Workcell

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

Staying Safe While Teaching or Manually Operating the Robot

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

Never bypass, strap, or otherwise deactivate a safety device, such as


a limit switch, for any operational convenience. Deactivating a safety
device is known to have resulted in serious injury and death.

• 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

Stay outside the robot work envelope whenever a program is being


run. Failure to do so can result in injury.

— 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

Staying Safe During Automatic Operation

Advise all personnel who operate the robot during production to observe the following rules:

• Make sure all safety provisions are present and active.


• Know the entire workcell area. The workcell includes the robot and its work envelope, plus the
area occupied by all external devices and other equipment with which the robot interacts.
• Understand the complete task the robot is programmed to perform before initiating automatic
operation.
• Make sure all personnel are outside the work envelope before operating the robot.
• Never enter or allow others to enter the work envelope during automatic operation of the robot.
• Know the location and status of all switches, sensors, and control signals that could cause the
robot to move.
• Know where the EMERGENCY STOP buttons are located on both the robot control and external
control devices. Be prepared to press these buttons in an emergency.
• Never assume that a program is complete if the robot is not moving. The robot could be waiting
for an input signal that will permit it to continue activity.
• If the robot is running in a pattern, do not assume it will continue to run in the same pattern.
• Never try to stop the robot, or break its motion, with your body. The only way to stop robot
motion immediately is to press an EMERGENCY STOP button located on the controller panel,
teach pendant, or emergency stop stations around the workcell.

Staying Safe During Inspection

When inspecting the robot, be sure to

• Turn off power at the controller.


• Lock out and tag out the power source at the controller according to the policies of your plant.
• Turn off the compressed air source and relieve the air pressure.
• If robot motion is not needed for inspecting the electrical circuits, press the EMERGENCY
STOP button on the operator panel.
• Never wear watches, rings, neckties, scarves, or loose clothing that could get caught in moving
machinery.
• If power is needed to check the robot motion or electrical circuits, be prepared to press the
EMERGENCY STOP button, in an emergency.
• Be aware that when you remove a servomotor or brake, the associated robot arm will fall if it is
not supported or resting on a hard stop. Support the arm on a solid support before you release
the brake.

xxxiii
Traducido del inglés al español - www.onlinedoctranslator.com

La seguridad MARRC75KR07091E Rev H

Mantenerse seguro durante el mantenimiento

Al realizar el mantenimiento de su sistema de robot, observe las siguientes reglas:

·Nunca ingrese al área de trabajo mientras el robot o un programa esté en funcionamiento.


·Antes de ingresar al área de trabajo, inspeccione visualmente la celda de trabajo para asegurarse de que no existan
condiciones potencialmente peligrosas.

·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

No intente quitar ningún componente mecánico del robot antes de leer


completamente y comprender los procedimientos en el manual
correspondiente. Si lo hace, puede provocar lesiones personales graves y la
destrucción de componentes.

·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.

MANTENER LAS MÁQUINAS HERRAMIENTAS Y LOS DISPOSITIVOS EXTERNOS SEGUROS

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.

Programación Precauciones de seguridad

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

Precauciones de seguridad mecánica

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.

MANTENER EL ROBOT SEGURO

Observe las siguientes pautas de operación y programación para evitar daños al robot.

Precauciones de seguridad operativas

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.

Programación Precauciones de seguridad

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

VISIÓN GENERAL DEL LENGUAJE KAREL

Contenido

Capítulo 1 VISIÓN GENERAL DEL LENGUAJE KAREL ............................................................ 1-1


1.1 VISIÓN GENERAL.................................................... ............................................................. 1‒2
1.2 LENGUAJE DE PROGRAMACIÓN KAREL.................................................... ..... 1‒2
1.2.1 Resumen.................................................... .......................................................... 1‒2
1.2.2 Creación de un programa.................................................... .................................. 1‒4
1.2.3 Traducir un programa.................................................... ............................ 1‒4
1.2.4 Lógica y datos del programa de carga.................................................... ........... 1‒4
1.2.5 Ejecución de un programa.................................................... ............................... 1‒5
1.2.6 Historial de ejecución.................................................... .................................... 1‒5
1.2.7 Estructura del programa.................................................... .................................... 1‒5
1.3 SOFTWARE DEL SISTEMA.................................................... ............................... 1‒7
1.3.1 Componentes de software.................................................... ............................ 1‒7
1.3.2 Robots compatibles.................................................... .................................... 1‒8
1.4 CONTROLADOR.................................................... ........................................ 1‒8
1.4.1 Memoria.................................................... .................................................... . 1‒8
1.4.2 Sistema de entrada/salida.................................................... ............................... 1‒10
1.4.3 Dispositivos de interfaz de usuario.................................................... .......................... 1‒11

1-1
1. VISIÓN GENERAL DEL LENGUAJE KAREL MARRC75KR07091E Rev H

1.1 VISIÓN GENERAL

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

· Tipos de datos simples y estructurados


· Operadores aritméticos, relacionales y booleanos
· Estructuras de control para bucles y selecciones.
· Manejadores de condiciones
· Rutinas de procedimiento y función
· Operaciones de entrada y salida
· Soporte multiprogramación

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.

1.2 LENGUAJE DE PROGRAMACIÓN KAREL

1.2.1 Visión general

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.

· Crear un archivo de código fuente del programa


· Traduce el archivo del programa.
· Cargue la lógica y los datos del programa.
· Ejecutar el programa.
· Mantener el historial de ejecución del programa.

1‒3
1. VISIÓN GENERAL DEL LENGUAJE KAREL MARRC75KR07091E Rev H

El controlador mantiene un registro o historial de los programas que se han ejecutado y se


puede ver.

1.2.2 Crear un programa

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.

1.2.3 Traducir un programa

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.

1.2.4 Cargar la lógica y los datos del 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:

· El número de programas está limitado a 2704 o RAM disponible.


· El número de variables por programa está limitado a 2704 o RAM disponible.

1.2.5 Ejecutar un programa

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.

1.2.6 Historial de ejecución

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.

1.2.7 Estructura del programa

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

Estructura de un Programa KAREL

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.

Ver también:Capitulo 2ELEMENTOS DEL LENGUAJE,Capítulo 3USO DE OPERADORES,yCapítulo 5


RUTINAS.

1.3 SOFTWARE DEL SISTEMA

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.

1.3.1 Componentes de software

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.

Los componentes del software del sistema incluyen:

· Control de movimiento-movimiento del punto central de la herramienta (TCP) desde una posición inicial a una posición
de destino deseada

· Sistema de archivos-almacenamiento de datos en el disco RAM o dispositivos de almacenamiento periféricos


·Variables del sistema-variables definidas permanentemente declaradas como parte del software del sistema KAREL
· Pantallas colgantes de enseñanza o CRT/KB-pantallas que facilitan el funcionamiento del sistema KAREL
· KCL-Lenguaje de comandos KAREL
· KAREL Intérprete-ejecuta programas KAREL

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

1.3.2 Robots compatibles

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

Hay tres tipos de memoria del controlador:

· Memoria dinámica de acceso aleatorio (DRAM)


· Una cantidad limitada de memoria de acceso aleatorio/estática respaldada por batería (SRAM)
· Memoria flash programable de solo lectura (FROM)

Además, el controlador es capaz de almacenar información externamente.

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:).

Memoria flash (DESDE)

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

Figura 1‒1. Memoria del controlador

DRACMA
(TEMPERATURA)

Memoria de trabajo para el sistema.


Programas KAREL cargados
La mayoría de las variables KAREL

Memoria RAM CMOS

(PERMANENTE)

Programas TP cargados

Variables del sistema


Variables KAREL seleccionadas

DESDE Disco (FR:)


Programas guardados Disco RAM (RD:)
Datos guardados Programas guardados
Software del sistema Datos guardados

Almacenamiento fuera de línea

Programas y datos guardados

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

1.4.2 Sistema de Entrada/Salida

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.

Ver también:Capítulo 15SISTEMA DE ENTRADA/SALIDA,para más información

1‒10
MARRC75KR07091E Rev H 1. VISIÓN GENERAL DEL LENGUAJE KAREL

1.4.3 Dispositivos de interfaz de usuario

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.

Figura 1‒2. Controlador

enseñar colgante
Panel del operador
Cambio de modo

Conexión serie RS-232

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.

específico de la aplicaciónManual de configuración y operacionesproporciona descripciones de cada uno de los


dispositivos de interfaz de usuario, así como procedimientos para operar cada dispositivo.

1‒12
Capitulo 2

ELEMENTOS DEL LENGUAJE

Contenido

Capítulo 2 ELEMENTOS DEL LENGUAJE ........................................................................ 2-1


2.1 COMPONENTES DEL LENGUAJE.................................................... ..................... 2‒2
2.1.1 Conjunto de caracteres.................................................... .......................................... 2‒2
2.1.2 Operadores.................................................... ................................................ 2‒5
2.1.3 Palabras reservadas.................................................... ..................................... 2‒5
2.1.4 Identificadores definidos por el usuario.................................................... .......................... 2‒7
2.1.5 Etiquetas.................................................... .................................................... ... 2‒7
2.1.6 Identificadores predefinidos.................................................... ............................... 2‒8
2.1.7 Variables del sistema.................................................... ..................................... 2‒9
2.1.8 Comentarios.................................................... ............................................. 2‒10
2.2 DIRECTIVAS DEL TRADUCTOR.................................................... ................... 2‒10
2.3 TIPOS DE DATOS.................................................... .......................................... 2‒12
2.4 TIPOS Y ESTRUCTURAS DE DATOS DEFINIDOS POR EL USUARIO.................................... 2‒13
2.4.1 Tipos de datos definidos por el usuario.................................................... ....................... 2‒14
2.4.2 Estructuras de datos definidas por el usuario.................................................... ................ 2‒15
2.5 ARREGLOS.................................................... .......................................................... 2‒18
2.5.1 Matrices multidimensionales.................................................... ...................... 2‒18
2.5.2 Matrices de tamaño variable.................................................... ............................. 2‒20

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.

2.1 COMPONENTES DEL LENGUAJE

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

2.1.1 Conjunto de caracteres

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:

· Conjunto de caracteres ASCII


· Conjunto de caracteres multinacionales
· Conjunto de caracteres gráficos (no disponible en R-30iB)

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.

Ver también:Procedimiento incorporado de CHR,Apéndice A.

Tabla 2‒1. Conjunto de caracteres ASCII

Letras ABCDEFGHIJKLMNOPQRSTU VWXYZ


ABCDEFGHIJKLMNOPQRSTU VWXYZ

dígitos 0123456789

2‒2
MARRC75KR07091E Rev H 2. ELEMENTOS DEL LENGUAJE

Tabla 2‒1. Conjunto de caracteres ASCII (continuación)

simbolos @ < > = / * + - _ , ; : . ps

Caracteres especiales espacio en blanco o

avance de formulario (tratado como nueva línea)

pestaña (tratado como un espacio en blanco)

Las siguientes reglas son aplicables para el conjunto de caracteres ASCII:

· Los espacios en blanco o espacios son:


— Necesario para separar palabras reservadas e identificadores. Por ejemplo, la declaraciónPROGRAMA
prog_namedebe incluir un espacio en blanco entrePROGRAMAyprog_name.

— Permitido pero no requerido dentro de expresiones entre operadores simbólicos y sus operandos.
Por ejemplo, la declaraciónun = segundoes equivalente aa=b.

— Se utiliza para sangrar líneas en un programa.

· Retorno de carro o un punto y coma (;) sentencias separadas. Los retornos de carro también pueden aparecer en
otros lugares.

· Se requiere un retorno de carro o un punto y coma después de la instrucción BEGIN.


· Una línea se trunca después de 252 caracteres. Se puede continuar en la siguiente línea usando el
carácter de concatenación &.

Tabla 2‒2. Conjunto de caracteres multinacionales

simbolos ¡ ¢ £ ¥ § ¤

2
© a « О ±

3 1
µ ¶ · o

» ¼ ½ ¿

2‒3
2. ELEMENTOS DEL LENGUAJE MARRC75KR07091E Rev H

Tabla 2‒2. Conjunto de caracteres multinacionales (continuación)

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 û ü ÿ

Tabla 2‒3. Conjunto de caracteres gráficos

Letras ABCDEFGHIJKLMNOPQRSTU VWXYZ

dígitos 0123456789

simbolos @ < > = / * + - , ; : . ps " ^


H F C L V
Especial ♦ F R F
О ± norte

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.

Tabla 2‒4. Operadores KAREL

Aritmética + - * / DIV MODIFICACIÓN

Relacional < <= = <> >= >


booleano Y O NO
Especial >=< : # @

Las reglas de precedencia para estos operadores son las siguientes:

· Las expresiones entre paréntesis se evalúan primero.


· Dentro de un nivel dado de paréntesis, las operaciones se realizan comenzando con las de mayor
precedencia y procediendo a las de menor precedencia.

· Dentro del mismo nivel de paréntesis y precedencia de operadores, las operaciones se realizan de izquierda a
derecha.

Tabla 2‒5enumera los niveles de precedencia para los operadores KAREL.

Tabla 2‒5. Precedencia de operadores KAREL

OPERADOR NIVEL DE PRECEDENCIA

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

2.1.3 Palabras reservadas

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

Tabla 2‒6. Lista de palabras reservadas

ABORTAR CONSTITUCIÓN GET_VAR SIN PAUSA DETÉNGASE

SOBRE SEGUIR VAMOS NO CUERDA

abdominales COORDINADO IR NO, ESPERA ESTRUCTURA

DESPUÉS RC GRUPO DE DESPUÉS

A LO LARGO DE DEMORA GRUPO_ASSOC ABIERTO TIEMPO

ADEMÁS DESHABILITAR MANO O TEMPORIZADOR

Y DESCONECTAR MANTENER SENDERO A


FORMACIÓN DIV SI ENCABEZAMIENTO TPENABLE

ARRAY_LEN HACER EN PAUSA ESCRIBE

A ABAJO A INDEPENDIENTE POSICIÓN DESMANEJAR

ADJUNTAR DRACMA ENTERO ENCENDER UNINIT

LEJOS MÁS POS CONJUNTO PROGRAMA DESPAUSAR

EJE HABILITAR CONJUNTOPOS1 LEGUMBRES HASTA QUE

ANTES DE FINAL CONJUNTOPOS2 PURGA USANDO

EMPEZAR CONDICIÓN FINAL CONJUNTOPOS3 LEER VAR


BOOLEANO ENDFOR CONJUNTOPOS4 REAL VECTOR

POR TERMINARA SI CONJUNTOPOS5 PARIENTE A TRAVÉS DE

POR NOMBRE ENDMOVE CONJUNTOPOS6 RELAX VIS_PROCESO

BYTE ENDSELECT CONJUNTOPOS7 LIBERAR ESPERE

CAM_SETUP ESTRUCTURA FINAL CONJUNTOPOS8 REPETIR CUANDO

CANCELAR ENDURANDO CONJUNTOPOS9 RESTAURAR TIEMPO

CASO ENTREVISTA MODIFICACIÓN REANUDAR CON


CERCA ERROR MODELO DEVOLVER ESCRIBE

CMOS EVALUAR MUEVETE RUTINA XYZWPR

DOMINIO EVENTO CERCA SELECCIONE XYZWPREXT

COMMON_ASSOC FINAL NO ABORTAR SEMÁFORO

CONDICIÓN EXPEDIENTE NODO SET_VAR

CONFIGURAR POR DATOS DE NODO CORTO

CONECTAR DE SIN MENSAJE SEÑAL

Ver también:Índice de referencias a descripciones de palabras reservadas de KAREL

2‒6
MARRC75KR07091E Rev H 2. ELEMENTOS DEL LENGUAJE

2.1.4 Identificadores definidos por el usuario

Los identificadores definidos por el usuario representan constantes, tipos de datos, etiquetas de instrucciones, variables, nombres de rutinas y

nombres de programas. Identificadores

· Empezar con una letra


· Puede incluir letras, dígitos y guiones bajos
· Puede tener un máximo de 12 caracteres.
· Sólo puede tener un significado dentro de un ámbito particular. Referirse aSección 5.1.4.
· No pueden ser palabras reservadas
· Deben definirse antes de que puedan utilizarse.

Por ejemplo, el extracto del programa enDeclaración de identificadoresmuestra cómo declarar identificadores de programa,
variables y constantes.

Declaración de identificadores

PROGRAMA agente de mudanzas - - programa identificador (motor)


VAR
original : POSICIÓN --identificador de variable (original)
CONSTITUCIÓN

no_of_parts = 10 - - identificador constante (no_of_parts)

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.

· No se puede utilizar para transferir el control dentro o fuera de una rutina.

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

2.1.6 Identificadores predefinidos

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.

Tabla 2‒7. Identificador predefinido y resumen de valor

Identificador predefinido Escribe Valor

CIERTO BOOLEANO EN
FALSO APAGADO

EN BOOLEANO EN
APAGADO APAGADO

MÁXIMO ENTERO + 2147483647


MINIMA - 2147483648

RSMUNDO Tipo de orientación: 1


AESMUNDO $ORIENT_TYPE 2
ARTICULACIÓN DE LA MUÑECA 3
ARTICULACIÓN Tipo de movimiento: 6
LINEAL (o RECTO) $MOTYPE 7
CIRCULAR 8
MULTA Tipos de terminación: 1
GRUESO $TERMTYPE y 2
NARIZ $SEGTERMTYPE 3
NODECEL 4
VARDECEL 5

Tabla 2‒8. Resumen de identificadores predefinidos de archivos y puertos

Identificador predefinido Escribe

DIN (entrada digital) Matriz de puertos booleanos

DOUT (Salida digital)

2‒8
MARRC75KR07091E Rev H 2. ELEMENTOS DEL LENGUAJE

Tabla 2‒8. Resumen de identificadores predefinidos de archivos y puertos (continuación)

Identificador predefinido Escribe

GIN (entrada de grupo) Matriz de puertos enteros

GOUT (Salida de grupo)


AIN (entrada analógica)

AOUT (Salida analógica)

TPIN (Entrada del control remoto) Matriz de puertos booleanos

TPOUT (Salida del control remoto) RDI


(Entrada digital del robot)
RDO (Salida digital del robot) OPIN
(Entrada del panel del operador) OPOUT
(Salida del panel del operador) WDI
(Entrada de soldadura)

WDOUT (Salida de soldadura)

UIN (Entrada del panel del operador del usuario)

UOUT (Salida del panel del operador del usuario)

LDI (Entrada digital láser)

LDO (Salida digital láser) FLG


(Bandera)
MRK (Marcador)

LAI (entrada analógica láser) Matriz de puertos enteros

LAO (salida analógica láser)

TPDISPLAY (Pantalla KAREL del mando manual)* Expediente

TPERROR (Línea de mensaje del mando manual)


TPPROMPT (Línea de tecla de función del mando
manual)* TPFUNC (Línea de tecla de función del mando
manual)* TPSTATUS (Línea de estado del mando manual)*
INPUT (Teclado CRT/KB KAREL)*
OUTPUT (pantalla CRT/KB KAREL)*
CRTERROR (línea de mensaje CRT/KB)
CRTFUNC (línea de tecla de función CRT)*
CRTSTATUS (línea de estado CRT)*
CRTPROMPT (línea de aviso CRT)*
VIS_MONITOR (pantalla del monitor de visión)

* La entrada y salida se produce en el menú USUARIO de la consola portátil o CRT/KB.

2.1.7 Variables del sistema

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.

Comentarios desde dentro de un programa

- - Este programa, llamado mover, recoge 10 objetos


- - desde una POSICIÓN original y los baja
- - en una POSICIÓN de destino.
original : POSICIÓN - - POSICIÓN de objetos
destino : POSICIÓN - - Destino de los objetos
cuenta : ENTERO - - Número de objetos movidos

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.

2.2 DIRECTIVAS DEL TRADUCTOR

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

· Incluir otros archivos en un programa en el momento de la traducción


· Especificar atributos de tareas y programas

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

Tabla 2‒9. Traductor de directivas

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.

%DEFGRUPO = n Especifica el grupo de movimiento predeterminado que utilizará el traductor.

%DEMORA Especifica la cantidad de tiempo que se retrasará el programa cada 250


milisegundos.

%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.

%NOBUSYLAMP Especifica que la lámpara de ocupado estará APAGADA durante la ejecución.

%NOLOCKGROUP Especifica que esta tarea no bloqueará ningún grupo de movimiento.

%NOPAUSE = opción Especifica un conjunto de condiciones que impedirán pausar el programa.

%NOPAUSESHFT Especifica que la tarea no se detiene si se suelta la tecla shift de la consola portátil.

% PRIORIDAD = n Especifica la prioridad de la tarea.

%VARIOS DE SOMBRA Especifica que todas las variables por defecto se crean en SHADOW.

%TAMAÑO DE APILAMIENTO = n Especifica el tamaño de la pila en palabras largas.

%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.

Directiva %INCLUDE en un programa KARELilustra la directiva %INCLUDE.Incluir archivo mover_decs


para un programa KARELmuestra el archivo incluido.

Directiva %INCLUDE en un programa KAREL

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

- - en una posición de destino.


%INCLUIR mover_decs
- - Utiliza la directiva %INCLUDE para incluir el archivo
- - llamado mover_decs que contiene declaraciones BEGIN

Pinza MANO ABIERTA


- - Bucle para mover el número total de objetos FOR
count = 1 TO num_of_parts DO
- - Poner la posición en el registro de posición 1
SET_POS_REG(1,original,status)
- - Llame al programa TP para moverse a Posición Registrar
move_to_pr
CERRAR LA MANO pinza
SET_POS_REG(1,destino,estado)
move_to_pr
ABIERTO pinza manual

ENDFOR - - Fin de ciclo


mover FIN
El programa TP move_to_pr es un programa de una línea para
hacer el movimiento:
1:J PR[1] 100% FINO

Incluir archivo mover_decs para un programa KAREL

- - Declaraciones para mover programa en archivo mover_decs VAR

original : XYZWPR - - POSICIÓN de objetos


destino : XYZWPR - - Destino de los objetos
cuenta : ENTERO - - Número de objetos movidos
CONSTITUCIÓN

pinza = 1 - - Mano número 1


num_of_parts = 10 - - Número de objetos para mover

2.3 TIPOS DE DATOS

KAREL proporciona tres formas de tipos de datos para definir elementos de datos en un programa:

· Elementos de datos de tipo simple


— Se pueden asignar constantes o variables en un programa KAREL

— Se pueden asignar valores reales (literales) en un programa KAREL

— Puede asumir solo valores únicos

2‒12
MARRC75KR07091E Rev H 2. ELEMENTOS DEL LENGUAJE

· Elementos de datos de tipo estructurado


— Se definen como elementos de datos que permiten o requieren más de un único valor

— Son compuestos de datos simples y datos estructurados

· Elementos de datos de tipo definidos por el usuario


— Se definen en términos de tipos de datos existentes, incluidos otros tipos definidos por el usuario

— Pueden definirse como estructuras que constan de varios tipos de datos variables KAREL

— No puede incluirse a sí mismo

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.

Tabla 2‒10. Tipos de datos simples y estructurados

Simple Estructurado

BOOLEANO MATRIZ DE BYTE CONJUNTOPOS8

EXPEDIENTE CAM_SETUP CONJUNTOPOS9

ENTERO CONFIGURAR MODELO

REAL POS CONJUNTO SENDERO

CUERDA CONJUNTOPOS1 POSICIÓN

CONJUNTOPOS2 TIPO DE COLA

CONJUNTOPOS3 ARRAY DE CORTOS

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.

2.4 ESTRUCTURAS Y TIPOS DE DATOS DEFINIDOS POR EL USUARIO

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

2.4.1 Tipos de datos definidos por el usuario

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

· Incluya sus declaraciones en las secciones TYPE de un programa KAREL.


· Defina un nombre KAREL para representar un nuevo tipo de datos, descrito en términos de otros tipos de datos.
· Puede utilizar tipos de datos predefinidos necesarios para aplicaciones específicas.

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.

Ejemplo de tipo de datos definido por el usuario

CONSTITUCIÓN

n_páginas = 20
n_líneas = 40
std_str_lng = 8
ESCRIBE

std_string_t = CADENA [std_str_lng] std_table_t


= ARRAY [n_pages]& - - carácter de continuación
OF ARRAY [n_lines] OF std_string_t path_hdr_t
FROM main_prog = ESTRUCTURA - - tipo de datos definido por el usuario
ph_uframe: POSICIÓN
ph_utool: POSICIÓN
ESTRUCTURA FINAL
node_data_t DESDE main_prog = ESTRUCTURA
arma_en: BOOLEANO
flujo de aire: ENTERO
ESTRUCTURA FINAL
std_path_t DESDE main_prog =
RUTA PATHDATA = ruta_hdr_t NODEDATA = nodo_datos_t VAR

msg_table_1: std_table_t
msg_table_2: std_table_t
cadena_temp: std_string_t
costura_1_ruta: ruta_std_t

Uso

Los datos de tipo definidos por el usuario se pueden

2‒14
MARRC75KR07091E Rev H 2. ELEMENTOS DEL LENGUAJE

· Asignado a otras variables del mismo tipo


· Pasado como un parámetro
· Devuelto como una función

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

Un tipo de datos definido por el usuario no puede

· Incluirse a sí mismo
· Incluir cualquier tipo que lo incluya, ya sea directa o indirectamente
· Ser declarado dentro de una rutina

2.4.2 Estructuras de datos definidas por el usuario

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.

Con estructuras de datos definidas por el usuario, usted

· 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.

Definició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.

Acceso 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.

Definición de un rango de sentencias ejecutables

USAR struct_var, struct_var2 HACER


declaraciones
..
ENDURANDO

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.

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

— Matrices de longitud variable

— La propia estructura de datos, o cualquier tipo que la incluya, ya sea directa o indirectamente

— Cualquier estructura no definida previamente.

· 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 declarar matrices de cualquier tipo de datos excepto PATH.

Puede acceder a los elementos de estas matrices en un programa KAREL, desde el CRT/KB y desde el dispositivo
de enseñanza.

Además, puede definir dos tipos de matrices:

· Matrices multidimensionales
· Matrices de tamaño variable

2.5.1 Matrices multidimensionales

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.

Las matrices multidimensionales le permiten

· Declare las variables como arreglos con dos o tres (pero no más) dimensiones. VerDeclarar variables
como matrices con dos o tres dimensiones.

Declarar 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

· Acceda a elementos de estos arreglos en sentencias KAREL. VerAcceso a elementos de matrices


multidimensionales en declaraciones KAREL.

Acceso a elementos de matrices multidimensionales en declaraciones KAREL

nombre [subíndice_1, subíndice_2,...] = valor valor =


nombre [subíndice_1, subíndice_2,...]

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.

Declaración de parámetros de rutina como matrices multidimensionales

La rutina espera una matriz bidimensional de INTEGER.


ROUTINE array_user (array_param:ARRAY [*,*] OF INTEGER) Los siguientes
son equivalentes:
RUTINA nombre_rtn(parámetro_matriz: FORMACIÓN[*] DE ENTERO)
y
RUTINA nombre_rtn(parámetro_matriz: GAMA DE ENTERO)

· Acceda a elementos con comandos KCL y el dispositivo de enseñanza.


· Guarde y cargue matrices multidimensionales desde y hacia archivos de variables.

Restricciones

Las siguientes restricciones se aplican a matrices multidimensionales:

· 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

array_30 = ARRAY[30] DE ENTERO array_20_30 =


ARRAY[20] DE array_30
VAR
matriz_1: matriz_30
matriz_2: matriz_20_30
matriz_3: ARRAY[10] OF array_20_30
RUTINA usuario_matriz(datos_matriz: FORMACIÓN DE ENTERO

DE otro-prog
EMPEZAR

matriz_2 = matriz_3[10] - - asigna elementos array_3[10,1,1]


- - a través de array_3[10,20,30] para
matriz_2
matriz_2[2] = matriz_1 - - asigna elementos array_1[1] a
- - array_1 [30] a elementos array_2[2,1]
- - a través de array_2[2,30]
usuario_matriz(matriz_3[5,3]) - - pasa elementos array_3[5,3,1]
- - a través de array_3[5,3,30] a array_user

2‒19
2. ELEMENTOS DEL LENGUAJE MARRC75KR07091E Rev H

· El tipo de elemento no puede ser ninguno de los siguientes:


— Matriz (pero puede ser un tipo definido por el usuario que sea una matriz)

- Sendero

2.5.2 Matrices de tamaño variable

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.

Las matrices de tamaño variable le permiten

· Declare un tamaño de matriz como "a determinar" (*). VerIndica que el tamaño de una matriz
está "por determinar".

Indica que el tamaño de una matriz está "por determinar"

VAR
una_matriz_d: GAMA DE escribe
dos_d_matriz: FORMACIÓN[*,*] tipo de

· Determine un tamaño de matriz a partir de un archivo de variables o de un comando KCL CREATE


VAR en lugar del código fuente de KAREL.

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

Los arreglos de tamaño variable tienen las siguientes 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.

· Cuando se carga el archivo .PC, usa la dimensión establecida, de lo contrario usa 0.

2‒20
Traducido del inglés al español - www.onlinedoctranslator.com

MARRC75KR07091E Rev H 2. ELEMENTOS DEL LENGUAJE

• Las matrices de tamaño variable solo se permiten en la sección VAR y no en la sección TYPE de un programa.

• Las matrices de tamaño variable solo se permiten para variables estáticas.

2–21
Capítulo 3

USO DE OPERADORES

Contenido

Capítulo 3 USO DE OPERADORES ............................................................................ 3-1


3.1 EXPRESIONES Y ASIGNACIONES.................................................... ...... 3–2
3.1.1 Regla para Expresiones y Asignaciones.................................................... .. 3–2
3.1.2 Evaluación de Expresiones y Asignaciones.......................................... 3–2
3.1.3 Variables y Expresiones.................................................... ..................... 3–4
3.2 OPERACIONES.................................................... .......................................... 3–4
3.2.1 Operaciones aritméticas.................................................... ............................. 3–5
3.2.2 Operaciones relacionales.................................................... ............................. 3–6
3.2.3 Operaciones booleanas.................................................... ................................ 3–7
3.2.4 Operaciones Especiales.................................................... .................................. 3–8

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.

3.1 EXPRESIONES Y ASIGNACIONES

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.

3.1.1 Regla para Expresiones y Asignaciones

Las siguientes reglas se aplican a las expresiones y asignaciones:

• 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:

— Operandos INTEGER y REAL para producir un resultado REAL

— Operandos INTEGER y REAL para producir un resultado BOOLEAN

— Operandos INTEGER y VECTOR para producir un VECTOR

— Operandos REAL y VECTOR para producir un VECTOR

— Operandos POSICIÓN y VECTOR para producir un VECTOR


• Cualquier tipo de datos posicionales se puede sustituir por el tipo de datos POSICIÓN.

3.1.2 Evaluación de Expresiones y Asignaciones

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

Tabla 3–1. Resumen de tipos de resultados de operaciones

Operador + - * / DIV MOD < >,>= <=, > =< YO # @ :


<, >, = NO
Tipos 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

* * Mixto significa un operando de cada tipo

* * * Los valores VECTOR se pueden comparar usando = < > solamente

− Operación no permitida

YO ENTERO

R REAL

B BOOLEANO

VECTOR

POSICIÓN P

3–3
3. USO DE OPERADORES MARRC75KR07091E Rev H

3.1.3 Variables y Expresiones

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:

$VELOCIDAD = 200.00–asigna un valor REAL a una variable del sistema

cuenta = cuenta + 1–asigna un valor INTEGER a una variable INTEGER

Los tipos de datos devariableyexpresióndebe coincidir con tres excepciones:

• 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.

Ver también:Operaciones relacionales, funciones integradas ROUND y TRUNC, Apéndice A,


“Descripción alfabética del lenguaje KAREL”

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.

Tabla 3–2. Operadores KAREL

Operación Operador

Aritmética + - * / DIV MODIFICACIÓN

3–4
MARRC75KR07091E Rev H 3. USO DE OPERADORES

Tabla 3–2. Operadores KAREL (Continuación)

Operación Operador

Relacional < <= = <> >= >


booleano Y O NO
Especial >=< : # @

3.2.1 Operaciones aritmeticas

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.

Tabla 3–3. Operaciones aritméticas con los operadores +, - y *

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.

Tabla 3–4. Ejemplos de operaciones aritméticas

EXPRESIÓN RESULTADO

11 DIV 2 5
11 MODO 2 1

— El operador DIV trunca el resultado de una ecuación si no es un número entero.

— 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

Tabla 3–5. Operaciones aritméticas usando operandos bit a bit

EXPRESIÓN EQUIVALENTE BINARIO RESULTADO

5Y8 0101 Y 1000 0000 = 0


5u8 0101 O 1000 1101 = 13

-4Y8 1100 Y 1000 1000 = 8


-4u8 1100 o 1000 1100 = -4

NO 5 NO 0101 1010 = -6*


NO -15 NO 110001 1110 = 14*

* 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.

Tabla 3–6enumera los niveles de precedencia para los operadores KAREL.

Tabla 3–6. Precedencia de operadores KAREL

OPERADOR NIVEL DE PRECEDENCIA

NO Alto
:, @, # ↓
* , /, Y, DIV, MOD ↓
Unario + y -, O, +, - ↓
<, >, =, < >, < =, > =, > = < Bajo

3.2.2 Operaciones relacionales

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.

Tabla 3–7. Ejemplos de operaciones relacionales

EXPRESIÓN RESULTADO

'A' < 'AA' CIERTO

'A' = 'a' FALSO

4>2 CIERTO

17.3< > 5.6 CIERTO

(3 * 4) < > (4 * 3) FALSO

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.

3.2.3 Operaciones booleanas

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

Tabla 3–8. Resumen de operación BOOLEAN

OPERADOR OPERANDO 1 OPERANDO 2 RESULTADO

NO CIERTO − FALSO

FALSO − CIERTO

O CIERTO CIERTO CIERTO

FALSO

FALSO CIERTO

FALSO FALSO

Y CIERTO CIERTO CIERTO

FALSO FALSO

FALSO CIERTO

FALSO

Tabla 3–9. Operaciones BOOLEAN utilizando operadores AND, OR y NOT

EXPRESIÓN RESULTADO

DIN[1] Y DIN[2] VERDADERO si tanto DIN[1] como DIN[2] son VERDADEROS; de lo contrario FALSO

DIN[1] Y NO DIN[2] VERDADERO si DIN[1] es VERDADERO y DIN[2] es FALSO; de lo contrario FALSO

(x < y) O (y > z) VERDADERO si x < y o si y > z; de lo contrario FALSO

(i = 2) O (i = 753) VERDADERO si i = 2 o si i = 753; de lo contrario FALSO

3.2.4 Operaciones Especiales

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.

Las siguientes reglas se aplican a operaciones aproximadamente iguales:

• 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

SI percha >=< CURPOS (0,0) ENTONCES


— — Llame al programa move to perch
move_to_perch
MÁS
ABORTAR
TERMINARA SI

Operaciones de posición relativa

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

Figura 3–1. Determinación de w_handle en relación con el marco WORLD

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

mango_b de la manija a la que se hace referencia en el marco del PARACHOQUES.

La función incorporada KAREL INV invierte la dirección de la referencia.

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

Figura 3–2. Determinación de b_handle en relación con el bastidor BUMPER

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

Ver también:Capítulo 8DATOS DE POSICIÓN,Función integrada INV,Apéndice A.

Operaciones vectoriales

Las siguientes reglas se aplican a las operaciones VECTOR:

• 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

vect_1.x = 4; vect_1.y = 8; vect_1.z = 5 vect_2.x = 1;


vect_2.y = 2; vect_2.z = 4 vect_3 = vect_1 + vect_2

• Los operadores de multiplicación (*) y división (/) se pueden utilizar con

3–11
3. USO DE OPERADORES MARRC75KR07091E Rev H

— UN VECTOR y un operando ENTERO


— UN VECTOR y un operando REAL

El producto de un VECTOR y un ENTERO o de un VECTOR y un REAL es una versión escalada


del VECTOR. Cada componente del VECTOR se multiplica por el ENTERO (tratado como un
número REAL) o el REAL.

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).

Si el divisor es cero, el programa se cancela con el error "Dividir por cero".

• 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".

Tabla 3–10enumera ejemplos adicionales de operaciones vectoriales.

Tabla 3–10. Ejemplos de operaciones vectoriales

EXPRESIÓN RESULTADO

VEC(3.0,7.0,6.0) + VEC(12.6,3.2,7.5) (15.6, 10.2, 13.5)

VEC (7.6, 9.0, 7.0) - VEC (14.0, 3.5, 17.0) (-6.4,5.5,-10)

3–12
MARRC75KR07091E Rev H 3. USO DE OPERADORES

Tabla 3–10. Ejemplos de operaciones con vectores (continuación)

EXPRESIÓN RESULTADO

4,5 * VEC (3,2, 7,6, 4,0) (14.4,34.2,18.0)

VEC (12.7, 2.0, 8.3) * 7.6 (96.52,15.2,63.08)

VEC(17.3,1.5,0.23) /2 (8.65,0.75,0.115)

Operaciones con cadenas

Las siguientes reglas se aplican a las operaciones STRING:

• Puede especificar que una rutina KAREL devuelva una CADENA como su valor. VerEspecificación de una rutina
KAREL para devolver un valor STRING.

Especificación de una rutina KAREL para devolver un valor STRING

Nombre de la RUTINA (lista_parámetros): STRING


declara name como devolviendo un valor STRING

• Se puede usar un operador entre cadenas para indicar la concatenación de las cadenas. VerUsar un
operador para concatenar cadenas.

Usar un operador para concatenar cadenas

cadena_1 = cadena_2 + cadena_3 + 'ABC' + 'DEF'

• Las expresiones STRING se pueden usar en declaraciones WRITE. VerUso de una expresión STRING en una
instrucción WRITE.

Uso de una expresión STRING en una instrucción WRITE

ESCRIBIR(CHR(13) + cadena_1 + cadena_2)


escribe una sola cadena que consta de un carácter de
retorno seguido de cadena_1 y cadena_2

• 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

SI SUB_STR(cadena_1, 4, 1) = 'D' ENTONCES

• Puede construir una cadena a partir de otra cadena. VerConstruyendo una cadena a partir de otra cadena.

Construyendo una cadena a partir de otra cadena

RUTINA topper(p_char: INTEGER): CADENA


EMPEZAR
SI (p_char > 96) Y (p_char < 123) ENTONCES
p_char = p_char - 32 ENDIF

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

Capítulo 4 CONTROL DEL PROGRAMA ........................................................................... 4-1


4.1 VISIÓN GENERAL.................................................... .......................................................... 4–2
4.2 ESTRUCTURAS DE CONTROL DEL PROGRAMA.................................................... ..... 4–2
4.2.1 Estructuras de control de alternancia.................................................... ................ 4–2
4.2.2 Sentencias de control de bucle.................................................... ................... 4–3
4.2.3 Declaración de bifurcación incondicional.................................................... ............ 4–3
4.2.4 Declaraciones de control de ejecución.................................................... ................ 4–3
4.2.5 Controladores de condiciones.................................................... .................................. 4–4

4-1
4. CONTROL DE PROGRAMA MARRC75KR07091E Rev H

4.1 VISIÓN GENERAL

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.

4.2 ESTRUCTURAS DE CONTROL DEL PROGRAMA

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”.

4.2.1 Estructuras de control de alternancia

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.

Se pueden utilizar dos tipos de estructuras de control de alternancia:

• Declaración SI-proporciona un medio para especificar una de dos alternativas en función del valor de
una expresión BOOLEAN.

• Declaración SELECCIONAR-Se utiliza cuando se debe elegir entre varias alternativas. Se


elige una alternativa según el valor de la expresión INTEGER especificada.

Ver también:SI...ENTONCES Declaración,Apéndice A, instrucción SELECCIONAR,Apéndice A.

4–2
MARRC75KR07091E Rev H 4. CONTROL DE PROGRAMA

4.2.2 Sentencias de control de bucle

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.

• losinstrucción REPETIR-permite que la ejecución de una secuencia de sentencias continúe mientras


alguna expresión BOOLEAN siga siendo FALSA. La secuencia de sentencias ejecutables dentro de la
sentencia REPEAT siempre se ejecutará una vez.

• 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.

Ver también:PARA Declaración,Apéndice A, REPETIR Declaración,Apéndice A, MIENTRAS Declaración,


Apéndice A

4.2.3 Declaración de rama incondicional

La bifurcación incondicional le permite usar una declaración GO TO para transferir el control de un


lugar en un programa a una etiqueta específica en otra área del programa, sin depender de una
condición o expresión BOOLEAN.

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".

Ver también:IR A Declaración,Apéndice A.

4.2.4 Declaraciones de control 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.

• DEMORA-hace que la ejecución se suspenda por un tiempo específico, expresado en milisegundos.

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

4.2.5 Controladores 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

Capítulo 5 RUTINAS ............................................................................................. 5-1


5.1 EJECUCIÓN DE RUTINA.................................................... ............................ 5–2
5.1.1 Declaración de rutinas.................................................... .................................. 5–2
5.1.2 Rutinas de invocación.................................................... .................................... 5–5
5.1.3 Regreso de Rutinas.................................................... ........................ 5–7
5.1.4 Alcance de las Variables.................................................... .................................... 5–8
5.1.5 Parámetros y Argumentos.................................................... ..................... 5–9
5.1.6 Uso de la pila....................................................
.......................................... 5–13
5.2 RUTINAS INTEGRADAS.................................................... ............................... 5–15

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.

KAREL admite dos tipos de rutinas:

• Rutinas de procedimiento: no devolver un valor

• Rutinas de función: devolver un valor

Las rutinas KAREL pueden ser rutinas predefinidas llamadas rutinas integradas o pueden ser definidas por el usuario.

Las siguientes reglas se aplican a todas las rutinas de KAREL:

• 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.

• Las rutinas se pueden llamar o invocar:

— Por el programa en que se declaran


— Por cualquier rutina contenida en ese programa

— Con declaraciones de otro programa, consulteSección 5.1.1

5.1 EJECUCIÓN DE RUTINA

Esta sección explica la ejecución de rutinas de procedimientos y funciones:

• Declaración de rutinas

• Rutinas de invocación

• Volviendo de las rutinas

• Alcance de las variables

• Parámetros y Argumentos

5.1.1 Declaración de rutinas

Las siguientes reglas se aplican a las declaraciones de rutina:

• Una rutina no se puede declarar en otra rutina.

• 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

— Las sentencias ejecutables de 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:

— No se pueden especificar los tipos de datos PATH, FILE y vision.

— Las cláusulas FROM no están permitidas.

— Las cláusulas IN no están permitidas.

• 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.

Definición de rutinas locales usando una cláusula FROM


PROGRAMA funct_lib
RUTINA hecho_aún(x: REAL; s1, s2: CADENA): BOOLEAN DESDE funct_lib COMENZAR

IF done_todavía (3.2, 'T', '')


--
FIN funct_lib
RUTINA hecho_todavía
EMPEZAR

--
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.

— La cláusula FROM identifica el nombre del programa en el que se define la rutina.

— La rutina debe definirse localmente para el programa mencionado en la 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.

Los ejemplos enDeclaraciones de Trámites Locales y Externosilustrar declaraciones de rutinas de procedimientos


locales y externos.

5–3
5. RUTINAS MARRC75KR07091E Rev H

Declaraciones de Trámites Locales y Externos


PROGRAMA procs_lib
RUTINA espera un poco
- - procedimiento local, sin parámetros
BEGIN
DEMORA 20
FINAL espera un poco
RUTINA toggle_out(i: ENTERO)
- - procedimiento local, un parámetro
BEGIN
SALIDA[i] = ENCENDIDO - - referencia al parámetro i
RETARDO 1000
DOUT[i] = APAGADO
FIN alternar
RUTINA calc_dist(p1,p2: POSICIÓN; dist: REAL)& DESDE math_lib
- - procedimiento externo definido en math_lib.kL BEGIN

FIN procs_lib

El ejemplo enDeclaraciones de funcionesilustrar declaraciones de rutinas de funciones locales y externas.

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

suma_cuadrado: REAL --dinámico local variable


dx,dy: REAL - - dinámico local Variables
EMPEZAR
dx = x2-x1 - - parámetros de referencia x2 y x1
dy = y2-y1 - - hace referencia a los parámetros y2 e y1
sum_square = dx * dx + dy * dy RETURN(SQRT(sum_square)) --
SQRT es un END incorporado xy_dist

EMPEZAR
FIN funct_lib

Ver también:Cláusula FROM,Apéndice A, Declaración de RUTINA,Apéndice A.

5–4
MARRC75KR07091E Rev H 5. RUTINAS

5.1.2 Rutinas de invocación

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:

• Cuando se invoca una rutina, el control de la ejecución pasa a la rutina.

• 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.

Las siguientes reglas se aplican cuando se invocan rutinas de procedimientos y funciones:

• 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.

• La lista de argumentos está encerrada entre paréntesis.

• Las rutinas sin parámetros se llaman solo con el nombre de 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

RUTINA wait_a_bit DESDE proc_lib


- - procedimiento externo sin parámetros
RUTINA calc_dist(p1,p2: POSICIÓN; dist: REAL)& DESDE math_lib

- - procedimiento externo con tres parámetros


EMPEZAR

...
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

travel_time = distancia (prev_pos, next_pos)/current_spd


- - la función distancia se invoca como parte de una expresión en
- - una declaración de asignación

• 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

SI n = 0 ENTONCES REGRESA (1) DE LO


CONTRARIO REGRESA (n * factorial(n-1))
- - llamada recursiva al factorial ENDIF

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

5.1.3 Regresando de las 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.

Las siguientes reglas se aplican al regresar de una rutina:

• En un procedimiento, la instrucción RETURN no puede incluir un valor.

• Si no se ejecuta ninguna sentencia RETURN, la sentencia END restaura el control al programa o rutina que
llama.

Procedimiento RETURN Declaracionesilustra algunos ejemplos del uso de la instrucción RETURN en un


procedimiento.

Procedimiento RETURN Declaraciones


ROUTINE gun_on (error_flag: INTEGER)
- - realiza alguna operación mientras se enciende una "pistola"
- - regresa de diferentes declaraciones dependiendo de qué,
- - si lo hay, se produce un error.
Pistola VAR: ENTERO
EMPEZAR

SI error_flag = 1 ENTONCES REGRESAR


- - salida anormal de la rutina, vuelve antes
- - ejecutando WHILE círculo
ENDIF
MIENTRAS DIN[pistola] HACER

- - continúa hasta que el arma está apagada


...
SI error_flag = 2 ENTONCES REGRESAR
- - salida anormal de la rutina, vuelve de
- - dentro de TIEMPO círculo
TERMINARA SI

ENTREVISTA - - pistola esta apagado

FIN gun_on - - salida normal de la rutina

• 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.

• La rutina de función puede devolver cualquier tipo de datos excepto

- 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.

Función RETORNO Declaracionesilustra algunos ejemplos utilizando la sentencia RETURN en rutinas de


funciones.

Función RETORNO Declaraciones


ROUTINE index_value (tabla: ARRAY of INTEGER;
tamaño_tabla: ENTERO): ENTERO
- - Devuelve el valor de índice del bucle FOR (i) dependiendo de
- - condición de la sentencia IF. Devuelve 0 en los casos en que
- - SI la condición no se cumple. VAR i:
ENTERO
EMPEZAR

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

Ver también:Declaración de RUTINA,Apéndice A.

5.1.4 Alcance de las variables

El alcance de una declaración de variable puede ser

• Global

5–8
MARRC75KR07091E Rev H 5. RUTINAS

• Local

Declaraciones y definiciones globales

Las siguientes reglas se aplican a las declaraciones y definiciones globales:

• Las declaraciones globales se reconocen en todo el programa.

• 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:

— Todos los identificadores predefinidos se reconocen en todo el programa.

— 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.

Declaraciones y definiciones locales

Las siguientes reglas se aplican a las declaraciones y definiciones locales:

• 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.

5.1.5 Parámetros y Argumentos

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.

Las siguientes reglas se aplican a la lista de parámetros de una llamada de 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:

— Se puede pasar un argumento INTEGER a un parámetro REAL. En este caso, el valor


INTEGER se trata como tipo REAL y el equivalente REAL del INTEGER se pasa por
valor a la rutina.
— Un argumento BYTE o SHORT se puede pasar por valor a un parámetro INTEGER o REAL.

— 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.

Parámetros y argumentos correspondientesmuestra un ejemplo de una declaración de rutina y tres


llamadas a esa rutina.

Parámetros y argumentos correspondientes


Parámetros de PROGRAMA

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

• Cuando se invoca la rutina, el argumento utilizado en la llamada de rutina se pasa al parámetro


correspondiente. Se utilizan dos métodos para pasar argumentos a parámetros:

— Pasar argumentos por referencia

5–10
MARRC75KR07091E Rev H 5. RUTINAS

Si un argumento se pasa por referencia, el parámetro correspondiente comparte la misma ubicación de


memoria que el argumento. Por lo tanto, cambiar el valor del parámetro cambia el valor del argumento
correspondiente.

— Pasar argumentos por valor

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:

— Variables de matriz de puertos

— Variables ENTERAS pasadas a parámetros REALES

— Argumentos BYTE y SHORT pasados a parámetros INTEGER o REAL


— Variables del sistema con acceso de solo lectura (RO)

— Parámetros posicionales que deben convertirse

• 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.

Pasar argumentos variables


Referencia PROGRAMA
VAR arg : INTEGER ROUTINE
test(param : INTEGER) BEGIN

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

La salida del programa enPasar argumentos variableses como sigue:


valor del parámetro: 15

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 especificar el nombre de la variable en la lista de parámetros. Por ejemplo,


otro_rtn(param_var)pasa la variableparam_vara la rutinaotro_rtn.Para escribir esta
declaración, debe conocer el nombre de la variable que se va a pasar.

— 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))

Consulte el Apéndice A para obtener más información sobre BYNAME.

• 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.

Paso correcto de un ARRAY


PROGRAMA correcto
VAR a : ARRAY[8] de ENTERO
RUTINA rtn_ary : ARRAY de INTEGER ROUTINE DESDE util_prog
print_ary(arg : ARRAY de INTEGER)
VAR i : ENTERO
EMPEZAR
PARA i = 1 a ARRAY_LEN(arg) HACER
ESCRIBIR(arg[i],cr)
ENDFOR
FINAL imprimir_ario
EMPEZAR

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.

Paso incorrecto de un ARRAY


PROGRAMA incorrecto
RUTINA rtn_ary : ARRAY de INTEGER ROUTINE DESDE util_prog
print_ary(arg : ARRAY de INTEGER)
VAR i : ENTERO
EMPEZAR

PARA i = 1 a ARRAY_LEN(arg) HACER


ESCRIBIR(arg[i],cr)
ENDFOR
FINAL imprimir_ario
EMPEZAR
imprimir_ario(rtn_ario)
FIN mal

Ver también:Función integrada ARRAY_LEN,Apéndice A, Función incorporada STR_LEN,Apéndice A,


Apéndice E, "Diagramas de sintaxis

5.1.6 Uso de pila

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.

El uso de la pila se puede calcular de la siguiente manera:

• Cada llamada (o referencia de función) utiliza al menos cinco palabras de pila.

• 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.

Tabla 5–1. Uso de pila

Escribe Parámetro Pasado por Parámetro Pasado por Variable local


Referencia Valor

BOOLEANO 1 2 1
MATRIZ DE BOOLEANO No permitido 1 + tamaño de matriz

MATRIZ DE BYTE 1 No permitido 1 + (tamaño de matriz)/4

CAM_SETUP 1 No permitido No permitido


ARRAY DE CAM_SETUP No permitido No permitido

5–13
5. RUTINAS MARRC75KR07091E Rev H

Tabla 5–1. Uso de la pila (continuación)

Escribe Parámetro Pasado por Parámetro Pasado por Variable local


Referencia Valor

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

EXPEDIENTE 1 No permitido No permitido


ARRAY DE ARCHIVO No permitido No permitido

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

MODELO 1 No permitido No permitido


ARRAY DE MODELO 1 No permitido No permitido

SENDERO 2 No permitido No permitido

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

ARRAY DE CORTOS 1 No permitido 1 + (tamaño de matriz)/2

5–14
MARRC75KR07091E Rev H 5. RUTINAS

Tabla 5–1. Uso de la pila (continuación)

Escribe Parámetro Pasado por Parámetro Pasado por Variable local


Referencia Valor

CUERDA 2 2 + (cadena (longitud de la cadena+2)/4

ARRAY DE CADENA 1 longitud+2)/4no permitido 1+((longitud de la cadena+2)

* tamaño de matriz)/4

VECTOR 1 4 3
MATRIZ DE VECTORES 1 No permitido 1 + 3 * tamaño de matriz

VIS_PROCESO 1 No permitido No permitido


ARRAY DE VIS_PROCESS 1 No permitido No permitido

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

ARRAY [m,n] DE algún_tipo 1 No permitido m(tamaño elemento/4 * n + 1)+1

ARRAY [l,m,n] DE algún_tipo 1 No permitido l(m(tamaño elemento/4 * n + 1)+1)+1

5.2 RUTINAS INTEGRADAS

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.

Tabla 5–2. Resumen de rutinas integradas de KAREL

Categoría identificador

Por nombre CALL_PROG CURR_PROG PROG_LISTA


CALL_PROGLIN ARCHIVO_LISTA VAR_INFO
VAR_LIST

5–15
5. RUTINAS MARRC75KR07091E Rev H

Tabla 5–2. Resumen de rutinas integradas de KAREL (continuación)

Categoría identificador

Adquisición de datos DAQ_CHECKP DAQ_START DAQ_UNREG


DAQ_REGPIPE DAQ_STOP DAQ_ESCRIBIR

Transferencia de datos entre RGET_PORTCMT RGET_STR_REG RSET_PORTSIM


Robots a través de Ethernet RGET_PORTSIM RNREG_RECV RSET_PORTVAL
RGET_PORTVAL RNREG_SEND RSET_PREGMT
RGET_PREGCMT RPREG_RECV RSET_REALREG
RGET_REG RPREG_SEND RSET_REG_CMT
RGET_REG_CMT RSET_INT_REG RSET_SREGCMT
RGET_SREGCMT RSET_PORTCMT RSET_STR_REG

Manejo de códigos de error ERR_DATOS POST_ERR POST_ERR_L

Operación de archivos y dispositivos CHECK_NOMBRE MOUNT_DEV XML_ADDTAG


COMPARAR_ARCHIVO MOVER_ARCHIVO XML_GETDATA
COPIAR ARCHIVO IMPRIMIR ARCHIVO XML_REMTAG
BORRAR ARCHIVO PURGAR_DEV XML_ESCANEAR

DESMONTAR_DEV RENOMBRAR ARCHIVO XML_SETVAR


DOSFILE_INF
FORMATO_DEV

Comunicaciones de iPhone RMCN_SEND RMCN_ALERT

E/S serie, uso de archivos BYTES_AHEAD IO_ESTADO SET_FILE_ATR


BYTES_LEFT MSG_CONECTAR SET_FILE_POS
CLR_IO_STAT MSG_DISCO SET_PORT_ATR
GET_FILE_POS MSG_PING VOL_ESPACIO
GET_PORT_ATR TUBERÍA_CONFIG

Configuración de E/S de proceso CLR_PORT_SIM GET_PORT_SIM SET_PORT_CMT


GET_PORT_ASG GET_PORT_VAL SET_PORT_MOD
GET_PORT_CMT IO_MOD_TYPE SET_PORT_SIM
GET_PORT_MOD SET_PORT_ASG SET_PORT_VAL

Operación KCL KCL KCL_NO_WAIT KCL_STATUS

Operación de memoria CLARO PROG_RESPALDO RENAME_VARS


CREAR_VAR PROG_CLEAR AHORRAR

CARGA PROG_RESTORE GUARDAR_DRAM


LOAD_STATUS RENAME_VAR

Espejo ESPEJO

Movimiento y Programa CNCL_STP_MTN MOVIMIENTO_CTL REINICIAR

Control

5–16
MARRC75KR07091E Rev H 5. RUTINAS

Tabla 5–2. Resumen de rutinas integradas de KAREL (continuación)

Categoría identificador

Multiprogramación ABORTAR_TAREA PAUSA_TAREA SEMA_COUNT


CLEAR_SEMA PEND_SEMA SET_TSK_ATTR
CONT_TAREA POST_SEMA SET_TSK_NOMBRE
GET_TSK_INFO EJECUTAR_TAREA UNLOCK_GROUP
LOCK_GROUP

Operación de ruta APPEND_NODE ELIMINAR NODO NODE_SIZE


COPY_PATH INSERTAR_NODO PATH_LEN

Computadora personal ADD_BYNAMEPC ADD_REALPC SEND_DATAPC


Comunicaciones ADD_INTPC ADD_STRINGPC SEND_EVENTPC

Posición CHECK_EPOS CUADRO TPV


CNV_JPOS_REL EN EL RANGO POS2JUNTA
CNV_REL_JPOS J_IN_RANGE SET_PERCH
CURSOS JOINT2POS UNPOS
CURJPOS

Administrador de colas APLICACIÓNEND_QUEUE GET_QUEUE INSERT_QUEUE


COPY_QUEUE INIT_QUEUE
DELETE_QUEUE MODIFY_QUEUE

Registrar Operación CLR_POS_REG GET_SREG_CMT SET_POS_REG


GET_JPOS_REG GET_STR_REG SET_PREG_CMT
GET_POS_REG POS_REG_TYPE SET_REAL_REG
GET_PREG_CMT SET_EPOS_REG SET_REG_CMT
OBTENER_REG SET_INT_REG SET_SREG_CMT
GET_REG_CMT SET_JPOS_REG SET_STR_REG

Operación de cadena CNV_CNF_STRG CNV_STR_CONF STR_LEN


CNV_CONF_STR CNV_STR_INT SUB_STR
CNV_INT_STR CNV_STR_REAL
CNV_REAL_STR

Sistema abdominales porque REDONDO


ACOS Exp SET_VAR
ARRAY_LEN GET_VAR PECADO

COMO EN ÍNDICE SQRT


ATAN2 INV BRONCEARSE

POR NOMBRE LN TRONCO


CDH PEDIDO UNINIT

Operación de hora del día CNV_STR_TIME CONSIGUE TIEMPO GET_USEC_TIM


CNV_TIME_STR GET_USEC_SUB FIJAR TIEMPO

5–17
5. RUTINAS MARRC75KR07091E Rev H

Tabla 5–2. Resumen de rutinas integradas de KAREL (continuación)

Categoría identificador

Programa TPE AVL_POS_NUM GET_POS_FRM SET_ATTR_PRG


CLOSE_TPE GET_POS_TPE SET_EPOS_TPE
COPY_TPE GET_POS_TYP SET_JPOS_TPE
CREAR_TPE GET_TPE_CMT SET_POS_TPE
DEL_INST_TPE GET_TPE_PRM SET_TPE_CMT
GET_ATTR_PRG OPEN_TPE SET_TRNS_TPE
GET_JPOS_TPE SELECT_TPE

Traducir TRADUCIR

Interfaz de usuario ACT_PANTALLA DET_VENTANA INI_DYN_DISS


ADD_DICT DISCTRL_ALPH INIT_TBL
DISCTRL_FORM POP_KEY_RD
ACT_TABLA DISCTRL_LIST PUSH_KEY_RD
ATT_WINDOW_D DISCTRL_PLMN LEER_DICT
ATT_WINDOW_S DISCTRL_SBMN LEER_DICT_V
CHECK_DICT DISCTRL_TBL LEER_KB
CNC_DYN_DISB FORCE_SPMENÚ REMOVE_DICT
CNC_DYN_DISE INI_DYN_DISB SET_CURSOR
CNC_DYN_DISI INI_DYN_DISE SET_LANG
CNC_DYN_DISP INI_DYN_DISI ESCRIBIR_DICT
CNC_DYN_DISR INI_DYN_DISP ESCRIBIR_DICT_V
CNC_DYN_DIS INI_DYN_DISR
DEF_PANTALLA
DEF_VENTANA

Vector ACERCARSE ORIENTAR

Operación de visión V_CAM_CALIB V_INIT_QUEUE V_START_VTRK


V_GET_OFFSET V_STOP_VTRK
V_GET_PASSFL V_OVERRIDE VREG_FND_POS
VREG_OFFSET
V_GET_QUEUE V_RALC_QUEUE
V_RUN_FIND
V_SET_REF

5–18
Capítulo 6

MANEJADORES DE CONDICIONES

Contenido

Capítulo 6 MANEJADORES DE CONDICIONES ........................................................................ 6-1


6.1 OPERACIONES DEL MANEJADOR DE CONDICIONES.................................................... ..... 6–3
6.1.1 Manejadores de condiciones globales.................................................... ...................... 6–3
6.2 CONDICIONES.................................................... .......................................... 6–6
6.2.1 Condiciones de Port_Id....................................................
.................................... 6–7
6.2.2 Condiciones Relacionales.................................................... ............................. 6–7
6.2.3 Condiciones de eventos del sistema y del programa.................................................... .. 6–8
6.3 ACCIONES.................................................... ................................................ 6–11
6.3.1 Acciones de asignación.................................................... ............................... 6–11
6.3.2 Acciones relacionadas con el movimiento.................................................... .......................... 6–12
6.3.3 Acciones de llamadas de rutina....................................................
............................... 6–13
6.3.4 Acciones misceláneas.................................................... .......................... 6–14

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.

Tabla 6–1. Condiciones

puerto_id[n] ERROR[n]

NO port_id[n] EVENTO[n]

puerto_id[n]+ ABORTAR

puerto_id[n]- PAUSA

operando = operando SEGUIR

operando <> operando SEMÁFORO[n]

operando < operando

operando <= operando

operando > operando

operando >= operando

Tabla 6–2enumera las acciones que se pueden tomar.

Tabla 6–2. Comportamiento

variable = expresión NO ABORTAR

port_id[n] = expresión SIN MENSAJE

DETÉNGASE SIN PAUSA

CANCELAR HABILITAR CONDICIÓN[n]

REANUDAR CONDICIÓN DE DESHABILITACIÓN[n]

MANTENER PULSO DOUT[n] PARA t

DESMANEJAR DESPAUSAR

nombre_rutina ABORTAR

EVENTO DE SEÑAL[n] SEGUIR

6–2
MARRC75KR07091E Rev H 6. MANEJADORES DE CONDICIONES

Tabla 6–2. Acciones (continuación)

PAUSA

SEMÁFORO DE SEÑAL[n]

6.1 OPERACIONES DEL MANEJADOR DE CONDICIONES

Tabla 6–3resume las operaciones del controlador de condiciones.

Tabla 6–3. Operaciones del controlador de condiciones

OPERACIÓN MANEJADOR DE CONDICIONES GLOBAL

Definir CONDICIÓN[n]:<CON $SCAN_TIME = n>. CUANDO las


condiciones HACEN acciones
CONDICIÓN FINAL

Habilitar ENABLE CONDITION[n] (declaración o acción)

Deshabilitar DISABLE CONDITION[n] (declaración o acción) o condiciones satisfechas

Purga CONDICIÓN DE PURGA[n] (sentencia), programa terminado

6.1.1 Controladores de condiciones globales

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

Tabla 6–4. Intervalo entre exploraciones del controlador de condiciones globales

"norte" Intervalo entre escaneos

n <= $COND_TIME $COND_TIME

$COND_TIME < n <= (2 * $COND_TIME) (2 * $COND_TIME)

(2 * $COND_TIME) < n <= (4 * $COND_TIME) (4 * $COND_TIME)

(4 * $COND_TIME) < n <= (8 * $COND_TIME) (8 * $COND_TIME)

(8 * $COND_TIME) < n <= (16 * $COND_TIME) (16 * $COND_TIME)

(16 * $COND_TIME) < n <= (32 * $COND_TIME) (32 * $COND_TIME)

(32 * $COND_TIME) < n <= (64 * $COND_TIME) (64 * $COND_TIME)

(64 * $COND_TIME) < n <= (128 * $COND_TIME) (128 * $COND_TIME)

(128 * $COND_TIME) < n <= (256 * $COND_TIME) (256 * $COND_TIME)

(256 * $COND_TIME) < n (512 * $COND_TIME)

• 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

Definiciones de manejadores de condiciones globales

CONDICIÓN[1]: - - define el número del manejador de condiciones


1
CUANDO DIN[1] DO DOUT[1] = VERDADERO - - desencadenado si alguno
CUANDO DIN[2] DO DOUT[2] = VERDADERO - - de las cláusulas WHEN
CUANDO DIN[3] DO DOUT[3] = VERDADERO - - Está satisfecho
CONDICIÓN FINAL
CONDICIÓN[2]: - - define el manejador de condiciones número 2
CUANDO PAUSA HACER - - se activa una condición
AOUT[velocidad de salida] = 0 - - múltiples acciones
DOUT[pausa_luz] = CIERTO

HABILITAR CONDICIÓN [2] - - habilita esta condición

6–4
MARRC75KR07091E Rev H 6. MANEJADORES DE CONDICIONES

CONDICIÓN FINAL - - controlador de nuevo


CONDICIÓN[3]:
CUANDO DIN[1] Y DIN[2] Y DIN[3] HACEN --múltiples
SALIDA[1] = VERDADERO - - condiciones separadas por AND;
SALIDA[2] = VERDADERO - - las tres condiciones deben ser
SALIDA[3] = VERDADERO - - satisfecho al mismo tiempo
CONDICIÓN FINAL

• 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 instrucción o acción ENABLE habilita el controlador de condiciones especificado. El controlador de


condiciones se escaneará durante la siguiente operación de escaneo y se seguirá escaneando hasta que
se deshabilite.

— 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.

— La instrucción PURGE elimina la definición del controlador de condición especificado.

• 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.

Uso de controladores de condiciones globalesmuestra ejemplos de activación, desactivación y depuración de controladores de


condiciones globales.

Uso de controladores de condiciones globales

CONDICIÓN[1]: - - define el manejador de condiciones número 1


CUANDO line_stop = VERDADERO DO DOUT[1] = FALSO
CONDICIÓN FINAL
CONDICIÓN[2]: - - define el manejador de condiciones número 2
CUANDO line_go = VERDADERO HACER
DOUT[1] = VERDADERO, CONDICIÓN DE HABILITACIÓN [1]
CONDICIÓN DE FIN
HABILITAR CONDICIÓN[2] --el manejador de condiciones 2 está
habilitado. . .
SI está listo ENTONCES line_go = TRUE; TERMINARA SI
- - Si listo es VERDADERO, se activa el manejador de condiciones 2 (y
- - deshabilitado) y el manejador de condiciones 1 está habilitado.
- - De lo contrario, el manejador de condiciones 2 no se activa (y se
- - aún habilitado), el controlador de condición 1 aún no está habilitado,
- - y las próximas dos sentencias no tendrán efecto. DESHABILITAR
CONDICIÓN[1]
HABILITAR CONDICIÓN[2]

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:

• Después de habilitar un controlador de condiciones, se supervisan las condiciones especificadas.

— 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.

Ver también:Cláusula EVAL,Apéndice A.

6–6
MARRC75KR07091E Rev H 6. MANEJADORES DE CONDICIONES

6.2.1 Condiciones de Port_Id

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.

Tabla 6–5. Condiciones de Port_Id

CONDICIÓN SATISFECHO (VERDADERO) CUANDO

puerto_id[n] El puerto digital n es VERDADERO. (estado)

NO port_id[n] El puerto digital n es FALSO. (estado)

puerto_id[n]+ El puerto digital n cambia de FALSO a VERDADERO. (evento)

puerto_id[n]- El puerto digital n cambia de VERDADERO a FALSO. (evento)

• 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:

CUANDO DIN[1] Y NO DIN[2] HACER . . .

Tenga en cuenta que una señal de entrada debe permanecer ENCENDIDA o APAGADA durante el tiempo de exploración mínimo para garantizar

que se detecte su estado.

• 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 . . .

6.2.2 Condiciones relacionales

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

Tabla 6–6. Condiciones Relacionales

CONDICIÓN SATISFECHO (VERDADERO) CUANDO

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

operando < = operando

operando > operando

operando > = operando

Las siguientes reglas se aplican a las condiciones relacionales:

• 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:

CUANDO DIN[1] = ON DO . . . CUANDO - - port_id y constante


bandera = VERDADERO HACER . . . - - variable y constante
CUANDO AIN[1] >= temp DO . . . - - port_id y variable
CUANDO bandera_1 <> bandera_2 HACER . . . --variable y variable
CUANDO AIN[1] <= EVAL(temp * scale) DO . . .
- - port_id y cláusula EVAL
CUANDO dif > EVAL(max_count - count) DO . . .
- - variable y cláusula EVAL

• 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.

Ver también:Cláusula EVAL,Apéndice A.

6.2.3 Condiciones de eventos del sistema y del programa

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.

Tabla 6–7. Condiciones de eventos del sistema y del programa

CONDICIÓN SATISFECHO (VERDADERO) CUANDO

ERROR [n] Se alcanza el error especificado por n o, si n = *, se produce cualquier error. (evento)

EVENTO[n] Se señala el evento especificado por n. (evento)

ABORTAR El programa es abortado. (evento)

PAUSA El programa está en pausa. (evento)

SEGUIR El programa continúa. (evento)

ENCENDER El programa continúa. (evento)

SEMÁFORO[n] Se publica el valor del semáforo especificado por n.

Las siguientes reglas se aplican a estas condiciones:

Condición de ERROR

• La condición de ERROR se puede usar para monitorear la ocurrencia de un error en particular


especificando el código de error para ese error. Por ejemplo, ERROR[15018] supervisa la aparición del
error representado por el código de error 15018.

Los códigos de error se enumeran en el siguiente formato:

ffccc (decimal)

dónde

ff representa el código de instalación del error


ccc representa el código de error dentro de la instalación especificada

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 EVENT monitorea la ocurrencia del evento de programa especificado. La sentencia o


acción SIGNAL en un programa indica que ha ocurrido un evento.

• 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

• La condición ABORT supervisa la cancelación de la ejecución del programa. Si se produce un ABORT, se


realizan las acciones correspondientes. Sin embargo, si una de las acciones es una llamada de rutina, la
rutina no se ejecutará porque se canceló la ejecución del programa.

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

específico de la aplicaciónManual de configuración y operacionespara códigos de error.Manual de códigos de error de FANUC


America Corporation.

6.3 COMPORTAMIENTO

Las acciones se especifican en la lista de acciones de una cláusula WHEN. Las acciones pueden ser

• Acciones de KAREL especialmente definidas que se ejecutan en paralelo con el programa

• Una llamada de rutina, que interrumpirá la ejecución del programa.

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.

Ver también:Acciones y Declaraciones,Apéndice A.

6.3.1 Acciones de asignación

Las acciones de asignación disponibles se dan enTabla 6–8.

Tabla 6–8. Acciones de asignación

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.

port_id[n] = expresión El valor de la expresión se asigna al elemento de la matriz de puertos al que


hace referencia n. La expresión puede ser una variable, una constante o una
cláusula EVAL.

6–11
6. MANEJADORES DE CONDICIONES MARRC75KR07091E Rev H

Las siguientes reglas se aplican a las acciones de asignación:

• 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:

SALIDA[1] = SALIDA[2] - - inválido acción


puerto_var = DOUT[2] - - acción válida, donde port_var es una variable
DOUT[1] = puerto_var - - otra acción válida, que si se ejecuta
- - después de port_var = DOUT[2], tendría efecto
- - asignar DOUT[2] a DOUT[1]

• 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.

6.3.2 Acciones relacionadas con el movimiento

Las acciones relacionadas con el movimiento afectan el movimiento actual y pueden afectar los movimientos
posteriores. se dan enTabla 6–9.

Tabla 6–9. Acciones relacionadas con el movimiento

ACCIÓN RESULTADO

DETÉNGASE El movimiento actual se detiene.

REANUDAR Se reanuda el último movimiento detenido.

CANCELAR El movimiento actual se cancela.

MANTENER Se mantiene el movimiento actual. Los movimientos posteriores no se inician.

DESMANEJAR Se libera el movimiento retenido.

6–12
MARRC75KR07091E Rev H 6. MANEJADORES DE CONDICIONES

Las siguientes reglas se aplican a las acciones relacionadas con el movimiento:

• 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.

6.3.3 Acciones de llamadas de rutina

Las acciones de llamada de rutina, o rutinas de interrupción, se especifican mediante

<CON $PRIORIDAD = n> nombre_rutina

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

6.3.4 Acciones misceláneas

Tabla 6–10describe otras acciones permitidas.

Tabla 6–10. Acciones misceláneas

ACCIÓN RESULTADO

EVENTO DE SEÑAL[n] Se señala el evento especificado por n.

SIN MENSAJE El mensaje de error que de otro modo se habría generado no se


muestra ni se registra.

SIN PAUSA La ejecución del programa se reanuda si el programa se pausó o se impide que
se pause.

NO ABORTAR La ejecución del programa se reanuda si el programa se abortó o si se evita


que se aborte.

ABORTAR Se cancela la ejecución del programa.

SEGUIR La ejecución del programa continúa.

PAUSA La ejecución del programa está en pausa.

SEMÁFORO DE SEÑAL[n] Se señala el semáforo especificado.

HABILITAR CONDICIÓN[n] El manejador de condiciones n está habilitado.

CONDICIÓN DE DESHABILITACIÓN[n] El manejador de condiciones n está deshabilitado.

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

OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS

Contenido

Capítulo 7 OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS .................................................... ..... 7-1


7.1 VISIÓN GENERAL.................................................... ............................................................. 7–3
7.2 VARIABLES DEL ARCHIVO.................................................... ..................................... 7–3
7.3 DECLARACIÓN DE ARCHIVO ABIERTO.................................................... ......................... 7–4
7.3.1 Configuración de atributos de archivos y puertos.................................................... ............... 7–5
7.3.2 Cadena de archivo.................................................... ............................................................. 7–10
7.3.3 Cadena de uso.................................................... .......................................... 7–11
7.4 DECLARACIÓN DE CIERRE DE ARCHIVO.................................................... ...................... 7–13
7.5 LEER DECLARACIÓN.................................................... ................................ 7–14
7.6 ESCRIBIR DECLARACIÓN.................................................... ............................... 7–16
7.7 BÚFER DE ENTRADA/SALIDA.................................................... ........................ 7–17
7.8 FORMATO DE ENTRADA/SALIDA DE TEXTO (ASCII)............................................ 7–18
7.8.1 Formateo de elementos de datos INTEGER.................................................... ............ 7–19
7.8.2 Formateo de elementos de datos REALES.................................................... .................. 7–22
7.8.3 Formateo de elementos de datos BOOLEAN.................................................... .......... 7–25
7.8.4 Formateo de elementos de datos STRING.................................................... .............. 7–27
7.8.5 Formateo de elementos de datos VECTOR.................................................... ............. 7–30
7.8.6 Formateo de elementos de datos posicionales.................................................... ........... 7–31
7.9 FORMATO DE ENTRADA/SALIDA BINARIA.................................................... .. 7–33
7.9.1 Formateo de elementos de datos INTEGER.................................................... ............ 7–34
7.9.2 Formateo de elementos de datos REALES.................................................... .................. 7–35
7.9.3 Formateo de elementos de datos BOOLEAN.................................................... .......... 7–35
7.9.4 Formateo de elementos de datos STRING.................................................... .............. 7–35
7.9.5 Formateo de elementos de datos VECTOR.................................................... ............. 7–36
7.9.6 Formateo de elementos de datos de POSICIÓN.................................................... ........... 7–36
7.9.7 Formateo de elementos de datos XYZWPR.................................................... ............ 7–36
7.9.8 Formateo de elementos de datos XYZWPREXT.................................................... ...... 7–36
7.9.9 Formateo de elementos de datos JOINTPOS.................................................... .......... 7–37

7-1
7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS MARRC75KR07091E Rev H

7.10 CONSEJOS PARA LA INTERFAZ DE USUARIO.................................................... ......................... 7–37


7.10.1 Menú USUARIO en el Teach Pendant.................................................... ........ 7–37
7.10.2 Menú USUARIO en el CRT/KB.................................................... ................... 7–38

7–2
MARRC75KR07091E Rev H 7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS

7.1 VISIÓN GENERAL

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

• Cancelar operaciones de lectura o escritura

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.

7.2 VARIABLES DEL ARCHIVO

Un programa KAREL puede realizar operaciones de E/S en serie en lo siguiente:

• Archivos de datos que residen en el sistema de archivos KAREL

• Puertos de comunicación serie asociados a conectores en el controlador KAREL

• Dispositivos de interfaz de usuario que incluyen el CRT/KB y el dispositivo de enseñanza

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.

Tabla 7–1. Variables de archivo predefinidas

IDENTIFICADOR DISPOSITIVO OPERACIONES

TPFUNC* Enseñar línea de tecla de función colgante Ambas cosas

PANTALLA TP* Pantalla colgante de enseñanza KAREL Ambas cosas

TPPROMPT* Enseñar línea de aviso colgante Ambas cosas

TPERROR Enseñar línea de mensaje colgante Escribe

ESTADOTP* Enseñar línea de estado del colgante Escribe

7–3
7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS MARRC75KR07091E Rev H

Tabla 7–1. Variables de archivo predefinidas (continuación)

CRTFUNC* Línea de tecla de función CRT/KB Ambas cosas

APORTE Teclado CRT/KB Leer


PRODUCCIÓN* Pantalla CRT/KB KAREL Escribe

CRTPROMPT* Línea de aviso CRT/KB Ambas cosas

CRERROR Línea de mensaje CRT/KB Escribe

CRTESTATUS* Línea de estado CRT/KB Escribe

* Solo se muestra cuando el Teach Pendant o CRT está en el menú de usuario.

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.

Uso de ARCHIVO en un programa KAREL

PROGRAMA lun_prog
VAR
archivo_actual: ARCHIVO
ROUTINE input_data(file_spec:FILE) DESDE util_prog COMENZAR

ABRIR ARCHIVO curnt_file ('RW','text.dt') - - Argumento de


input_data(curnt_file) --file variable WRITE TPERROR ARCHIVO variable
('Error ha ocurrido') END lun_prog

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.

7.3 DECLARACIÓN DE ARCHIVO ABIERTO

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

7.3.1 Configuración de atributos de archivos y puertos

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.

Tabla 7–2. Tipos de atributos predefinidos

TIPO DE ATRIBUTO FUNCIÓN SET_PORT_ATR O TP/TRC DE SERIE DATOS TUBERÍA ENCHUFE


SET_FILE_ATR PUERTOS ARCHIVOS MENSAJERÍA

ATR_BAUD Tasa de baudios SET_PORT_ATR no utilizado válido no no no utilizado

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

ATR_IA Interactivamente SET_FILE_ATR válido válido válido válido válido


escribe

ATR_MODEM línea de módem SET_PORT_ATR no utilizado válido no no no utilizado

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

buffer usó usó


ATR_REVERSE Reverso SET_FILE_ATR no utilizado válido válido válido válido

transferir

ATR_SBITS Bits de parada SET_PORT_ATR no utilizado válido no no no utilizado

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

Tabla 7–2. Tipos de atributos predefinidos (continuación)

TIPO DE ATRIBUTO FUNCIÓN SET_PORT_ATR O TP/TRC DE SERIE DATOS TUBERÍA ENCHUFE


SET_FILE_ATR PUERTOS ARCHIVOS MENSAJERÍA

ATR_XONOFF XON/XOFF SET_PORT_ATR no utilizado válido no no no utilizado

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ó

Tabla 7–3contiene explicaciones detalladas de cada atributo.

Tabla 7–3. Valores de atributos

Tipo de atributo Descripción Dispositivo válido Modo de uso Valores válidos Valor por defecto

ATR_BAUD La velocidad en baudios de un PUERTO Leer escribir BAUD_9600: BAUD_9600


Tasa de baudios puerto serie se puede cambiar a 9600 baudios
uno de los valores de atributo BAUD_4800:
válidos. 4800 baudios

BAUD_2400:
2400 baudios

BAUD_1200:
1200 baudios

ATR_DBITS Si se especifica, la longitud de PUERTO Leer escribir DBITS_5: 5 bits DBITS_8


Longitud de datos datos para un puerto serie se DBITS_6: 6 bits
cambia a los valores de atributo DBITS_7: 7 bits
especificados. DBITS_8: 8 bits

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

Tabla 7–3. Valores de atributo (continuación)

Tipo de atributo Descripción Dispositivo válido Modo de uso Valores válidos Valor por defecto

ATR_IA Si se especifica, el contenido TP/TRC, Escribir solamente ignorado TP/CRT es


escribir interactivamente del búfer se emite cuando se PUERTO, ARCHIVO interactivo, puerto,
completa cada operación de ARCHIVO no son

escritura en el búfer. interactivo


(Interactivo)
Si no se especifica, el
contenido del búfer se
emite solo cuando el búfer
se llena o cuando se
especifica CR. El tamaño
del búfer de salida es de
256 bytes. (No interactivo)

ATR_MODEM Consulte la sección "Línea de

línea de módem módem" a continuación para

obtener información.

ATR_PARIDAD La paridad de un puerto serie PUERTO Leer escribir PARIDAD_NINGUNA: PARIDAD_NINGUNA

Paridad se puede cambiar a uno de los sin paridad

valores de atributo válidos. PARIDAD_ODD:


paridad impar

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

el carácter de terminación tecla enter

(EOL) no terminará la lectura,


el atributo de campo asume
automáticamente
la opción "campo".

ATR_PIPOVADV Configura el comportamiento de la TUBO Leer El valor debe El parámetro de valor


lectura cuando se produce un estar entre 0 es OVF_EOF
desbordamiento. De forma y el total (establece el valor predeterminado

predeterminada, el comportamiento es número de bytes comportamiento) o el

señalar un fin de archivo (EOF) cuando en la tubería el número de bytes para


se produce el desbordamiento. valor sera avanzar cuando un
redondeado se produce un desbordamiento.

Al más cercano
registro binario.

7–7
7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS MARRC75KR07091E Rev H

Tabla 7–3. Valores de atributo (continuación)

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

los datos lleguen a la canalización. ESPERA_NO UTILIZADO instantánea que


significa que el
sistema devuelve un
EOF cuando se han leído
todos los datos en la
tubería.

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

si la lectura tarda más que el en mseg)


valor del atributo
especificado.

ATR_UF Si se especifica, se realiza PUERTO, ARCHIVO Leer escribir ignorado transferencia ASCII

sin formato una transferencia binaria.


transferir Para operaciones de lectura,

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.

ATR_XONOFF Si se especifica, el PUERTO Leer escribir XF_NO_USADO: XF_USADO


XON/XOFF XON/XOFF para un puerto No utilizado

serie se cambia al valor de XF_USED: Usado


atributo especificado.

línea de módem

Dispositivo válido: PUERTO

7–8
MARRC75KR07091E Rev H 7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS

Modo de uso: lectura/escritura

Valor predeterminado: MD_NOT_USED: DSR, DTR y RTS no utilizados

Valores de atributos válidos: MD_NOT_USED: DSR, DTR y RTS no utilizados

MD_USE_DSR: DSR utilizado

MD_NOUSE_DSR: DSR no utilizado

MD_USE_DTR: DTR utilizado

MD_NOUSE_DTR: DTR no utilizado

MD_USE_RTS: RTS utilizado

MD_NOUSE_RTS: RTS no utilizado

• Este atributo controla el funcionamiento de la línea de módem. El control se basa en la siguiente


máscara binaria, donde los bits de bandera se usan para indicar qué valor de bit está cambiando.

valor RTS valor DSR valor DTR Bandera DSR


bandera de estrategia en tiempo real bandera DTR

— RTS (solicitud de envío) y DTR (terminal de datos lista) son ambas salidas.

— DSR (conjunto de datos listo) es una entrada.

• Establezca el atributo de línea de módem haciendo lo siguiente.

— Para indicar que se usa RTS (ALTO/ENCENDIDO): estado = SET_PORT_ATR (port_name, ATR_MODEM,
MD_USE_RTS)

— Para indicar que RTS NO se usa (BAJO/APAGADO): estado = SET_PORT_ATR (port_name,


ATR_MODEM, MD_NOUSE_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.

estado = GET_PORT_ATR (puerto, ATR_MODEM, atr_value)

— Para determinar si se utiliza DTR:

SI ((atr_value Y MD_USE_DTR) = MD_USE_DTR) ENTONCES


escribir ('DTR está en uso', cr)
TERMINARA SI

7–9
7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS MARRC75KR07091E Rev H

— Para determinar si no se usa DTR (BAJO/APAGADO)

SI (atr_value Y MD_USE_DTR) = MD_NOUSE_DTR) ENTONCES


escribir ('DTR no está en uso', cr)
TERMINARA SI

Para obtener más información sobre GET_PORT_ATR integrado, consulteApéndice A.

7.3.2 Cadena de archivo

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:

— 'P2:'-Conector de la consola de depuración en el exterior del panel del operador

— 'P3:'-Conector RS-232-C, JD17 en la placa principal de la CPU (CRT/KB)


— 'P4:'-Conector RS-422, JD17 en la placa principal de la CPU
— 'KB:tp kb'-Entrada desde el teclado numérico en el Teach Pendant. Generalmente se utilizan
TPDISPLAY o TPPROMPT, por lo que no se requiere OPEN FILE.

— 'KB:cr kb'-Entrada de CRT/KB. Generalmente se utilizan INPUT o CRTPROMPT, por lo que no se


requiere OPEN FILE.

— 'WD:nombre_ventana'-Escribe en una ventana.

— 'WD:nombre_ventana</nombre_teclado>',dóndenombre_del_tecladoes cualquiera'tpkb'o 'crkb'-


Escribe en la ventana especificada. Las entradas son desde el teclado TP (tpkb) o el teclado CRT
(crkb). Las entradas se repetirán en la ventana especificada.

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

7.3.3 Cadena de uso

La cadena de uso en una instrucción OPEN FILE indica cómo se utilizará el archivo.

• Se compone de un especificador de uso.

• Se aplica solo al archivo especificado por la declaración OPEN FILE y no tiene efecto en otros FILE.

• Debe estar entre comillas simples si se expresa como un literal.

• Se puede expresar como una variable o una constante.

Tabla 7–4enumera cada especificador de uso, su función y los dispositivos o puertos para los que está destinado.

• “TP/CRT” indica Teach Pendant y CRT/KB.


• “Puertos” indica puertos serie.

• “Archivos” indica archivos de datos.

• “Tuberías” indica dispositivos de tubería.

• “Válido” indica un uso permitido.


• “Sin uso” indica un uso permitido que podría tener efectos secundarios impredecibles.

Cuadro 7–4. Especificadores de uso

ESPECIFICADOR FUNCIÓN TP/TRC PUERTOS ARCHIVOS TUBERÍA

RO válido válido válido válido

— Permite solo
operaciones de lectura

— Establece la posición del archivo

al principio del archivo

— El archivo ya debe existir

RW válido válido válido válido


sin uso en
— Reescribe sobre datos existentes
FRx:
en un archivo, eliminando datos

existentes

— Permite operaciones de
lectura y escritura

— Establece la posición del archivo

al principio del archivo

— El archivo se creará si
no existe

7–11
7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS MARRC75KR07091E Rev H

Cuadro 7–4. Especificadores de uso (continuación)

punto de acceso es inútil válido RAM válida válido

disco* sin uso


— Se agrega al final de los
en FRx:
datos existentes

— Permite leer y escribir


(Primera operación
debe ser una escritura.)

— Establece la posición del archivo al

final del archivo

— El archivo se creará si
no existe

UD es inútil válido RAM válida es inútil


disco* sin uso
— Actualizaciones de
en FRx:
comienzo de lo existente

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

— Establece la posición del archivo al

comienzo de uno existente.

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.

Ejemplos de cadenas de archivos

PROGRAMA open_luns
CONSTITUCIÓN

part_file_c ='parts.dt' --archivo de datos STRING constante


comm_port = 'P3:' - - puerto STRING constante

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

- - nombre y tipo de archivo literal


ABRIR ARCHIVO file_var1 ('RO','log_file.dt')
- - constante especificando parts.dt
ABRIR ARCHIVO file_var2 ('RW', part_file_c)
- - variable especificando new_file_dt
archivo_temp = 'RD:nuevo_archivo.dt'
ABRIR ARCHIVO file_var3 ('AP', temp_file)
- - puerto de comunicación literal OPEN FILE
file_var4 ('RW', 'P2:')
- - constante que especifica C0:
ABRIR ARCHIVO file_var5 ('RW', comm_port)
- - variable especificando C3:
port_var = 'C3:'
ABRIR ARCHIVO file_var12 ('RW', port_var) FIN
open_luns

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:

7.4 DECLARACIÓN DE ARCHIVO CERRAR

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:

• Todos los datos almacenados en el búfer se escriben en el archivo o puerto.

• La variable de archivo se libera para otro uso.

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

CERRAR ARCHIVO Ejemplo

PROGRAMA leer_archivos
VAR
archivo_var : EXPEDIENTE

nombres_de_archivo: ARRAY[10] OF STRING[15]


loop_count : ENTERO
loop_file : CADENA[15]
ROUTINE read_ops(file_spec:FILE) DESDE util_prog
- - realiza algunas operaciones de lectura
RUTINA get_names(names:ARRAY OF STRING) DESDE util_prog
- - obtiene nombres y tipos de archivos
BEGIN
get_names(file_names)
FOR loop_count = 1 A 10 HACER
loop_file = file_names[loop_count] OPEN FILE file_var ('RO', loop_file)
read_ops(file_var) --llamar a la rutina para operaciones de lectura
CERRAR
ARCHIVO archivo_var
ENDFOR FIN leer_archivos

Ver también:Declaración de CERRAR ARCHIVO,Apéndice A.

Función integrada IO_STATUS,Apéndice Apara obtener una descripción de los errores.

7.5 LEER DECLARACIÓN

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.

• Los datos de PATH deben leerse en forma binaria (sin formato).

Ejemplos de sentencias READmuestra varios ejemplos de la declaración READ utilizando una variedad de variables de
archivo y listas de datos.

Ejemplos de sentencias READ

LEER (next_part_no) - - utiliza TPDISPLAY predeterminado


ABRIR ARCHIVO file_var ('RO','data_file.dt') READ
file_var (color, estilo, opción) READ host_line (color,
estilo, opción, CR) FOR i = 1 TO array_size DO

LEER datos (matriz_datos[i])


ENDFOR

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.

Ver también:LEER Declaración,Apéndice A.

Funciones integradas de IO_STATUS,Apéndice Apara obtener una lista de mensajes de error de E/S

Directiva de traductor %CRTDEVICE,Apéndice A.

7.6 ESCRIBIR DECLARACIÓN

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.

— path_name [n] : especifica que se va a escribir el nodo[n].

7–16
MARRC75KR07091E Rev H 7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS

— path_name [n .. m] : especifica que se escribirán 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.
• Los datos de PATH deben escribirse en forma binaria (sin formato).

Ejemplos de sentencias WRITEmuestra varios ejemplos de la declaración WRITE usando una variedad de variables
de archivo y listas de datos.

Ejemplos de sentencias WRITE

WRITE TPPROMPT('Presione la tecla TP "GO" cuando esté listo')


ESCRIBIR TPFUNC (' IR RECD SALIR ATRÁS1 ADELANTE-1')

ESCRIBIR archivo_de_registro (número_de_pieza:5, recuento_bueno:5, recuento_incorrecto:5, operador:3, CR)

ESCRIBIR ('Esta es la línea 1', CR, 'Esta es la línea 2', CR)


- - usa TPDISPLAY predeterminado
FOR i = 1 TO array_size DO
ESCRIBIR datos (data_array[i])
ENDFOR

Ver también:ESCRIBIR Declaración,Apéndice A.

Funciones integradas de IO_STATUS,Apéndice A.

7.7 BÚFER DE ENTRADA/SALIDA

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.

Las sentencias READ y WRITE utilizan los búferes de la siguiente manera:

• 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

7.8 FORMATO DE TEXTO (ASCII) ENTRADA/SALIDA

Esta sección explica los especificadores de formato utilizados para leer y escribir texto ASCII (formateado) para cada tipo
de datos.

Las siguientes reglas se aplican a los tipos de datos de formato:

• 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.

• Las variables PATH no se pueden leer ni escribir.

• Algunos formatos y combinaciones de datos no se leen de la misma manera en que se escribieron o se


vuelven inválidos si se leen con el mismo formato.

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–5. Especificadores de formato de entrada de texto (ASCII)

TIPO DE DATOS ESPECIFICADOR DE 1ER FORMATO ESPECIFICADOR DE 2º FORMATO

ENTERO Número total de caracteres leídos Base numérica en el rango 2 - 16

REAL Número total de caracteres leídos ignorado

BOOLEANO Número total de caracteres leídos ignorado

CUERDA Número total de caracteres leídos 0 - CADENA sin comillas 2 -


CADENA con comillas

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.

Tabla 7–6. Especificadores de formato de salida de texto (ASCII)

TIPO DE DATOS ESPECIFICADOR DE 1ER FORMATO ESPECIFICADOR DE 2º FORMATO

ENTERO Número total de caracteres escritos Base numérica en el rango 2-16

7–18
Traducido del inglés al español - www.onlinedoctranslator.com

MARRC75KR07091E Rev H 7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS

Tabla 7–6. Especificadores de formato de salida de texto (ASCII) (continuación)

TIPO DE DATOS ESPECIFICADOR DE 1ER FORMATO ESPECIFICADOR DE 2º FORMATO

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.

BOOLEANO Número total de caracteres escritos 0 - Justificado a la izquierda 1

- Justificado a la derecha

CUERDA Número total de caracteres escritos 0 - Justificado a la izquierda 1

- Justificado a la derecha

2 - Justificado a la izquierda entre comillas (en blanco inicial) 3 -

Justificado a la derecha entre comillas (en blanco inicial)

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

7.8.1 Formateo de elementos de datos INTEGER

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

Tabla 7–7. Ejemplos de elementos de datos de entrada INTEGER

ELEMENTO DE DATOS DATOS DE ENTRADA RESULTADO

int_var - 2[eol] int_var = -2

int_var 20 30... int_var = 20

int_var::3 10000 int_var = 100

int_var::5::2 10101 int_var = 21


(entrada base 2) (valor base 10)

int_var 1.00 error de formato

(ENTERO no válido)

int_var::5 100 error de formato

(muy pocos dígitos)

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

Tabla 7–8. Ejemplos de elementos de datos de salida INTEGER

ELEMENTO DE DATOS PRODUCCIÓN COMENTARIO

123 blanco principal

"
123
"

-5 blanco principal

"
-5
"

123::6 Justificado a la derecha (espacios en blanco iniciales)

"
123
"

- 123::2 Ampliado según sea necesario

"
- 123
"

1024::0::16 Salida hexadecimal

"
400
"

5::6::2 Salida binaria (ceros iniciales)

"

00101
"

- 1::9::16 Salida hexadecimal

"

7–21
7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS MARRC75KR07091E Rev H

Tabla 7–8. Ejemplos de elementos de datos de salida INTEGER (continuación)

ELEMENTO DE DATOS PRODUCCIÓN COMENTARIO

FFFFFFFF
"

7.8.2 Formateo de elementos de datos REALES

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.

Segundo especificador de formato:Ignorado para elementos de datos REALES.

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.

Tabla 7–9. Ejemplos de elementos de datos de entrada REAL

ELEMENTO DE DATOS DATOS DE ENTRADA RESULTADO

real_var 1 1.0
real_var 1.000[eol] 1.0
real_var 2.5XX 2.50
real_var 1E5XX 100000.0

real_var::7 2.5XX error de formato (espacio en blanco final)

real_var 1E error de formato (sin exponente)

real_var::4 1E 2 error de formato (incrustado en blanco)

Los elementos de datos REAL en una instrucción WRITE tienen el siguiente formato:

Defecto:Escrito en notación científica de la siguiente forma:

(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:

(en blanco) es un solo espacio en blanco

(msign) es un signo menos, si es necesario

(d) es un dígito

(esign) es un signo más o menos

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.

Segundo especificador de formato:Indica el número de dígitos que se generarán a la derecha del


punto decimal, se utilice o no la notación científica.

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.

Tabla 7–10. Ejemplos de elementos de datos de salida REAL

ELEMENTO DE DATOS PRODUCCIÓN COMENTARIO

123.0 Notación científica (formato predeterminado)

"
1.23000E+02
"

123.456789 Redondeado a 5 dígitos en parte fraccionaria

"
1.23457E+02
"

7–23
7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS MARRC75KR07091E Rev H

Tabla 7–10. Ejemplos de elementos de datos de salida REAL (continuación)

ELEMENTO DE DATOS PRODUCCIÓN COMENTARIO

. 00123 exponente negativo

"
1.23000E-03
"

- 1,00 Valor negativo

"
- 1.00000E+00
"

- 123.456::9 Campo ampliado

"
- 1.234560E+02
"

123.456::12 Se agregó un espacio en blanco inicial

"
1.234560E+02
"

123.456::9::2 Justificado a la derecha y redondeado

"
123.46
"

123.::12::-3 Notación cientifica

"
1.230E+02
"

7–24
MARRC75KR07091E Rev H 7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS

7.8.3 Formateo de elementos de datos BOOLEAN

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.

Segundo especificador de formato:Ignorado para elementos de datos BOOLEAN.

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).

Cuadro 7–11. Ejemplos de elementos de datos de entrada BOOLEAN

ELEMENTO DE DATOS DATOS DE ENTRADA RESULTADO

bool_var FALSO FALSO

bool_var FAL 3... FALSO

bool_var teol CIERTO

bool_var::1 FXX FALSO (solo lee “F”)

bool_var O[eol] error de formato (ambiguo)

bool_var 1.2[eol] error de formato (no booleano)

bool_var::3 F [eol] error de formato (espacios en blanco al final)

bool_var::6 VERDADERO error de formato (no hay suficientes datos)

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.

Tabla 7–12. Ejemplos de elementos de datos de salida BOOLEAN

ELEMENTO DE DATOS PRODUCCIÓN COMENTARIO

FALSO El valor predeterminado incluye un espacio en blanco inicial

"
FALSO
"

CIERTO VERDADERO es más corto que FALSO

"
CIERTO
"

FALSO::8 Justificado a la izquierda (predeterminado)

"
FALSO
"

FALSO::8::1 Justificado a la derecha

"
FALSO
"

VERDADERO::2 Truncado

"
T
"

7–26
MARRC75KR07091E Rev H 7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS

7.8.4 Formateo de STRING elementos de datos

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.

Tabla 7–13. Ejemplos de STRING elementos de datos de entrada

ELEMENTO DE DATOS DATOS DE ENTRADA RESULTADO

str_var

" "
ABC ABC
" "

str_var

" "
ABCDEFG[eol] ABCDE

" "

(FG se lee pero la CADENA se trunca a 5


caracteres)

7–27
7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS MARRC75KR07091E Rev H

Tabla 7–13. Ejemplos de STRING elementos de datos de entrada (continuación)

ELEMENTO DE DATOS DATOS DE ENTRADA RESULTADO

str_var

" "
'ABC'XX AB
" "

(los espacios en blanco y las comillas se leen como datos)

str_var::0::2

" "
'ABC'XX 'A B C'
" "

(leer termina con la segunda cita)

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.

Segundo especificador de formato:Indica si la salida debe estar justificada a la izquierda o a la derecha y si la


CADENA debe estar entre comillas usando los siguientes valores:

0 justificado a la izquierda, sin comillas

1 justificado a la derecha, sin comillas

2 justificado a la izquierda, comillas

3 justificado a la derecha, comillas

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

precedidos automáticamente por un espacio en blanco.

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.

Cuadro 7–14. Ejemplos de STRING elementos de datos de salida

ELEMENTO DE DATOS PRODUCCIÓN COMENTARIO

'A B C' Sin espacios en blanco iniciales

"
ABC
"

'ABC'::2 Truncado a la derecha

"
AB
"

'ABC'::8 Justificado a la izquierda

"
ABC
"

'ABC'::8::0 Igual que el anterior

"
ABC
"

'ABC'::8::1 Justificado a la derecha

"
ABC
"

'ABC'::8::2 Nota en blanco inicial

"
'A B C'
"

7–29
7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS MARRC75KR07091E Rev H

Cuadro 7–14. Ejemplos de STRING elementos de datos de salida (continuación)

ELEMENTO DE DATOS PRODUCCIÓN COMENTARIO

'ABC'::8::3 Justificado a la derecha

"
'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.

7.8.5 Formateo de elementos de datos VECTOR

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

y los especificadores de formato utilizados con los elementos de datos REAL

Tabla 7–15. Ejemplos de elementos de datos de salida VECTOR

ELEMENTO DE DATOS PRODUCCIÓN

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
"

7.8.6 Formateo de elementos de datos posicionales

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.

Cuadro 7–16. Ejemplos de elementos de datos de salida de POSICIÓN (p = POS(2.0,-4.0,8.0,0.0,90.0,0.0,config_var))

ELEMENTO DE DATOS PRODUCCIÓN

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

Función incorporada de POS,Apéndice A.

7–32
MARRC75KR07091E Rev H 7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS

7.9 FORMATO DE ENTRADA/SALIDA BINARIA

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.

• Hay una inevitable pérdida de precisión cuando se convierte de datos REALES a su


representación ASCII y viceversa.

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.

Ver también:SET_FILE_ATR rutina integrada,Apéndice A.

Tabla 7–17. Especificadores de formato de entrada/salida binaria

TIPO DE DATOS DEFECTO ESPECIFICADOR DE 1ER FORMATO ESPECIFICADOR DE 2º FORMATO

ENTERO 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)

REAL Cuatro bytes leídos o escritos ignorado 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)

CUERDA Longitud actual de la cadena (1 Número de bytes leídos o escritos ignorado


byte), seguido de bytes de datos

VECTOR Tres números REALES de 4 bytes ignorado ignorado

leídos o escritos

POSICIÓN 56 bytes leídos o escritos ignorado ignorado

XYZWPR 32 bytes leídos o escritos ignorado ignorado

XYZWPREXT 44 bytes leídos o escritos ignorado ignorado

JOINTPOSn 4 + n*4 bytes leídos o escritos ignorado ignorado

SENDERO Depende del tamaño de la estructura. ignorado ignorado

7.9.1 Formateo de elementos de datos INTEGER

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.

Segundo especificador de formato:Ignorado para elementos de datos INTEGER.

7.9.2 Formateo de elementos de datos REALES

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.

Primer especificador de formato:Ignorado para elementos de datos REALES.

Segundo especificador de formato:Ignorado para elementos de datos REALES.

7.9.3 Formateo de elementos de datos BOOLEAN

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.

Segundo especificador de formato:Ignorado para elementos de datos BOOLEAN.

7.9.4 Formateo de STRING elementos de datos

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

Primer especificador de formato:Indica el número de bytes a leer o escribir.

Segundo especificador de formato:Ignorado para STRING elementos de datos.

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.

7.9.5 Formateo de elementos de datos VECTOR

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.

Primer especificador de formato:Ignorado para elementos de datos VECTOR.

Segundo especificador de formato:Ignorado para elementos de datos VECTOR.

7.9.6 Formateo de elementos de datos de POSICIÓN

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.

7.9.7 Formateo de elementos de datos XYZWPR

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.

7.9.8 Formateo de elementos de datos XYZWPREXT

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.

7.9.9 Formateo de elementos de datos JOINTPOS

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.

7.10 CONSEJOS PARA LA INTERFAZ DE USUARIO

La entrada y salida a la botonera de programación o CRT/KB se logra mediante la ejecución de declaraciones


"READ" y "WRITE" dentro de un programa KAREL. Si el menú USUARIO no es el menú seleccionado actualmente, la
entrada permanecerá pendiente hasta que se seleccione el menú USUARIO. La salida se escribirá en las ventanas
"guardadas" que se mostrarán cuando se seleccione el menú USUARIO. Puede tener hasta ocho ventanas
guardadas.

7.10.1 Menú USUARIO en el Teach Pendant

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".

Tabla 7–18. Ventanas definidas para t_sc"

Nombre de la ventana Líneas ARCHIVO predefinido desplazado filas


Nombre

"t_fu" 10 PANTALLA TP sí 5-14


"t_pr" 1 TPPROMPT no 15
"t_st" 3 ESTADOTP no 2-4
"t_fk" 1 TPFUNC no dieciséis

"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

Figura 7–1. Pantalla "t_sc"

error (TPERROR)
estadística

completo mesón
completo superposiciones motn

t_fu (PANTALLA TP) lleno a las

columna 18

t_pr (TPPROMPT)
t_fk (TPFUNC)

Las siguientes variables del sistema afectan el menú USUARIO de la consola portátil:

• $TP_DEFPROG: CADENA-Identifica el programa predeterminado de la botonera de enseñanza. Esto se establece automáticamente


cuando se selecciona un programa desde el menú SELECCIONAR de la consola portátil.

• $TP_INUSUARIO: BOOLEANO-Establézcalo en VERDADERO cuando se seleccione el menú USUARIO desde la consola


portátil.

• $TP_LCKUSER: BOOLEANO-Bloquea el Teach Pendant en el menú USER mientras


$TP_DEFPROG se está ejecutando y $TP_LCKUSER es TRUE.

• $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.

Figura 7–2. Pantalla "t_sc" con $TP_USESTAT = TRUE

error (TPERROR)
t_st (ESTADOTP)
t_st (ESTADOTP)
t_st (ESTADOTP)
t_fu (PANTALLA TP)

t_pr (TPPROMPT)
t_fk (TPFUNC)

7.10.2 Menú USUARIO en el CRT/KB

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

Cuadro 7–19. Ventanas definidas para c_sc"

Nombre de la ventana Líneas Nombre de ARCHIVO predefinido desplazado filas

"c_fu" 17 Entrada y salida sí 5-21


"c_pr" 1 CRTPROMPT no 22
"c_st" 3 CRTESTATUS no 2-4
"c_fk" 2 CRTFFUN no 23-24

"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.

Figura 7–3. Pantalla "c_sc"

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

Las siguientes variables del sistema afectan el menú USUARIO CRT:

• $CRT_DEFPROG: CADENA-Esta variable identifica el programa predeterminado de CRT. Esto se configura


automáticamente cuando se selecciona un programa del menú CRT SELECT.

• $CRT_INUSUARIO: BOOLEANO-Esta variable se establece en VERDADERO cuando se selecciona el menú USUARIO


desde el CRT.

• $CRT_LCKUSER: BOOLEANO-Esta variable bloquea el CRT en el menú USUARIO mientras


$CRT_DEFPROG se está ejecutando y $CRT_LCKUSER es VERDADERO.

• $CRT_USERSTAT: BOOLEANO-Esta variable hace que la ventana de estado del usuario


"c_st" (CRTSTATUS) se adjunte a la pantalla del usuario mientras que $CRT_USERSTAT es TRUE.
Mientras se adjunta "c_st", las ventanas "ct01", "motn" y "uful" se separarán. VerFigura 7–4.

7–39
7. OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS MARRC75KR07091E Rev H

Figura 7–4. Pantalla "c_sc" con $CRT_USERSTAT = TRUE

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

Capítulo 8 DATOS DE POSICIÓN .................................................... .................................... 8–1


8.1 VISIÓN GENERAL.................................................... ............................................................. 8–2
8.2 DATOS POSICIONALES.................................................... .................................... 8–2
8.3 MARCOS DE REFERENCIA.................................................... ....................... 8–3
8.3.1 Marco mundial.................................................... .......................................... 8–4
8.3.2 Marco de usuario (UFRAME).................................................... ............................ 8–5
8.3.3 Definición de herramienta (UTOOL)....................................................
.......................... 8–5
8.3.4 Uso de marcos en el Teach Pendant Editor (TP)............................................. 8–5
8.4 SISTEMAS DE COORDENADAS JOG.................................................... .................. 8–6

8–1
8. DATOS DE POSICIÓN MARRC75KR07091E Rev H

8.1 VISIÓN GENERAL

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.

8.2 DATOS POSICIONALES

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:

• Tres valores REALES que representan una ubicación x, y, z expresada en milímetros

• Tres valores REALES que representan la orientación aw, p, r expresada en grados

• 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:

— 'R' o 'L' (hombro derecho o izquierdo)

— 'U' o 'D' (codo arriba o abajo)


— 'N' o 'F' (muñeca sin voltear o voltear)

— 'T' o 'B' (configuración frontal o posterior)

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.

Tabla 8–1. Definiciones de números de giro

Número de giro Rotación (grados)

-8 - 2700 a -3059

-7 - 2340 a -2699

-6 - 1980 a -2339

8–2
MARRC75KR07091E Rev H 8. DATOS DE POSICIÓN

Tabla 8–1. Definiciones de número de giro (continuació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.

Ver también:La aplicación específica apropiadaManual de operaciones y configuración de FANUC America


Corporationpara obtener información sobre la configuración de cada modelo de robot compatible. Los tipos
de datos POSITION, XYZWPR, XYZWPREXT, JOINTPOS y PATH, Apéndice A, “Descripción alfabética del lenguaje
KAREL”.

8.3 MARCOS DE REFERENCIA

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

Figura 8–1. Posiciones de referencia en KAREL

PLACA FRONTAL

$ UTOOL

ROBOT
TCP

POSICIÓN

$UFRAME

MUNDO USUARIO
COORDINAR CUADRO
SISTEMA

ROBOT = $UFRAME:POSICIÓN:INV($UTOOL)

Existen tres marcos de referencia:

• MUNDO - predefinido

• UFRAME - determinado por el usuario

• UTOOL - definido por la herramienta

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).

8.3.1 marco mundial

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

8.3.2 Marco de usuario (UFRAME)

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.

8.3.3 Definición de herramienta (UTOOL)

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.3.4 Uso de marcos en el Teach Pendant Editor (TP)

La variable de sistema $USEUFRAME define si el valor actual de


$MNUFRAMENUM[group_no] se asignará al marco de usuario de la posición
cuando se grabe o retoque.

8–5
8. DATOS DE POSICIÓN MARRC75KR07091E Rev H

• CuandopsUSEUFRAME = FALSO,el registro inicial de posiciones y el retoque de posiciones se


realiza con el número de cuadro de usuario igual a 0, independientemente del valor de
$MNUFRAMENUM[group_no].

• CuandopsUSEUFRAME = VERDADERO,el registro inicial de posiciones se realiza con el marco de usuario


de la posición igual al marco de usuario definido por $MNUFRAMENUM[group_no]. El retoque de
posiciones también debe hacerse con el marco de usuario de la posición igual al marco de usuario
definido por $MNUFRAMENUM[group_no].

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.

8.4 SISTEMAS DE COORDENADAS JOG

El sistema KAREL proporciona cinco sistemas de coordenadas de jog diferentes:

• 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.

• JOGFRAME-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 sistema de coordenadas definido por la variable de sistema
$JOG_GROUP[group _no].$jogframe. El movimiento se interpola linealmente.

• 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.

Ver también:específico de la aplicaciónManual de operaciones y configuración de FANUC America Corporationpara obtener


explicaciones paso a paso sobre cómo mover y definir marcos.

8–6
Capítulo 9

SISTEMA DE ARCHIVOS

Contenido

Capítulo 9 SISTEMA DE ARCHIVOS ........................................................................................ 9-1


9.1 VISIÓN GENERAL.................................................... ............................................................. 9–2
9.2 ESPECIFICACIÓN DEL ARCHIVO.................................................... ............................... 9–3
9.2.1 Nombre del dispositivo.................................................... .......................................... 9–3
9.2.2 Nombre de archivo.................................................... ................................................ 9–4
9.2.3 Tipo de archivo.................................................... .......................................................... 9–5
9.3 ACCESO AL DISPOSITIVO DE ALMACENAMIENTO.................................................... ................... 9–6
9.3.1 Resumen.................................................... .......................................................... 9–7
9.3.2 Dispositivos de archivos de memoria.................................................... ............................... 9–13
9.3.3 Dispositivos virtuales.................................................... ............................................. 9–14
9.3.4 Tubos de archivo.................................................... .......................................................... 9–16
9.4 ACCESO A ARCHIVOS.................................................... ............................................. 9–20
9.5 FORMATO DE ENTRADA XML.................................................... ...................... 9–20
9.5.1 Resumen.................................................... ................................................ 9–20
9.5.2 Secuencia de instalación.................................................... ............................ 9–21
9.5.3 Ejemplo de programa KAREL que hace referencia a un archivo XML................................ 9–21
9.5.4 Errores de análisis.................................................... .......................................... 9–26
9.6 DISPOSITIVO DE MEMORIA.................................................... .................................... 9–26

9-1
9. SISTEMA DE ARCHIVOS MARRC75KR07091E Rev H

9.1 VISIÓN GENERAL

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:

• Declaraciones de código fuente para un programa KAREL

• Una secuencia de comandos KCL para un procedimiento de comando

• Datos variables para un programa

Los archivos se identifican mediante especificaciones de archivo que incluyen lo siguiente:

• El nombre del dispositivo en el que se almacena el archivo.

• El nombre del archivo

• El tipo de datos incluidos en el archivo.

El sistema KAREL incluye cinco tipos de dispositivos de almacenamiento donde se pueden almacenar archivos:

• Disco RAM

• DESDE disco

• PC IBM
• Tarjeta de memoria

• Dispositivo de memoria USB

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:

• A través del menú ARCHIVO en la consola portátil y CRT/KB

• A través de los programas KAREL

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.

9.2 ESPECIFICACIÓN DEL ARCHIVO

Las especificaciones de archivo identifican los archivos. La especificación indica:

• El nombre del dispositivo en el que se almacena el archivo, consulteSección 9.2.1.

• El nombre del archivo, consulteSección 9.2.2.

• El tipo de datos que contiene el archivo, consulteSección 9.2.3.

La forma general de una especificación de archivo es:

nombre_dispositivo:nombre_archivo.tipo_archivo

9.2.1 Nombre del dispositivo

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.

• RD: (Disco RAM)

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.

• FR: (disco F-ROM)

El nombre del dispositivo FR: hace referencia a los archivos almacenados en el disco F-ROM del controlador.

• MC: (Dispositivo de tarjeta de memoria)

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

Consulte la aplicación específicaManual de operaciones y configuración de FANUC America Corporationpara obtener


información sobre cómo formatear la tarjeta de memoria en el controlador.

• UD1: (dispositivo de memoria USB)

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.

• MD: (Dispositivo de memoria)

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.

• MDB: (Copia de seguridad del dispositivo de memoria)

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.

• CONTRAS: (Dispositivo de consola)

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.

• MF: (dispositivo de archivo de memoria)

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.

• RUTA: (Dispositivo compuesto)

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.

• PIP: (dispositivo de canalización de archivos)

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.2.2 Nombre del archivo

Un nombre de archivo es un identificador que elige para representar el contenido de un archivo.

9–4
MARRC75KR07091E Rev H 9. SISTEMA DE ARCHIVOS

Las siguientes reglas se aplican a los nombres de archivo:

• Los nombres de archivo están limitados a 36 caracteres.

• Los nombres de archivo pueden incluir letras, dígitos y guiones bajos.

• Los nombres de archivo no pueden incluir estos caracteres: .:*;\/”'

• No se permiten espacios en el nombre del archivo.

• Se pueden utilizar otros caracteres especiales con precaución.

• 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

9.2.3 Tipo de archivo

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.

Tabla 9–1. Descripciones de tipos de archivo

Tipo de archivo Descripción

. BMP Archivos de mapa de bitscontienen imágenes de mapa de bits utilizadas en los sistemas de visión de robots.

. FC Archivos de comandos KCLson archivos ASCII que contienen una secuencia de

comandos KCL para un procedimiento de comando.

. CH Archivos del controlador de condicionesse utilizan como parte de la función de monitor de

estado.

. DF archivo predeterminadoson archivos binarios que contienen las instrucciones de

movimiento predeterminadas para la programación de cada consola portátil.

. director general Archivos de diagnósticoson archivos ASCII que proporcionan información de


estado o diagnóstico sobre varias funciones del controlador.

. DT Archivo de datos KARELUn archivo ASCII o binario que puede contener


cualquier dato que necesite el usuario.

. IO archivos binariosque contienen datos de configuración de E/S, generados cuando se

muestra una pantalla de E/S y se guardan los datos.

. KL Archivos de código fuente de KARELson archivos ASCII que contienen las


sentencias del lenguaje KAREL para un programa KAREL.

9–5
9. SISTEMA DE ARCHIVOS MARRC75KR07091E Rev H

Tabla 9–1. Descripciones de tipos de archivo (continuación)

Tipo de archivo Descripción

. LS Archivos de listado de KARELson archivos ASCII que contienen la lista de


un programa de lenguaje KAREL y el número de línea para cada instrucción
KAREL.

. Minnesota MnemotécnicoLos archivos de programa son compatibles con versiones anteriores de

KAREL.

. ML Archivos de modelos de piezascontienen información del modelo de pieza que se utiliza en los sistemas de visión

de robots.

. ordenador personal Archivos de código p de KARELson archivos binarios que contienen el


código p producido por el traductor al traducir un archivo .KL.

. 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).

. TP Teach archivos de programa colgantesson archivos binarios que contienen

instrucciones para enseñar programas colgantes.

. Texas archivos de textoson archivos ASCII que pueden contener texto definido por el sistema o texto

definido por el usuario.

. realidad virtual Archivos de variables de programason archivos binarios que contienen datos variables para

un programa KAREL.

. Virginia Archivos de variables ASCIIcontienen la lista de un archivo de variables con


nombres, tipos y contenidos de variables.

. LS Listado de archivosson programas de enseñanza colgante, registros de errores e historiales de

descripción en formato ASCII.

9.3 ACCESO A DISPOSITIVOS DE ALMACENAMIENTO

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.

Las siguientes reglas se aplican al acceder a los dispositivos de almacenamiento:

• 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:.

— Graba un directorio en el dispositivo

— Registra otros datos requeridos por el sistema KAREL

9–6
MARRC75KR07091E Rev H 9. SISTEMA DE ARCHIVOS

— Asigna un nombre de volumen al dispositivo

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".

9.3.1 Visión general

Los siguientes tipos de dispositivos de almacenamiento se pueden utilizar para almacenar programas y archivos:

• Tarjeta de memoria (MC:) (no disponible en el R-30icontrolador de compañero B)

• Disco de almacenamiento de archivos flash (FR:)

• Disco RAM (RD:) (No para SpotTool+)


• Dispositivo Ethernet (opcional)

• Dispositivo de memoria (MD:)

• Dispositivo de memoria binario (MDB:)

• Dispositivo de memoria filtrada (FMD:)

• Dispositivo de memoria USB en el controlador (UD1:)

• Dispositivo de memoria USB en eliColgante (UT1:)

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

• Configuración de un puerto en el controlador

• Conexión del dispositivo al controlador

• Formatear un dispositivo

Tarjeta de memoria (MC:)

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.

NotaLa interfaz de la tarjeta de memoria no está disponible en el R-30iControlador B Mate.

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

La interfaz de la tarjeta de memoria se encuentra en la CPU principal del R-30iGabinete del


controlador B. Cuando el disyuntor de desconexión de alimentación está APAGADO, todavía hay
alimentación dentro del controlador. Apague el disyuntor de desconexión de alimentación
antes de insertar una tarjeta de memoria en la interfaz de la tarjeta de memoria; de lo
contrario, podría lesionar al personal.

Precaución

No extraiga la tarjeta de memoria cuando el controlador esté leyendo o escribiendo en ella. Si


lo hace, podría dañar la tarjeta y perder toda la información almacenada en ella.

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.

NotaEl controlador formatea la tarjeta con un tamaño de sector de 512 bytes.

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

Dispositivo de memoria USB en el controlador (UD1:), y Dispositivo de memoria USB en


eliColgante (UT1:)

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.

NotaNo se admiten dispositivos de memoria USB con características de seguridad o cifrado.

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.

El dispositivo de memoria USB se puede formatear en el controlador.

Precaución

No extraiga la tarjeta de memoria cuando el controlador esté leyendo o escribiendo en ella. Si lo


hace, podría dañar la tarjeta de memoria y perder toda la información almacenada en ella.

Disco de almacenamiento de archivos flash (FR:)

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

almacenar la siguiente información en el disco de almacenamiento de archivos Flash:

9–9
9. SISTEMA DE ARCHIVOS MARRC75KR07091E Rev H

• Programas

• Variables del sistema

• Cualquier cosa que puedas guardar como un archivo

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.

Disco RAM (no para SpotTool+)

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.

• SipsARCHIVO_MAXSEC < 0,entonces el disco RAM se define para estar en DRAM.

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

Los datos en DRAM se perderán si apaga el controlador o si el controlador pierde


energía. No almacene nada que desee guardar más allá del próximo ciclo de encendido
del controlador en DRAM, de lo contrario, lo perderá.

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.

Dispositivo Ethernet FTP

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.

Dispositivo de memoria (MD:)

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

el menú del archivo del colgante de aprendizaje)

• 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.

Dispositivo de memoria binario (MDB:)

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:).

Dispositivo de memoria filtrada (FMD:)

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

No elimine estos archivos o se perderán los datos de exclusión del filtro.

• 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

KCL> DIR FMD:*.*.

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.

9.3.2 Dispositivos de archivos de memoria

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.

2. Ingrese DESMONTAR RD:

KCL>DESMONTAR RD:

3. Introduzca SET VAR $FILE_MAXSEC

KCL>FIJAR VAR
$FILE_MAXSEC = <nuevo valor>

4. Ingrese FORMATO RD:

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.

5. Introduzca MONTAJE RD:

KCL>MONTAJE RD:

El disco RAM se reformateará automáticamente al iniciar INIT.

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".

Para obtener más información sobre la memoria, consulteSección 1.4.1.

9.3.3 Dispositivos virtuales

Los dispositivos virtuales KAREL son similares a los subdirectorios de DOS. Por ejemplo

• En DOS, para acceder a un archivo en un subdirectorio, veríaFR:\FR1:\>prueba.kl.

• En KAREL, para acceder al mismo archivo en un dispositivo virtual, veríaFR1: prueba.kl.

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.

Tabla 9–2. Dispositivos virtuales

Nombre del dispositivo Almacenamiento real

RD: disco RAM

FR: Disco F-ROM: archivos comprimidos y sin comprimir

FM: Se refiere a archivos tanto en RD: como en FR:

RD1: - RD7: Disco RAM: archivos comprimidos y sin comprimir

FR1: - FR7: Disco F-ROM: archivos comprimidos y sin comprimir

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

Reglas para dispositivos virtuales

Las siguientes reglas se aplican a los dispositivos virtuales.

• 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

9.3.4 Tubos de archivo

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

Lo siguiente se aplica a los ejemplos de KAREL.

• 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.

Reglas para PIP: Dispositivos

Las siguientes reglas se aplican a los dispositivos PIP:

• El dispositivo PIP: puede ser utilizado por cualquier aplicación o puede especificar una opción común asociada,
como KAREL.

• El dispositivo es configurable. Puede configurar cuánta memoria usa y si esa memoria es


CMOS (retenida) o DRAM (no retenida). También puede configurar el formato de los datos para
leer datos de tipo ASCII formateados. El dispositivo se configura a través de PIPE_CONFIG
integrado.

Secuencia de instalación, configuración y operación

En general, el dispositivo PIP: funciona como cualquier otro dispositivo. Una secuencia de operación típica incluye:

OPEN myfile ('PIP:/myfile.dat', 'RW',) Write myfile ('Datos


que estoy registrando', CR) Close myfile

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:

Tabla 9–3. Descripciones de campos de variables del sistema

CAMPO DEFECTO DEFINICIÓN

$sectores 8 Número de sectores de 1024 bytes en la canalización.

$archivodatos Puntero a los datos reales de la tubería (no accesible).

$tamaño de registro 0 Tamaño de registro binario, cero significa que no se rastrea.

$palabra auxiliar 0 Elemento de diccionario si tiene formato de diccionario o escribe suma de comprobación.

$memtipo 0 Si no es cero, use CMOS.

$formato Indefinido Modo de formateo: indefinido, función, cadena de formato o


tipo KAREL.

$formateador Puntero de función, puntero de especificador de formato "C" o código de tipo

dependiendo del formato $.

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

tubería, in_file, mcfile, consola: registro de


archivo: cadena[80]
estado: entero
parm1, parm2: entero
mensaje: cadena[127]
bandera_cmos: booleano
n_sectores: entero
tamaño_de_registro: entero
form_dict: cadena[4]
form_ele: entero
--
- - inicializar archivo atributos
rutina file_init (att_file :FILE)

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

-- [in] pipe_name: STRING;nombre de la etiqueta


-- [in] bandera_cmos: booleano;
-- [en] n_sectores:
entero;
-- [en] entero;
tamaño_de_registro:
-- [en]
form_dict: cuerda;
-- [en]
form_ele: entero;
-- [afuera] estado: ENTERO
pipe_config('pip:ejemplo.dat',cmos_flag, n_sectores,
record_size,form_dict,form_ele,status) write_pipe

read_pipe
cerca expediente tubo
cerca expediente en archivo
final pipuforma

9.4 ACCESO A ARCHIVOS

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.

9.5 FORMATO DE ENTRADA XML

9.5.1 Visión general

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:

• Los archivos XML pueden tener SOLO UN elemento de nivel superior.

• La etiqueta inicial debe tener una etiqueta final coincidente.

• Las etiquetas vacías se pueden representar como <parámetros de etiqueta/>

• Las etiquetas no pueden contener caracteres especiales como el conjunto de *, $ y []

• No deben contener caracteres no imprimibles.

• Los atributos deben tener la forma attr=“valor”

9–20
MARRC75KR07091E Rev H 9. SISTEMA DE ARCHIVOS

• Los caracteres especiales se utilizan para lo siguiente (fuera de las etiquetas):

— < se sustituye por <


— < se sustituye por >
— & se sustituye por &
— “ puede sustituirse por "
• Esta función proporciona un analizador XML y los medios para que los programadores de KAREL y C extraigan
fácilmente datos binarios de la información de texto en un archivo XML. No requiere que el programa de
aplicación realice ningún análisis del archivo XML.

NotaLos archivos XML solo pueden tener un elemento de nivel superior. Por ejemplo,

<CUADRO>
<TPPROG>
</TPPROG>
</GRID>

es legal. Tiene un elemento de nivel superior (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.

9.5.2 Secuencia de instalación

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.

9.5.3 Ejemplo de programa KAREL que hace referencia a un archivo XML

• 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.

• El número máximo de pares admitidos es 32.

• 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ó.

• El código de retorno XML_END debe verificar si el procesamiento ya se realizó en el código de inicio y


restablecer el indicador.

Figura 9–1. Archivo XML 1 Etiquetas de inicio y finalización separadas


<?xml version="1.0" ?><!-- Este es un comentario -- >
<xmlstrct_t primero="123456" segundo="7.8910" tercero="1" cuarto="Una cadena"> Texto
asociado con la etiqueta xmlstrct_t
</xmlstrct_t>

Figura 9–2. Archivo XML 2 Etiquetas de inicio y finalización combinadas


<?xml version="1.0" ?><!-- Este es un comentario -- >
<xmlstrct_t primero="78910" segundo="12.3456" tercero="0" cuarto="Una cadena"/>

Figura 9–3. Archivo XML 3 Etiqueta GRID no registrada o procesada


<?xml version="1.0" ?>-<!—comentario <GRID
rows="16" cols="24" scale="80">
<xmlstrct_t first=”123456” second=”78910” third="1” "fourth=”A String”>
caracteres especiales < > & "
</xmlstrct_t>
</GRID>

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.

Figura 9–4. 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

datos de inicio: BOOLEANO


---------------------------------------------------------------------------
--
--
- - Hay dos tipos de construcciones de archivos XML. En uno la etiqueta final es
- – incrustado en la etiqueta de inicio en el otro la etiqueta final está separada. A
– – el analizador adecuado debe manejar ambas construcciones de etiquetas
--
- - Para el caso de que la etiqueta final esté separada de la etiqueta inicial
– – (Figura 1.1) las siguientes escrituras muestran la secuencia de retornos:
- - Escaneado (Rev D) xmlstrct_t 3 100 129015
- - Iniciar procesamiento de etiquetas...
- - Escaneado (Rev D) xmlstrct_t 3 101 129015

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...

- - Escaneado (Rev D) xmlstrct_t 0 101 0


--
EMPEZAR
SET_FILE_ATR(consola, ATR_IA, 0) -- ATR_IA se define en flbt.ke
ABRIR ARCHIVO consola ('RW', 'CONS:') IF
UNINIT(xml_name) DESPUÉS

nombre_xml = 'mc:kl16004.xml'
TERMINARA SI

SET_FILE_ATR (archivo_xml, ATR_XML) - - XML


CLR_IO_STAT(archivo_xml)
ABRIR ARCHIVO xml_file ('RO', xml_name) - - Abierto hace nueva operación
estado = IO_STATUS(xml_file)
SI estado <> 0 ENTONCES
POST_ERR(estado, '', 0, 0) abortar

TERMINARA SI

xml_addtag(xml_file, 'xmlstrct_t', 32, FALSO, MYXML_CONST, estado) textdone = TRUE

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

text[text_idx], textdone, estado) VERDADERO


datos de inicio =
CASO (XML_STEND) :
- - Esta etiqueta nunca se devuelve
ESCRIBIR consola ('StEnd Tag', CR) CASO
(XML_END) :
ESCRIBIR consola ('Etiqueta final', CR) si
(startdata = TRUE) ENTONCES
datos de inicio=FALSO
ESCRIBIR consola ('Procesado en la etiqueta de inicio...', CR)
ELSE
ESCRIBIR consola ('Finalizar procesamiento de etiquetas...',
CR) text_idx = 1
xml_setvar(xml_file, 'kl16004', 'xmlstrct', estado)
- - Ya miró los atributos, obtenga el texto xml_getdata (xml_file, numattr,
attrnames, attrvalues,
text[text_idx], textdone, estado)
TERMINARA SI

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

ENDIF -- Buen estado de xml_parse ENDWHILE

- - Esto no es obligatorio pero permite al usuario eliminar dinámicamente


– – y agregue etiquetas
xml_remtag(xml_file, 'xmlstrct_t', estado)
CERCA ARCHIVO xml_file
estado = E/S_ESTADO(archivo_xml)
SI estado <> 0 ENTONCES
POST_ERR(estado, '', 0, 0) ENDIF

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.

9.5.4 Analizar errores

XML_TAG_SIZE "Etiqueta demasiado larga"

XML_ATTR_SIZE "Atributo demasiado largo"

XML_NOSLASH "Uso no válido de / carácter"

XML_INVTAG "Carácter no válido en la etiqueta"

XML_ATTRMATCH "Sin valor para el atributo"

XML_TAGMATCH "Etiqueta final sin inicio coincidente"

XML_INVATTR "Carácter no válido en el atributo"

XML_NOFILE "No se puede encontrar el archivo"

XML_TAGNEST "Nivel de anidamiento de etiquetas demasiado profundo"

XML_COMMENT "Error en el comentario"

XML_BADEXCHAR "Carácter desconocido &xxx;”

XML_TAGNFND "Etiqueta no encontrada"

XML_INVEOF "Final de archivo inesperado"

XML_SCANLIM "Límite de escaneo excedido"

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.

XML_FUNCTION "Retorno de código de función"

9.6 DISPOSITIVO DE MEMORIA

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

1. FTP puede cargar un archivo de PC copiándolo en el dispositivo MD:.

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.

Tabla 9–4. Listados de archivos para el dispositivo MD

Nombre del archivo Descripción

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.

EJE.DG Este archivo muestra el estado del eje y del servo.

CONFIG.DG Este archivo muestra un resumen de la configuración del sistema

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.

CURPOS.DG Este archivo muestra la posición actual del robot.

* . DF Este archivo contiene la configuración predeterminada del editor TP.

DIOCFGSV.IO Este archivo contiene información de configuración de E/S en forma binaria.

DIOCFGSV.VA Este archivo es un listado ASCII de DIOCFGSV.IO.

ERROR.LS Este archivo es una lista ASCII de errores activos.

ERRALL.LS Este archivo es una lista ASCII de registros de errores.

ERRAPP.LS Este archivo es una lista ASCII de errores de aplicación.

ERRCOMM .LS Este archivo muestra errores de comunicación.

ERRCURR.LS Este archivo es una lista ASCII de la configuración del sistema.

ERRHIST.LS Este archivo es una lista ASCII de la configuración del sistema.

ERRMOT.LS Este archivo es una lista ASCII de errores de movimiento.

ERRPWD.LS Este archivo es una lista ASCII de errores de contraseña.

ERRSYS.LS Este archivo es una lista ASCII de errores del sistema.

ETERNET Este archivo muestra la configuración de Ethernet.

MARCO.DG Este archivo muestra asignaciones de fotogramas.

FRAMEVAR.VR Este archivo contiene información de variables de herramientas y estructuras del sistema en forma binaria.

FRAMEVAR.VA Este archivo es un listado ASCII de FRAMEVAR.VR.

HIST.LS Este archivo muestra volcados de registro de historial.

9–27
9. SISTEMA DE ARCHIVOS MARRC75KR07091E Rev H

Tabla 9–4. Listados de archivos para el dispositivo MD (continuación)

Nombre del archivo Descripción

HISTE.LS Este archivo es una lista ASCII de excepciones de fallas generales.

HISTP.LS Este archivo es una lista ASCII de excepciones de fallos de alimentación.

HISTORIAL.LS Este archivo es una lista ASCII de excepciones de servo.

IOCONFIG.DG Este archivo muestra la configuración y las asignaciones de E/S.

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.

LOG CONSTAIL.DG Este archivo es la última línea del registro de la consola.

NUMREG.VA Este archivo es un listado ASCII de NUMREG.VR.

NUMREG.VR Este archivo contiene registros numéricos del sistema.

MACRO.DG Este archivo muestra la asignación de macros.

MEMORIA.DG Este archivo muestra el uso actual de la memoria.

PUERTO.DG Este archivo muestra la configuración del puerto serie.

POSREG.VA Este archivo es un listado ASCII de POSREG.VR.

POSREG.VR Este archivo contiene información de registro de posición del sistema.

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.

ESTADO.DG Este archivo muestra un resumen del estado del sistema

RESUMEN.DG Este archivo muestra resúmenes de diagnóstico

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

Tabla 9–4. Listados de archivos para el dispositivo MD (continuación)

Nombre del archivo Descripción

SYSFRAME.SV Este archivo contiene $MNUTOOL, $MNUFRAME, $MNUTOOLNUM y $MNUFRAMENUM. Estas


variables estaban en SYSVARS.SV en versiones anteriores a V7.20.

SYSMACRO.SV Este archivo es una lista de definiciones de macros del sistema.

SYSMACRO.VA Este archivo es un listado ASCII de SYSMACRO.SV.

SYSMAST.SV Este archivo es una lista de información de control del sistema.

SYSMAST.VA Este archivo es un listado ASCII de SYSMAST.SV.

SYSSERVO.SV Este archivo es una lista de los parámetros del servo del sistema.

SYSSERVO.VA Este archivo es un listado ASCII de SYSSERVO.SV.

SISTEMA.DG Este archivo muestra un resumen de la información del sistema.

SISTEMA.VA Este archivo es una lista ASCII de variables del sistema sin movimiento.

SYSVARS.SV Este archivo es una lista de variables del sistema.

SYSVARS.VA Este archivo es un listado ASCII de SYSVARS.SV.

SIS****.SV Este archivo contiene variables del sistema específicas de la aplicación.

SIS****.VA Este archivo es un listado ASCII de SYS****.VA.

LISTA DE TAREAS.DG Este archivo muestra la información de la tarea del sistema.

PRUEBA.DG Este archivo muestra el estado de prueba.

TIMERS.DG Este archivo muestra el estado del temporizador del programa y del sistema.

TPACCN.DG Este archivo muestra el estado contable de TP.

VERSIÓN.DG Este archivo muestra información sobre la versión del sistema, el software y el servo.

* * * . ordenador personal Este archivo es un programa binario de KAREL.

* * * . Virginia Este archivo es una lista ASCII de variables KAREL.

* * * . realidad virtual Este archivo contiene variables KAREL en forma binaria.

* * * . LS Este archivo es una lista ASCII de un programa colgante de enseñanza.

* * * . TP Este archivo es un programa binario Teach Pendant.

* * * . Texas Este archivo es un archivo de diccionario.

* * * . HTM Este archivo es una página web HTML.

* * * . STM Este archivo es una página web HTML que utiliza uniControl colgante o lado del servidor incluido.

* * * . GIF Este archivo es un archivo de imagen GIF.

* * * . JPG Este archivo es un archivo de imagen JPEG.

Referirse aTabla 9–5para obtener una lista de restricciones al usar el dispositivo MD:.

9–29
9. SISTEMA DE ARCHIVOS MARRC75KR07091E Rev H

Tabla 9–5. Restricciones de prueba al usar el dispositivo MD:

Nombre o tipo de archivo LEER ESCRIBE ELIMINAR Comentarios

* * * . director general SÍ NO NO Archivo de texto de diagnóstico.

* * * . 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

Capítulo 10 DICCIONARIOS Y FORMULARIOS ................................................................ 10-1


10.1 VISIÓN GENERAL.................................................... ............................................................. 10–3
10.2 CREAR DICCIONARIOS DE USUARIO.................................................... .......... 10–3
10.2.1 Sintaxis del diccionario.................................................... .................................... 10–3
10.2.2 Número de elemento del diccionario.................................................... ................... 10–4
10.2.3 Nombre del elemento del diccionario.................................................... ...................... 10–5
10.2.4 Posicionamiento del cursor del diccionario.................................................... ............... 10–5
10.2.5 Texto del elemento del diccionario.................................................... ......................... 10–6
10.2.6 Comandos de palabras reservadas del diccionario.................................................... .. 10–8
10.2.7 Códigos de caracteres.................................................... .................................... 10–10
10.2.8 Anidación de elementos del diccionario.................................................... ............... 10–10
10.2.9 Comentario del diccionario.................................................... ............................ 10–10
10.2.10 Generación de un archivo de constantes KAREL.................................................... ...... 10–11
10.2.11 Comprimir y cargar diccionarios en el controlador..................... 10–11
10.2.12 Acceder a los elementos del diccionario desde un programa KAREL....................... 10–12
10.3 CREAR FORMULARIOS DE USUARIO.................................................... ..................... 10–13
10.3.1 Sintaxis de formulario.................................................... ........................................ 10–14
10.3.2 Atributos de formulario.................................................... ..................................... 10–15
10.3.3 Título del formulario y etiqueta del menú.................................................... .................. 10–16
10.3.4 Texto del menú del formulario.................................................... .................................... 10–17
10.3.5 Elemento de menú seleccionable de formulario.................................................... .................. 10–18
10.3.6 Editar elemento de datos.................................................... ...................................... 10–19
10.3.7 Formularios dinámicos con vista de árbol.................................................... ........... 10–26
10.3.8 Texto no seleccionable.................................................... ............................. 10–27
10.3.9 Mostrar solo elementos de datos.................................................... ....................... 10–27
10.3.10 Atributos de posición del cursor.................................................... ................... 10–27
10.3.11 Formar palabras reservadas y códigos de caracteres............................................. 10–28
10.3.12 Forma Función Clave Elemento Nombre o Número............................................. 10–30
10.3.13 Tecla de función de formulario usando una variable.................................................... .... 10–31
10.3.14 Nombre o número del elemento de ayuda del formulario.................................................... .. 10–31

10-1
10. DICCIONARIOS Y FORMULARIOS MARRC75KR07091E Rev H

10.3.15 Pantalla de forma de Teach Pendant.................................................... ................ 10–32


10.3.16 Pantalla de formulario CRT/KB.................................................... .......................... 10–32
10.3.17 Convención de nomenclatura de archivos de formulario.................................................... ............. 10–33
10.3.18 Comprimir y cargar formularios en el controlador............................... 10–34
10.3.19 Mostrar un formulario.................................................... ................................ 10–36

10–2
MARRC75KR07091E Rev H 10. DICCIONARIOS Y FORMULARIOS

10.1 VISIÓN GENERAL

Los diccionarios y formularios se utilizan para crear interfaces de operador en las pantallas colgantes y
CRT/KB con programas KAREL.

Este capítulo incluye información sobre

• Creación de archivos de diccionario de usuario, consulteSección 10.2.

• Creación y uso de formularios, consulteSección 10.3.

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.

10.2 CREAR DICCIONARIOS DE USUARIO

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.

Los siguientes son pasos para usar diccionarios.

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.

NotaLos archivos de diccionario son útiles en programas multilingües.

10.2.1 Sintaxis del diccionario

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>

— Los elementos entre corchetes < > son opcionales.

— * 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.

— $n especifica el número de elemento. n es un entero positivo 0 o mayor. Referirse aSección 10.2.2.

— , 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.

— + nest_ele especifica el siguiente texto del diccionario. Referirse aSección 10.2.8.

• 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.

10.2.2 Número de elemento del 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:

• Los números de elementos comienzan en 0 y continúan en orden secuencial.

• 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

10.2.3 Nombre del elemento del diccionario

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.

Los siguientes son ejemplos de nombres de 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

elementos se pueden generar como constantes en un archivo de inclusión de KAREL.

10.2.4 Posicionamiento del cursor del diccionario

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".

— La posición inferior derecha de la ventana "t_fu" es "@10,40" y se encuentra en la columna 40 de la fila 15 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

— La posición inferior derecha de la ventana es "@17,80” y se encuentra en la fila 21 de la pantalla


"c_sc", columna 80.

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.

10.2.5 Texto del elemento del diccionario

El texto del elemento, o texto entre comillas, es la información (texto) que desea que se muestre en la pantalla.

• El texto del elemento debe estar entre comillas dobles “ ”.


• Para insertar una barra invertida dentro del texto, utilice \\ (doble barra invertida).

• 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

• Los elementos entre < > son opcionales.

• El signo - significa justificar a la izquierda el valor mostrado.

• El signo + significa mostrar siempre el signo si el argumento es un número.

• 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:

• conversion_characters identifica el tipo de datos del argumento que se está pasando. se


enumeran enTabla 10–1.

• ^argumento_número es el ^ (carácter de intercalación hacia arriba) seguido de un número.

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:

Tabla 10–1. Caracteres de conversión

Personaje Tipo de argumento: Impreso como

d ENTERO; número decimal.

o ENTERO; notación octal sin signo (sin un cero inicial).

x, x ENTERO; notación hexadecimal sin signo (sin un 0x o 0X inicial), usando abcdef o


ABCDEF para 10, ..., 15.

tu ENTERO; notación decimal sin signo.

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.

g, g REAL; %eo %E se utiliza si el exponente es inferior a -4 o superior o igual a la precisión; de lo contrario,


se utiliza %f. Los ceros finales y un puntero decimal final no se imprimen.

% No se convierte ningún argumento; imprime un %.

• 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.

• losF,mi,mi,gramo,yGRAMOse pueden utilizar caracteres con el tipo de datos REAL.

• El personajeses para un tipo de datos STRING.

Precaución

Asegúrese de usar el carácter de conversión correcto para el tipo de argumento pasado.


Si los tipos de caracteres y argumentos de conversión no coinciden, pueden producirse
resultados inesperados.

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.

• Si el número de ancho comienza con "0", el campo se rellena con ceros.

La precisión tiene el siguiente significado para el carácter de conversión especificado

• 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.

• F,mi,ymi-El número de dígitos que se imprimirán después del punto decimal.

• gramoyGRAMO-El número de dígitos significativos.

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.

10.2.6 Comandos de palabras reservadas del diccionario

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

Tabla 10–2. Palabras reservadas

Palabra reservada Función

&bg_negro color de fondo negro

&bg_azul color de fondo azul

&bg_cian Color de fondo cian

&bg_dflt Color de fondo predeterminado

&bg_verde color de fondo verde

&bg_magenta color de fondo magenta

&bg_rojo color de fondo rojo

&bg_blanco color de fondo blanco

&bg_amarillo color de fondo amarillo

&fg_negro Color de primer plano negro

&fg_azul Color de primer plano azul

&fg_cian Color de primer plano cian

&fg_dflt Color de primer plano por defecto

&fg_verde Color de primer plano verde

&fg_magenta Color de primer plano magenta

&fg_rojo color de primer plano rojo

&fg_blanco Color de primer plano blanco

&fg_amarillo color de primer plano amarillo

&clear_win Ventana clara (#128)

&clear_2_eol Borrar hasta el final de la línea (#129)

&clear_2_eow Borrar hasta el final de la ventana (#130)

$cr Retorno de carro (#132)

$ si Salto de línea (#133)

&rev_lf Avance de línea inverso (#134)

&nueva línea Nueva línea (#135)

&bs Retroceso (#136)

&hogar Cursor de inicio en la ventana (#137)

&parpadear Atributo de video intermitente (#138)

&reverso Atributo de video inverso (#139)

&audaz Atributo de video en negrita (#140)

&subrayar Subrayar atributo de video (#141)

&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

Tabla 10–2. Palabras reservadas (continuación)

Palabra reservada Función

&estándar Todos los atributos normales (#143)

&gráficos_en Activar caracteres gráficos (#146)

&ascii_on Activar caracteres ASCII (#147)

&doble_alto Tamaño de video alto (# 148) (consulte la descripción a continuación para ver el uso)

&talla normal Tamaño de video normal (#153)

&multi_en Activar caracteres multinacionales (#154)

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.

10.2.7 Códigos de caracteres

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.

10.2.8 Anidación de elementos del diccionario

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.

10.2.9 Comentario del diccionario

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

10.2.10 Generación de un archivo de constantes KAREL

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.

Lo siguiente crearía el archivo kcmn.kl cuando se comprime el diccionario.


. kl kcmn
$-, move_home, "pulsa INICIO para moverte a casa"

El archivo kcmn.kl se vería de la siguiente manera


- - ADVERTENCIA: Este archivo de inclusión generado por el compresor de diccionario.
--
- - Incluir archivo: kcmn.kl
- - Archivo de diccionario: apkcmneg.utx
- - CONST.
mover_casa = 0

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.

10.2.11 Comprimir y cargar diccionarios en el controlador

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

Figura 10–1. Compresor de diccionario y archivo de diccionario de usuario

. 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.

10.2.12 Acceder a los elementos del diccionario desde un programa KAREL

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:

• ADD_DICT: agrega un diccionario al idioma especificado.

• REMOVE_DICT: elimina un diccionario del idioma especificado y cierra el archivo o libera la


memoria en la que reside.
• WRITE_DICT: escribe un elemento de diccionario en una ventana.

• 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

MARRC75KR07091E Rev H 10. DICCIONARIOS Y FORMULARIOS

• READ_DICT - Lee un elemento de diccionario en una variable KAREL STRING.

• READ_DICT_V: lee un elemento de diccionario que tiene especificadores de formato en una variable STRING.

• CHECK_DICT: comprueba si existe un elemento de diccionario.

10.3 CREAR FORMULARIOS DE USUARIO

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.

Los siguientes son pasos para usar formularios.

1. Cree un archivo de texto de formulario ASCII con la extensión de archivo .FTX.

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).

• De KAREL,use el ADD_DICT incorporado para cargar el archivo de diccionario (.TX) y el LOAD


incorporado para cargar el archivo de variables de asociación (.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

10.3.1 Sintaxis de formulario

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.

La siguiente es la sintaxis de un formulario:

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

• Los elementos entre corchetes <> son opcionales.

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).

• form_attributes son las palabras claveun numeroypoco claro.

• form_name especifica el nombre del elemento que identifica el formulario.

• "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.

• "Help_text" es un elemento de texto de hasta 40 caracteres.

• Los atributos de color se pueden especificar en los formularios. losiEl colgante mostrará el color. El colgante
monocromático ignorará los atributos de color.

10.3.2 Atributos de formulario

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

10.3.3 Título del formulario y etiqueta del menú

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ú.

• El título del menú se coloca en la fila 3, columna 1-21.

• La etiqueta del menú se coloca en la fila 4, columna 1-40.

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

&inicio &invertir "Título del menú" &estándar &nueva_línea

"Etiqueta de menú" &nueva_línea

. 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

&home &reverse "Título del menú" &estándar &nueva_línea &nueva_línea

. 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

@1,2 &invertir "Título del menú" &estándar

@2,5 "Etiqueta de menú"

. forma final

10.3.4 Texto del menú del formulario

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.

El texto del menú puede consistir en lo siguiente:

• Elementos de menú seleccionables

• Edite elementos de datos de los siguientes tipos:

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

— Tipo de enumeración de tecla de función

— Tipo de enumeración de subventana

— Tipo de enumeración de subventana usando una variable

— Simulación de puerto

• Texto no seleccionable

• Mostrar solo elementos de datos con especificadores de formato

• Atributos de posición del cursor

• Reserva de palabras o códigos ASCII

• Nombre o número del elemento de la tecla de función

• Nombre o número del elemento de ayuda

Cada tipo de texto de menú se explica en las siguientes secciones.

10.3.5 Elemento de menú seleccionable de formulario

Los elementos de menú seleccionables tienen las siguientes características:

• 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 "

• Toda la cadena se resaltará cuando el elemento seleccionable sea el predeterminado.

• 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

" Artículo 1, línea 2 "

• 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

"- Elemento 2 " &nueva_línea

"- Artículo 3 "

o
@3,4"- Artículo 1 "

@4,4"- Artículo 2 "

@5,4"- Artículo 3 "

• La primera línea de la ventana de desplazamiento se define como la fila 3 del formulario.

• 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.

10.3.6 Editar elemento de datos

Puede editar elementos de datos que tengan las siguientes características:

• 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.

Este valor predeterminado puede hacer que su formulario esté desalineado.

Tabla 10–3enumera los caracteres de conversión para un elemento de datos editable.

Tabla 10–3. Caracteres de conversión

Personaje Tipo de argumento: Impreso como

d ENTERO; número decimal.

o ENTERO; notación octal sin signo (sin un cero inicial).

x, x ENTERO; notación hexadecimal sin signo (sin un 0x o 0X inicial), usando abcdef o


ABCDEF para 10, ..., 15.

tu ENTERO; notación decimal sin signo.

PU puerto ENTERO; notación decimal sin signo.

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.

mi, mi REAL; notación decimal de la forma <->m.dddddde+-xx o <->m.ddddddE+-xx, 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.

g, g REAL; %eo %E se utiliza si el exponente es inferior a -4 o superior o igual a la precisión; de lo


contrario, se utiliza %f. Los ceros finales y un puntero decimal final no se imprimen.

h CORTO; corto firmado.

b BYTE; byte sin firmar.

B BOOLEANO; imprime caracteres de una cadena de enumeración booleana.

PAGS puerto BOOLEANO; imprimir caracteres de la cadena de enumeración de puerto booleano.

S puerto INTEGER o BOOLEAN; imprimir caracteres de la cadena de enumeración de simulación de puerto.

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

definir las cadenas de enumeración.

w ENTERO; imprimir caracteres de la cadena de enumeración de la subventana. Utiliza elementos de diccionario para

definir las cadenas de enumeración.

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

Tabla 10–3. Caracteres de conversión (continuación)

Personaje Tipo de argumento: Impreso como

% no se convierte ningún argumento; imprime un %.

t BOOLEANO; imprima + o - para la vista de árbol.

El siguiente es un ejemplo de un especificador de formato:


"-%5d" o "-%-10s"

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.

Editar elementos de datos: INTEGER, INTEGER Ports, REAL, SHORT, BYTE

• 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.)"

• Cuando se selecciona un elemento de datos de edición, el procesador de formularios llama a la rutina de


entrada apropiada. La rutina de entrada lee el nuevo valor (con el video inverso activo) y usa los valores
mínimo y máximo especificados en el elemento del diccionario para determinar si el nuevo valor está dentro
del rango válido.

— 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á.

— Si el nuevo valor está en el rango válido, sobrescribirá el valor actual.

Editar elemento de datos: BOOLEAN

• 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

" NO" &nueva_línea

" 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.

Editar elemento de datos: Puerto BOOLEAN

• 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

" APAGADO" &nueva_línea

" 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.

Editar elemento de datos: simulación de puerto

• 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.

Editar elemento de datos: STRING

• 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)"

Editar elemento de datos: cadena de nombre del programa

• 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(1)" * especifica programas TP

"-%12pk(2)" * especifica programas de PC

"-%12pk(6)" * especifica TP, PC, VR

"-%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.

Editar elemento de datos: Enumeración de teclas de función

• 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

"" &nueva_línea *Especifica que F1 no está activo

"JOINT" &nueva_línea *Especifica F2

"LINEAR" &nueva_línea *Especifica F3

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 usuario presiona F2, valor = 2

El usuario presiona F3, valor = 3

El usuario presiona F4, valor = 4

El usuario presiona F5, valor = 5

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.

ARTICULACIÓN LINEAL CIRC

Editar elemento de datos: enumeración de subventana

• 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

Editar elemento de datos: Enumeración de subventana usando una variable

• 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" &nueva_línea * nombre del programa de la variable

"OPCIONES" &nueva_línea * nombre de variable que contiene opciones

[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*

[2] 'Rojo' <= valor 1

[3] 'Azul' <= valor 2

[4] 'Verde' <= valor 3

[5] *unidad*

[6] *unidad*

Editar elemento de datos: vista de árbol

• 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

Tabla 10–4. Formato de vista de árbol

Formato valor FALSO Verdadero valor

"-%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:

" "-%t calendario de grabación:" &new_line


" Alimentación de alambre ""-%6.2f(0.0, 9999.0)" &new_line
" Trim ""-%6.2f(0.0, 9999.0)" &nueva_línea
. árbol final
"Tiempo de posflujo de gas:" &nueva_línea

• 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

10.3.7 Formularios dinámicos con vista de árbol

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

" Configuración de recursos compartidos de PC:"


" &nueva_línea Servidor WINS: " "16k" &nueva_línea
" Almacenamiento en caché del cliente: " "-%10B(bool_fkey)" &nueva línea
" Descubrimiento de difusión:" "-%10B(bool_fkey)" &nueva_línea

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.

10.3.8 Texto no seleccionable

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.

10.3.9 Mostrar solo elementos de datos

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.

10.3.10 Atributos de posición del cursor

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

@4,4 "- Artículo 2"

@3,4 "- Elemento 3" <- no se permite retroceder a la fila 3

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.

10.3.11 Formar palabras reservadas y códigos de caracteres

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.

Tabla 10–5. Palabras reservadas

Palabra reservada Función

&bg_negro color de fondo negro

&bg_azul color de fondo azul

&bg_cian Color de fondo cian

&bg_dflt Color de fondo predeterminado

&bg_verde color de fondo verde

&bg_magenta color de fondo magenta

&bg_rojo color de fondo rojo

&bg_blanco color de fondo blanco

&bg_amarillo color de fondo amarillo

&fg_negro Color de primer plano negro

&fg_azul Color de primer plano azul

&fg_cian Color de primer plano cian

&fg_dflt Color de primer plano por defecto

&fg_verde Color de primer plano verde

&fg_magenta Color de primer plano magenta

&fg_rojo color de primer plano rojo

&fg_blanco Color de primer plano blanco

&fg_amarillo color de primer plano amarillo

&clear_win Ventana clara (#128)

&clear_2_eol Borrar hasta el final de la línea (#129)

10–28
MARRC75KR07091E Rev H 10. DICCIONARIOS Y FORMULARIOS

Tabla 10–5. Palabras reservadas (continuación)

Palabra reservada Función

&clear_2_eow Borrar hasta el final de la ventana (#130)

$cr Retorno de carro (#132)

$ si Salto de línea (#133)

&rev_lf Avance de línea inverso (#134)

&nueva línea Nueva línea (#135)

&bs Retroceso (#136)

&hogar Cursor de inicio en la ventana (#137)

&parpadear Atributo de video intermitente (#138)

&reverso Atributo de video inverso (#139)

&audaz Atributo de video en negrita (#140)

&subrayar Subrayar atributo de video (#141)

&doble de ancho Tamaño de video ancho (#142) (consulte la descripción a continuación para ver el uso)

&estándar Todos los atributos normales (#143)

&gráficos_en Activar caracteres gráficos (#146)

&ascii_on Activar caracteres ASCII (#147)

&doble_alto Tamaño de video alto (# 148) (consulte la descripción a continuación para ver el uso)

&talla normal Tamaño de video normal (#153)

&multi_en Activar caracteres multinacionales (#154)

Tabla 10–6enumera las palabras reservadas que se pueden utilizar para una ventana de desplazamiento.

Tabla 10–6. Palabras reservadas para la ventana de desplazamiento

Palabra reservada Función

&nueva línea Nueva línea (#135)

&parpadear Atributo de video intermitente (#138)

&reverso Atributo de video inverso (#139)

&audaz Atributo de video en negrita (#140)

&subrayar Subrayar atributo de video (#141)

&estándar Todos los atributos normales (#143)

&gráficos_en Activar caracteres gráficos (#146)

&ascii_on Activar caracteres ASCII (#147)

&multi_en Activar caracteres multinacionales (#154)

10–29
10. DICCIONARIOS Y FORMULARIOS MARRC75KR07091E Rev H

10.3.12 Forma Función Clave Elemento Nombre o Número

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

" F1" &nueva línea

" F2" &nueva línea

" F3" &nueva línea

" F4" &nueva línea

" AYUDA >" &nueva_línea

"" &nueva línea

"" &nueva línea

" F8" &nueva línea

" F9" &nueva línea

• El procesador de formularios etiquetará las teclas de función apropiadas y regresará de la rutina si se


presiona una tecla válida. El carácter de terminación se establecerá en ky_f1 a ky_f10.

• 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

10.3.13 Tecla de función de formulario usando una variable

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,

* Especificar las teclas de función en una variable


* cuyo tipo es un ARRAY[m] de STRING[n]. $3,misc_fkey

"*FORMULARIO DE EJECUCIÓN" &nueva_línea * nombre del programa de la variable


"*FTECLAS" &nueva_línea * nombre de variable que contiene teclas de función

[RUNFORM] FKEYS debe definirse como una matriz de cadenas KAREL. Cada elemento de la matriz debe definir una
etiqueta de tecla de función.

[EJECUTAR] FKEYS:ARRAY[10] OF STRING[12] = [1] '


F1'
[2] ' F2'
[3] ' F3'
[4] ' F4'
[5] ' AYUDA >'
[6] ''
[7] ''
[8] ' F8'
[9] ' F9'
[10]' >'

10.3.14 Nombre o número del elemento de ayuda del formulario

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.

• El menú de ayuda responde a las siguientes entradas:

— 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.

10.3.15 Pantalla de forma de Teach Pendant

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.

Figura 10–2. Pantalla de forma de Teach Pendant

+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + |error

|
|estadística |
|lleno |< superposición completa y motn

|lleno | motn comienza en la columna 18

|fcr |
= =
|prmp |
|ftnk |
+------------------------------------------------------------------------+

10.3.16 Pantalla de formulario CRT/KB

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

Figura 10–3. Pantalla de formulario CRT/KB

+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + |err

|
|ct01 |
|ct05 | < ct05 y motn se superponen motn

|ct05 | comienza en la columna 18


|ct06 |
= =
|ct03 |
|ct04 |
+------------------------------------------------------------------------+

10.3.17 Convención de nomenclatura de archivos de formulario

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;

— “EG” para INGLÉS


— “JP” para JAPONÉS
— “FR” para FRANCÉS
— “GR” para ALEMÁN
— “SP” para ESPAÑOL
• Un archivo de diccionario que contenga texto de formulario debe tener un tipo de archivo .FTX; de lo contrario, el
compresor de diccionario no funcionará. Una vez comprimido, el mismo archivo de diccionario tendrá un tipo de
archivo .TX.

El siguiente es un ejemplo de un nombre de archivo de diccionario de formulario sin comprimir:


MHPALTEG.FTX

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.

10.3.18 Comprimir y cargar formularios en el controlador

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.

Figura 10–4. Compresor de diccionario y archivo de diccionario de formularios

. archivo FTX

Compresor de diccionario

. Texas . realidad virtual . KL

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

PALT6_IT, PALT6_LN y PALT6_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 formulario se carga mediante el comando KCL LOAD FORM.


KCL> CARGAR FORMULARIO nombre de archivo

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

KCL> CARGAR DICT nombre de archivo dict_name DRAM

KCL> CARGAR VARS dict_name

10–35
10. DICCIONARIOS Y FORMULARIOS MARRC75KR07091E Rev H

10.3.19 Mostrar un formulario

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.

Figura 10–5. Ejemplo de elementos de menú seleccionables

FORMATO DE EJECUCIÓN LÍNEA 22 CORRER


Título aquí CONJUNTO 10%
etiqueta aquí 1/5
1 Menú artículo 1
2 Menú artículo 2
3 Menú artículo 3
4 Elemento de menú 4 línea 1
Elemento de menú 4 línea 2
5 Elemento de menú 5

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.

Diccionario de formulario de ejemplo para elementos de menú seleccionables

* Archivo de formulario de diccionario: form.ftx


*
* Genere form.kl que debe incluirse en su formulario del programa KAREL
. kl
. forma
$-, formulario
&home &reverse "Título aquí" &standard $nueva_línea "
etiqueta aquí " &nueva_línea
@3,10 "- Elemento de menú 1 "
@4,10 "- Elemento de menú 2 "
@5,10 "- Elemento de menú 3 "
@6,10 "- Elemento de menú 4 línea 1 +" "
@7,10 Elemento de menú 4 línea 2 " "-
@8,10 Elemento de menú 5 "
* Agregue tantos elementos como desee.

10–36
MARRC75KR07091E Rev H 10. DICCIONARIOS Y FORMULARIOS

* El administrador de formularios los desplazará.


^form1_fkey * especifica el elemento que contiene
* etiquetas de teclas de función
?form1_help * elemento que contiene ayuda
. forma final
$-,form1_fkey * etiquetas de teclas de función
" F1" &nueva_línea
" F2" &nueva línea
" F3" &nueva línea
" F4" &nueva línea
" AYUDA >" &nueva_línea * la ayuda debe estar en F5
" F6" &nueva línea
" F7" &nueva línea
" F8" &nueva línea
" F9" &nueva línea
" F10 >"
* puede tener un máximo de 10 teclas de función etiquetadas
$-, formulario1_ayuda * texto de ayuda
"Línea de ayuda 1" &nueva_línea
"Línea de ayuda 2" &nueva_línea
"Línea de ayuda 3" &nueva_línea
* Puedes tener un máximo de 48 líneas de ayuda

El programa mostrado enPrograma de ejemplo para elementos de menú seleccionablesse utilizó para mostrar el formulario que se
muestra enFigura 10–5.

Programa de ejemplo para elementos de menú seleccionables

Formulario de ejecución del PROGRAMA

%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

def_item = 1 -- comienza con el elemento de menú 1


- - Muestra el formulario llamado FORM1
DISCTRL_FORM ("FORMULARIO", form1, value_array, inact_array,
change_array, kc_func_key, def_item, term_char, status) WRITE TPERROR
(CHR(cc_clear_win)) - - borrar el error TP
ventana
SI term_char = ky_select ENTONCES
WRITE TPERROR ("Elemento de menú", def_item: :1, 'fue seleccionado').
MÁS
WRITE TPERROR ('Tecla de función', term_char: :1, 'fue seleccionado.')
TERMINARA SI

FIN del formulario de ejecución

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.

Figura 10–6. Ejemplo de elementos de edición de datos

FORMATO DE EJECUCIÓN LÍNEA 81 CORRER


Título aquí CONJUNTO 10%

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

17 Tipo de programa: PRG1


18 Tipo de programa: PRINCIPAL
SALIDA
F1 F2 F3 F4 F5

ARTÍCULO PÁGINA PÁGINA+ FCTN MENÚS

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

Ejemplo de diccionario para editar elementos de datos

* Archivo de formulario de diccionario: form.ftx


*
* Genere form.kl que debe incluirse en su programa KAREL
. kl formulario
. forma
$-, formulario2

&home &reverse " Título aquí" &estándar " &nueva línea


etiqueta aquí " &nueva línea
" Entero: " "-%10d" &nueva línea
" Entero: " "-%10d(1,32767)" &nueva línea
" Real: " "-%12f" &nueva línea
" Bolean: " "-%10B(bool_fkey)" &nueva línea
" Cuerda: " "-%-20k" &nueva línea
" Cuerda: " "-% 12k (borrar)" &nueva línea
" Byte: " "-%10b" &nueva línea
" Corto: " "-%10h" &nueva línea
" DIN[1]: " "-%10P(dout_fkey)" &nueva línea
" AIN[1]: " " "-%10pu" " " "-%1S(sim_fkey)" " "-%10px" &nueva línea
" SALIDA[2]: " " " "-%1S(sim_fkey)" "-%8n(enum_fkey)" &nueva línea
" enumeración Escribe: " &nueva línea
" enumeración Escribe: " "-%6w(enum_subwin)" &nueva línea
" enumeración Escribe: " "-%6V(ENUM_VAR)" &nueva línea
" programa Escribe: " "-%12pk(1)" &nueva línea
" programa Escribe: " "-%12pk(2)" &nueva línea
" programa Escribe: " "-%12pk(6)" &nueva línea
" programa Escribe: " "-%12pk(16)" &nueva línea
^form2_fkey
. forma final
$-,form2_fkey
SALIR" &nueva_línea
* Le permite especificar las etiquetas para las teclas de función F4 y F5
$-,bool_fkey
"FALSO" &nueva línea * Etiqueta de tecla F5, el valor se establecerá FALSO
"CIERTO" &nueva línea * Etiqueta de la tecla F4, el valor se establecerá como VERDADERO
* Le permite especificar las etiquetas para las teclas de función F4 y F5 $-, dout_fkey

"APAGADO" &nueva línea * Etiqueta de la tecla F5, el valor se desactivará


"EN" &nueva línea * Etiqueta de la tecla F4, se establecerá el valor
EN
* Le permite especificar las etiquetas para las teclas de función F4 y F5 $-, sim_fkey

" 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

"MULTA" * Etiqueta de tecla F1, el valor se establecerá en 1


&nueva línea
"GRUESO" * Etiqueta de tecla F2, el valor se establecerá en 2
&nueva línea
"NOSOTROS" &nueva línea * Etiqueta de tecla F3, el valor se establecerá en 3
"NODECEL" &nueva línea * Etiqueta de tecla F4, el valor se establecerá en 4
"VARDECEL" &nueva línea * Etiqueta de tecla F5, el valor se establecerá en 5
* Le permite especificar un máximo de 35 opciones en una subventana
$-,enum_subwin
"Rojo" * el valor se establecerá en 1
ps
"Azul" * el valor se establecerá en 2
ps
"Verde"
ps
"Amarillo"
ps
"\a" * especifica el final de la lista de subventanas
* Le permite especificar las opciones para la subventana en un
* variable cuyo tipo es un ARRAY[m] de STRING[n]. $-,enum_var

"FORMULARIO DE EJECUCIÓN" &nueva línea * nombre del programa de la variable Nombre de


"OPCIONES" &nueva línea * la variable que contiene opciones

El programa mostrado enPrograma de ejemplo para editar elementos de datosse utilizó para mostrar el formulario enFigura
10–6.

Programa de ejemplo para editar elementos de datos

Formulario de ejecución del PROGRAMA

%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

value_array [1] = 'int_var1' value_array [2] = 'int_var2'


value_array [3] = 'real_var' value_array [4] = 'bool_var'
value_array [5] = 'str_var1' value_array [6] = 'str_var2'
value_array [ 7] = 'struc_var.byte_var1' value_array
[8] = 'struc_var.short_var' value_array [9] = 'din[1]'

matriz_valor [10] = 'ain[1]'


matriz_valor [11] = 'ain[1]'
matriz_valor [12] = 'aout[2]'
matriz_valor [13] = 'aout[2]'
value_array [14] = '[*sistema*]$grupo[1].$termtype' value_array
[15] = 'color_sel1'
value_array [16] = 'color_sel2' value_array
[17] = 'prog_name1' value_array [18] =
'prog_name2' value_array [19] =
'prog_name3' value_array [20] =
'prog_name4' opciones [1] = ''
- - no utilizado
opciones [2] = 'Rojo' opciones - - corresponde a color_sel12 = 1
[3] = 'Azul' opciones [4] = - - corresponde a color_sel12 = 2
'Verde' opciones [5] = - - corresponde a color_sel12 = 3
'Amarillo' - - corresponde a color_sel12 = 4
- - Inicializar variables int_var1
= 12345
- - int_var2 se deja deliberadamente sin inicializar real_var
= 0
bool_var = CIERTO
str_var1 = 'Esto es una prueba'

10–41
10. DICCIONARIOS Y FORMULARIOS MARRC75KR07091E Rev H

- - str_var = se deja deliberadamente sin inicializar


struc_var.byte_var1 = 10
struc_var.short_var = 30
color_sel1 = 3 - - corresponde al tercer elemento de enum_subwin
color_sel2 = 1
device_stat = formulario - - especificar el CRT/KB para mostrar
crt_panel
FORCE_SPMENU(dispositivo_stat, SPI_TPUSER2,1)
def_item = 1 -- comienza con el elemento de menú 1
DISCTRL_FORM('FORM', form2, value_array, inact_array,
change_array, kc_func_key, def_item, term_char, estado); FIN del formulario de
ejecución

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.

Figura 10–7. Ejemplo de elementos de datos de solo visualización

FORMATO DE EJECUCIÓN LÍNEA 53 CORRER


Título aquí CONJUNTO 10%

etiqueta aquí

Int: 12345 Booleano: VERDADERO

reales: 0,000000 Enumeración: BIEN

DIN[1]: APAGADO NO SIMULADO

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.

Diccionario de ejemplo para elementos de datos de solo visualización

* Archivo de formulario de diccionario: form.ftx


*
* Genere form.kl que debe incluirse en su formulario del programa KAREL
. kl
. forma
$-, formulario3

&home &reverse "Título aquí" &estándar &nueva línea


"etiqueta aquí" &nueva línea
&nueva línea
"Int: " "%-10d" " Bool: " "%-10B(bool_fkey)" "Real: " "%-10f" " Enum: " línea
&nueva
"%-10n(enum_fkey)" "DIN[""%1d" "]: " "%-10P(dout_fkey)" &nueva línea
"%-12S(sim2_fkey)"
* Puede tener tantas columnas como desee sin exceder las * 40 columnas.

10–42
MARRC75KR07091E Rev H 10. DICCIONARIOS Y FORMULARIOS

* También puede especificar líneas en blanco.


. forma final
$-,sim2_fkey
"SIN SIMULAR" &nueva_línea * Etiqueta de tecla F5, el puerto no será simulado
"SIMULADO" &nueva_línea * Etiqueta de tecla F4, se simulará el puerto

El programa mostrado enPrograma de ejemplo para mostrar solo elementos de datosse utilizó para mostrar el formulario que se
muestra enFigura 10–7.

Programa de ejemplo para mostrar solo elementos de datos

Formulario de ejecución del PROGRAMA

%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

matriz_valor [1] = 'int_var1'


matriz_valor [2] = 'var_bool'
matriz_valor [3] = 'var_real'
value_array [4] = '[*sistema*]$grupo[1].$termtype' value_array [5]
= 'int_var2'
matriz_valor [6] = 'din[1]'
matriz_valor [7] = 'din[1]' int_var1
= 12345
bool_var = CIERTO
real_var = 0
int_var2 = 1
dispositivo_stat = tp_panel
FORCE_SPMENU(dispositivo_stat, SPI_TPUSER2,1)
def_item = 1 -- comienza con el elemento de menú 1
DISCTRL_FORM('FORM', form3, value_array, inact_array,
change_array, kc_func_key, def_item, term_char, estado); FIN del formulario de
ejecución

10–44
Capítulo 11

MENSAJERÍA DE TOMA

Contenido

Capítulo 11 MENSAJES DE SOCKET .......................................................................... 11-1


11.1 VISIÓN GENERAL.................................................... ............................................. 11–2
11.2 REQUISITOS DEL SISTEMA.................................................... ..................... 11–2
11.2.1 Resumen.................................................... ................................................ 11–2
11.2.2 Requisitos de software.................................................... ......................... 11–2
11.2.3 Requisitos de hardware.................................................... ........................ 11–2
11.3 CONFIGURACIÓN DE LA OPCIÓN DE MENSAJERÍA SOCKET................................ 11-3
11.3.1 Resumen.................................................... ................................................ 11-3
11.3.2 Configuración de una etiqueta de servidor.................................................... .......................... 11-3
11.3.3 Configuración de una etiqueta de cliente.................................................... .......................... 11–6
11.4 MENSAJERÍA SOCKET Y KAREL.................................................... ....... 11–8
11.4.1 Resumen....................................................
................................................ 11–8
11.4.2 MSG_CONN(cadena, entero).................................................... .................. 11–8
11.4.3 MENSAJE_DISCO(cadena, entero).................................................... ................ 11–9
11.4.4 MENSAJE_PING(cadena, entero).................................................... ................... 11–9
11.4.5 Intercambio de datos durante una conexión de mensajería de socket..................... 11–10
11.5 RENDIMIENTO DE LA RED.................................................... ................ 11–10
11.5.1 Resumen....................................................
............................................................. 11–10
11.5.2 Pautas para una Buena Implementación.................................................... 11–10
11.6 EJEMPLOS DE PROGRAMACIÓN.................................................... ............... 11–11
11.6.1 .................................................... .................................................... ............ 11–11
11.6.2 Una aplicación de cliente KAREL.................................................... .................. 11–11
11.6.3 Una aplicación de servidor KAREL.................................................... ............... 11–13
11.6.4 Ejemplo de cliente de bucle invertido ANSI C.................................................... ........ 11–15

11-1
11. MENSAJERÍA DE TOMA MARRC75KR07091E Rev H

11.1 VISIÓN GENERAL

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.

11.2 REQUISITOS DEL SISTEMA

11.2.1 Visión general

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.

11.2.2 Requisitos de Software

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).

11.2.3 Requisitos de hardware

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

11.3 CONFIGURAR LA OPCIÓN DE MENSAJERÍA SOCKET

11.3.1 Visión general

Para utilizar Socket Messaging, debe configurar los siguientes parámetros de hardware y
software de red:

• en el servidor,

— El puerto que desea utilizar para la mensajería de socket

• en el cliente,
— La dirección IP o el nombre de su servidor

— El puerto en el servidor que desea utilizar para la mensajería de socket.

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.

11.3.2 Configuración de una etiqueta de servidor

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.

Procedimiento 11-1 Configuración de una etiqueta de servidor

Condiciones

• La etiqueta que desea configurar no está configurada para ser utilizada por otro dispositivo en su red.

Pasos

1.Arranque en frío el controlador.

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.

C. Suelte todas las teclas.

11-3
11. MENSAJERÍA DE TOMA MARRC75KR07091E Rev H

2.En el colgante de programación, presione MENÚ.

3.Seleccione CONFIGURACIÓN.

4.Presione F1, [TIPO].


5.Seleccione Host Comm.

6.Presione F4, [MOSTRAR].

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 **********

9.Mueva el cursor al nombre del protocolo y presione F4, [CHOICE].

10Seleccione SM.

11Mueva el cursor a Estado de inicio y presione F4, [CHOICE].


12Seleccione COMENZAR.

13Presione F2, [ACCIÓN].

14Seleccione DEFINIR.

15.Presione F2, [ACCIÓN].

dieciséis.Seleccione COMENZAR.

17Establezca la variable del sistema:

una. Pulse MENÚ.

b. Seleccione SIGUIENTE.

C. Seleccione SISTEMA y presione F1, [TIPO].

d. Seleccione Variables.

11–4
MARRC75KR07091E Rev H 11. MENSAJERÍA DE TOMA

mi. Mueva el cursor a $HOSTS_CFG y presione ENTER.


F. Mueva el cursor a la estructura correspondiente a la etiqueta seleccionada enPaso 8. Por ejemplo, si
está configurando la etiqueta S3, mueva el elemento de estructura del cursor [3], como se muestra en
la siguiente pantalla.

Variables del SISTEMA


$HOSTS_CFG
1 [1] HOST_CFG_T
2 [2] HOST_CFG_T
3 [3] HOST_CFG_T
4 [4] HOST_CFG_T
5 [5] HOST_CFG_T
6 [6] HOST_CFG_T
7 [7] HOST_CFG_T
8 [8] HOST_CFG_T

gramo. Presione ENTRAR. Verá una pantalla similar a la siguiente.

Variables del SISTEMA


$HOSTS_CFG[3]
1 $COMENTARIO *unidad*
2 $PROTOCOLO 'SM'
3 $PORT *unidad*
4 $OPER 3
5 $ESTADO 3
6 $MODO *unidad*
7 $REMOTO *unidad*
8 $REPRODUCCIONES FALSO
9 $TIEMPO DE ESPERA 15
10 $RUTA *unidad*
11 $STRT_PATH *unidad*
12 $STRT_REMOTO *unidad*
13 $NOMBRE DE USUARIO *unidad*
14 $PWRD_TIMOUT 0
15 $SERVIDOR_PUERTO 0

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

11.3.3 Configuración de una etiqueta de cliente

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.

Procedimiento 11-2 Configuración de una ClientTag

Condiciones

• La etiqueta que desea configurar no está configurada para ser utilizada por otro dispositivo en su red.

Pasos

1.Arranque en frío el controlador.

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.

C. Suelte todas las teclas.


2.En el colgante de programación, presione MENÚ.

3.Seleccione CONFIGURACIÓN.

4.Presione F1, [TIPO].


5.Seleccione Host Comm.

6.Presione F4, [MOSTRAR].

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 **********

9.Mueva el cursor al elemento Nombre del protocolo y presione F4, [CHOICE].

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.

14Presione F2, [ACCIÓN] y seleccione DEFINIR.

15.Establezca la variable del sistema:

una. Pulse MENÚ.

b. Seleccione SIGUIENTE.

C. Seleccione SISTEMA y presione F1, [TIPO].

d. Seleccione Variables.

mi. Mueva el cursor a $HOSTC_CFG y presione ENTER.


F. Mueva el cursor a la estructura correspondiente a la etiqueta seleccionada enPaso 8. Por ejemplo, si
está configurando la etiqueta C3, mueva el elemento de estructura del cursor [3], como se muestra en
la siguiente pantalla.

Variables del SISTEMA


$HOSTC_CFG
1 [1] HOST_CFG_T
2 [2] HOST_CFG_T
3 [3] HOST_CFG_T
4 [4] HOST_CFG_T
5 [5] HOST_CFG_T
6 [6] HOST_CFG_T
7 [7] HOST_CFG_T
8 [8] HOST_CFG_T

gramo. Presione ENTRAR. Verá una pantalla similar a la siguiente.

11–7
11. MENSAJERÍA DE TOMA MARRC75KR07091E Rev H

Variables del SISTEMA


$HOSTC_CFG[3]
1 $COMENTARIO *unidad*
2 $PROTOCOLO 'SM'
3 $PORT *unidad*
4 $OPER 3
5 $ESTADO 3
6 $MODO *unidad*
7 $REMOTO *unidad*
8 $REPRODUCCIONES FALSO
9 $TIEMPO DE ESPERA 15
10 $RUTA *unidad*
11 $STRT_PATH *unidad*
12 $STRT_REMOTO *unidad*
13 $NOMBRE DE USUARIO *unidad*
14 $PWRD_TIMOUT 0
15 $SERVIDOR_PUERTO 0

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.

11.4 SOCKET MENSAJERÍA Y KAREL

11.4.1 Visión general

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).

11.4.2 MSG_CONN(cadena, entero)

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.

11.4.3 MENSAJE_DISCO(cadena, entero)

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.

11.4.4 MENSAJE_PING(cadena, entero)

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

11.4.5 Intercambio de datos durante una conexión de mensajería de socket

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

Referirse aManual de referencia de KARELpara detalles.

11.5 RENDIMIENTO DE LA RED

11.5.1 Visión general

El rendimiento de la mensajería de socket en su red variará según la cantidad de dispositivos conectados a la


red, la cantidad de aplicaciones que se ejecutan en el controlador, la configuración del cableado de la red y la
cantidad desaltosque tendrá que realizar el mensaje para llegar a su dispositivo de destino.

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.

11.5.2 Pautas para una Buena Implementación

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 la tasa de datos no inunda el lado remoto.


• Debe comprender que hay otros nodos en la red Ethernet, por lo que no se puede garantizar el
rendimiento.

• 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 EJEMPLOS DE PROGRAMACIÓN

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.

11.6.2 Una aplicación de cliente de KAREL

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.

Una aplicación de cliente de 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

-- Rochester Colinas, MI 48309


--
-- Historial de modificaciones:
--
--------------------------------------------------------------------------------------
PROGRAM loopcl
%TAMAÑO DE APILAMIENTO = 4000
%NOLOCKGROUP
%NOPAUSE=ERROR+COMMAND+TPENABLE
%ENTORNO uif
%AMBIENTE definición del sistema

%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

tmp_str = '0123456789012345' WRITE


file_var(tmp_str::10) WRITE('Escribió
126 Bytes',cr) IF estado <> 0
ENTONCES
ESCRIBIR('Bucle Prueba falla', cr)
bucle1 = FALSO
tmp_int = 100
MÁS
Escribe Lee 126 bytes',cr)
READ file_var(tmp_str::10) estado =
IO_STATUS(file_var) WRITE('Read Status
',status,cr) ENDIF

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

11.6.3 Una aplicación de servidor KAREL

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.

Aplicación de servidor 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

-- FANUC Corporación América


-- FANUC LTD Japón
-- Karel es una marca registrada de FANUC
-- America Corporation
-- +
-- Programa: tcpserv3.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 de
-- servidor Karel.
--
-- Autores: FANUC America Corporation
-- 3900 West Hamlin
-- Rochester Colinas, MI 48309
--
-- Historial de modificaciones:
--
-------------------------------------------------------------------------------------
PROGRAMA tcpserv3
%TAMAÑO DE APILAMIENTO = 4000
%NOLOCKGROUP
%NOPAUSE=ERROR+COMMAND+TPENABLE
%ENTORNO uif
%AMBIENTE definición del sistema

%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

11.6.4 Ejemplo de cliente de bucle invertido ANSI C

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

Ejemplo de cliente de loopback basado en ANSI C UNIX

/* Ejemplo de programación de socket estándar BSD - UNIX */


# incluir <stdio.h>
# incluir <sys/tipos.h>
# incluir <sys/socket.h>
# incluir <netinet/in.h>
# incluir <arpa/inet.h>
# definir SERV_TCP_PORT 59002
# definir SERV_HOST_ADDR "199.5.148.56"
# definir MAXLINE 512
int escrito(int fd, char *ptr, int nbytes); int readline(int fd,
char *ptr, int maxlen); vacío
str_cli(int calcetínfd);
carbonizarse * pnombre;
int main(int argc, char *argv[]) {

calcetín int;
estructura sockaddr_in serv_addr;

pnombre = argv[0];

bzero((char *) &serv_addr, sizeof(serv_addr));


serv_addr.sin_familia = AF_INET;
serv_addr.sin_addr.s_addr = inet_addr(SERV_HOST_ADDR);
serv_addr.sin_port = htons(SERV_TCP_PORT);

if((sockfd = socket(AF_INET, SOCK_STREAM,0)) < 0){


printf("Cliente: No se puede abrir el socket de transmisión\n");
}

printf("Cliente: Conectando...\n");

if(connect(sockfd,(struct sockaddr *) &serv_addr, sizeof(serv_addr))<0){


printf("Cliente: No se puede conectar al servidor\n");
}
más{
str_cli(sockfd);
}
salir(0);
}

vacío str_cli (int sockfd) {

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

para(n = 0; n < maxlen; n++){


si((rc = leer(fd, &c, 1)) == 1){
*ptr++ = c;
si(c=='\n'){
descanso;
}
si no (rc== 0) {
si(n== 0) {
devolver (0);
}
más{
descanso;
}
}
}
más{
devolver (-1);
}
}
*ptr = 0;
devolver (norte);
}
int escrito(int fd, char *ptr, int nbytes) {

int nizquierda, nescrito;


nizquierda = nbytes;
while(nleft > 0) {
nescrito = escribir(fd, ptr, nleft); si (escrito <=
0) {
volver (escrito);
}
nizquierda -= nescrito;

11-17
11. MENSAJERÍA DE TOMA MARRC75KR07091E Rev H

ptr += nescrito;
}
retorno(nbytes - nizquierda); }

11–18
Capítulo 12

TRANSFERENCIA DE DATOS ENTRE ROBOTS A


TRAVÉS DE ETHERNET (DTBR)

Contenido

Capítulo 12 TRANSFERENCIA DE DATOS ENTRE ROBOTS A TRAVÉS DE ETHERNET


(DTBR).................................................... .................................................... 12-1
12.1 VISIÓN GENERAL.................................................... .......................................................... 12–2
12.2 TERMINOLOGÍA.................................................... ........................................ 12–2
12.3 CONFIGURACIÓN.................................................... .................................................... ... 12–3
12.4 CONFIGURACIÓN DE TCP/IP PARA ROBOGUIDE.................................................... ............ 12–4
12.5 PROGRAMAS DE TRANSFERENCIA DE DATOS ESTÁNDAR.......................................................... 12–5
12.5.1 RGETNREG: Programa para Obtener Registro Numérico............................................. 12–6
12.5.2 RSETNREG: Programa para Establecer Registro Numérico.......................................... 12–7
12.5.3 RGETPREG: Programa para Obtener Registro de Posición............................................. 12–8
12.5.4 RSETPREG: Programa para establecer el registro de posición........................................ 12–10
12.6 RECUPERACIÓN DE ERRORES.................................................... ............................... 12–11
12.7 EMPOTRADOS KAREL.................................................... .................................... 12–13
12.8 TIEMPO FUERA Y REINTENTO.................................................... .......................... 12–14
12.9 LIMITACIONES.................................................... .......................................... 12–14
12.10 RESOLUCIÓN DE PROBLEMAS.................................................... ............................. 12–16

12-1
12. TRANSFERENCIA DE DATOS ENTRE ROBOTS A TRAVÉS DE ETHERNET (DTBR) MARRC75KR07091E Rev
H

12.1 VISIÓN GENERAL

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.

Figura 12–1. Transferencia de datos entre robots a través de Ethernet

convocatoria de programa

para obtener registro

R[ ]

R[ ]
convocatoria de programa

para establecer el registro

ethernet
Controlador A Controlador B

Se pide J740. No se pide J740.

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

Ethernet mediante TCP/IP.

Procedimiento 12-1 Configuración de TCP/IP

1.Pulse MENÚ.
2.Seleccione CONFIGURACIÓN.

3.Seleccione Host Comm.

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.

5.Ciclo de potencia del controlador.

NotaConsulte Configuración de TCP/IP en elManual de operaciones y configuración de opciones de Internetpara más


información.

NotaNo utilice guiones bajos (“_”) en el nombre del host.

12–3
12. TRANSFERENCIA DE DATOS ENTRE ROBOTS A TRAVÉS DE ETHERNET (DTBR) MARRC75KR07091E Rev
H

Figura 12–2. Configuración a través de Ethernet

ethernet

Anfitrión Anfitrión

“RC1” “RC2”

12.4 CONFIGURACIÓN DE TCP/IP PARA ROBOGUIDE

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)

Figura 12–3. Configuración de TCP/IP para ROBOGUIDE

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.

12.5 PROGRAMAS ESTÁNDAR DE TRANSFERENCIA DE DATOS

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

Tabla 12–1. Lista de programas para transferir registros y registros de posición

Programa Función Sintaxis

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 tipo de argumento (entero, cadena, etc.) es incorrecto.

• El número de argumentos es menor de lo esperado.

• 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.

12.5.1 RGETNREG: Programa para Obtener Registro Numérico

Nombre del programa:RGETNREG

Visión general:

El controlador del cliente obtiene el registro del servidor y lo establece en el registro del cliente.

Sintaxis:

RGETNREG (nombre_host, src_idx, dest_idx, opción)

Parámetros de entrada/salida

El primer parámetro: [IN] Cadena de nombre de host o dirección IP del servidor.

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)

Tabla 12–2. Valores paramétricos

Valor Descripción

0 Se recibe valor y comentario.

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)".

Si R [dest_idx] no está en el cliente, se publica "VARS-024 Variable incorrecta o índice de registro".

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)

12.5.2 RSETNREG: Programa para Establecer Registro Numérico

Nombre del programa:RSETNREG

Visión general:

El controlador del cliente establece el registro del servidor desde el registro del cliente.

Sintaxis:

RSETNREG (nombre_host, dest_idx, src_idx, opción)

Parámetros de entrada/salida

El primer parámetro: [IN] Cadena de nombre de host o dirección IP del servidor.

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

Cuadro 12-3. Valores paramétricos

Valor Descripción

0 Se establecen el valor y el comentario.

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)".

Si R [src_idx] no está en el cliente, se publica "VARS-024 Variable incorrecta o índice de registro".

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)

12.5.3 RGETPREG: Programa para Obtener Registro de Posición

Nombre del programa:RGETPREG

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:

RGETPREG (nombre_host, src_idx, src_grp, dest_idx, dest_grp, opción)

Parámetros de entrada/salida

El primer parámetro: [IN] Cadena de nombre de host o dirección IP del servidor.

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

Cuadro 12–4. Valores paramétricos

Valor Descripción

0 Se recibe valor y comentario.

1 Se recibe valor.

Detalles

Si el contenido del segundo al quinto parámetro es incorrecto, se publican los siguientes errores.

Cuadro 12-5. Posibles 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

• Tipo de eje (rotativo o lineal)

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

12.5.4 RSETPREG: Programa para establecer el registro de posición

Nombre del programa:RSETPREG

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:

RSETPREG (nombre_host, dest_idx, dest_grp, src_idx, src_grp, opción)

Parámetros de entrada/salida

El primer parámetro: [IN] Cadena de nombre de host o dirección IP del servidor.

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

Cuadro 12–6. Valores paramétricos

Valor Descripción

0 Se establecen los datos de posición y el comentario.

1 Se establecen los datos de posición.

Detalle:

Si el contenido de los parámetros 2 a 5 es incorrecto, se publican los siguientes errores.

Cuadro 12–7. Posibles errores

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)

Cuadro 12-7. Posibles errores (continuación)

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

• Tipo de eje (rotativo o lineal)

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)

12.6 ERROR DE RECUPERACIÓN

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

Figura 12–4. Error de recuperación

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.

Figura 12–5. Recuperación de errores 2

12–12
MARRC75KR07091E Rev H 12. DATOS
TRANSFERENCIA ENTRE ROBOTS POR ETHERNET (DTBR)

12.7 EMPOTRADOS KAREL

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 de envío y recepción.

• Registro de posición de envío y recepción

• Envío y recepción de registro de cadena

• Lectura y escritura del valor de E/S

• Lectura del estado de simulación de E/S

• Simulación y dessimulación de E/S

• Lectura y escritura del comentario de los siguientes datos

- 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.

Cuadro 12–8. Rutinas incorporadas de DTBR KAREL

Incorporado Descripción

RGET_PORTCMT Obtiene comentario de E/S

RGET_PORTSIM Obtiene el estado de simulación de E/S

RGET_PORTVAL Obtiene el valor de E/S

RGET_PREGCMT Obtiene el comentario del registro de posición

RGET_REG se registra

RGET_REG_CMT Obtiene comentario de registro

RGET_SREGCMT Obtiene el comentario del registro de cadena

RGET_STR_REG Obtiene registro de cadena

RNREG_RECV Transfiere el registro del servidor al registro del cliente

RNREG_SEND Transfiere el registro del cliente al registro del servidor

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

Cuadro 12–8. Rutinas incorporadas de DTBR KAREL (continuación)

Incorporado Descripción

RPREG_SEND Transfiere el registro de posición del cliente al registro de posición del servidor.

RSET_INT_REG Establece INTEGER para registrarse

RSET_PORTCMT Establece el comentario de E/S

RSET_PORTSIM Simula E/S

RSET_PORTVAL Establece el valor de E/S

RSET_PREGMT Establece el comentario del registro de posición

RSET_REALREG Establece el valor REAL para registrar

RSET_REG_CMT Establece comentario de registro

RSET_SREGCMT Establece el comentario del registro de cadena

RSET_STR_REG Establece registro de cadena

12.8 TIEMPO FUERA Y REINTENTAR

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

• No se garantiza el rendimiento de la comunicación. Depende del tráfico de red y de la carga de la


CPU del controlador.

• 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 solicitud de múltiples tareas (programas) no provoca la ejecución paralela de la transferencia de datos. En


realidad, se procesan secuencialmente.

• 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.

• Un controlador de robot no puede enviarse solicitudes a sí mismo mediante esta función.

• 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:

— Si el robot puede tener datos cartesianos o no.


— Límite del eje

— Configuración de posición disponible y rango de número de giro.

— 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.

B) La ejecución cíclica aumenta la carga de la red y la CPU del controlador. Debe


evitarse la ejecución consecutiva o cíclica de la transferencia de datos.

C) Precaución de la transferencia del registro de posición El contenido del registro de posición


depende del tipo de robot y la configuración de la posición. Tenga cuidado al utilizar registros de
posición transferidos. Especialmente, debe tener mucho cuidado cuando utilice registros de
posición transferidos como punto de destino de la declaración de movimiento. Los robots
servidor y cliente no siempre son robots del mismo tipo. La interpretación de los registros de
posición depende de la herramienta y el marco de usuario actualmente seleccionados.

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

12.10 SOLUCIÓN DE PROBLEMAS

Se publica "DTBR-002 RPC Call timed out"

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.

La modificación de los argumentos del programa no se refleja después de reanudar

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.

La comunicación toma tiempo o la velocidad es inestable.

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.

Se publica "INTP-320 (nombre del programa, número de línea) Integrado indefinido".

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.

El tiempo de espera no sucede. El programa sigue funcionando.

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.

1. El cable Ethernet no está enchufado correctamente.

2. Programa estándar de transferencia de datos, se llama a RGETNREG pero el usuario canceló el programa inmediatamente
mediante el menú FCTN.

3. Vuelva a ejecutar el mismo programa y se llamará inmediatamente a RGETNREG.

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.

El error de tiempo de espera ocurre justo después de reanudar el programa.

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,

se publica un error de tiempo de espera en la reanudación.

12–16
MARRC75KR07091E Rev H 12. DATOS
TRANSFERENCIA ENTRE ROBOTS POR ETHERNET (DTBR)

El valor del eje de la posición conjunta de PR[ ] no se transfiere correctamente.

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.

1 Confirme que los datos de origen están inicializados

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.

Se publica "VARS-037 El registro de posición está bloqueado".

Compruebe si el registro de posición está bloqueado en el servidor o el cliente.

Se publica "HRTL-047 Familia de direcciones no admitida".

Compruebe si el host especificado es el propio cliente. El cliente no puede operar los datos del propio cliente mediante
esta función.

Los datos se envían a/reciben de un controlador diferente al especificado.

Si no apagó y encendió después de cambiar la dirección IP y el nombre de host, apague y encienda. Si el


nombre de host incluye un guión bajo, no lo use.

Se publica "HRTL-049 No se puede asignar la dirección solicitada".

Se publica "HOST-108 Dirección de Internet no encontrada".

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

VARIABLES DEL SISTEMA

Contenido

Capítulo 13 VARIABLES DEL SISTEMA .................................................... .......................... 13-1


13.1 DERECHOS DE ACCESO.................................................... .................................... 13–2
13.2 ALMACENAMIENTO.................................................... ............................................................. 13–3

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.

Las variables del sistema tienen las siguientes características:

• 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

13.1 DERECHOS DE ACCESO

Las siguientes reglas se aplican a las variables del sistema:

• 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.

Cuadro 13–1. Derechos de acceso para variables del sistema

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

MARRC75KR07091E Rev H 13. VARIABLES DEL SISTEMA

Ver también:Manual de referencia del programapara variables del sistema

13.2 ALMACENAMIENTO

A las variables del sistema se les asigna un valor inicial al momento del encendido basado en

• Valores predeterminados internos

• Valores almacenados en el archivo de variables del sistema predeterminado, SYSDEF.SV

13–3
capitulo 14
LENGUAJE DE COMANDOS KAREL (KCL)

Contenido

Capítulo 14 LENGUAJE DE COMANDOS KAREL (KCL) ................................................. 14-1


14.1 FORMATO DE COMANDOS.................................................... ............................... 14–2
14.1.1 Programa predeterminado.................................................... ..................................... 14–2
14.1.2 Variables y tipos de datos....................................................
....................... 14–3
14.2 COMANDOS DE CONTROL DEL PROGRAMA.................................................... ....... 14–3
14.3 INTRODUCCIÓN DE COMANDOS.................................................... ........................ 14–3
14.3.1 Abreviaturas.................................................... ........................................ 14–4
14.3.2 Mensajes de error.................................................... ...................................... 14–4
14.3.3 Subdirectorios.................................................... ............................................. 14–4
14.4 PROCEDIMIENTOS DE MANDO.................................................... ..................... 14–4
14.4.1 Formato de procedimiento de comando.................................................... .................. 14–5
14.4.2 Creación de procedimientos de comando.................................................... ............. 14–6
14.4.3 Procesamiento de errores.................................................... ..................................... 14–6
14.4.4 Ejecución de procedimientos de comando.................................................... .......... 14–6

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.

El entorno KCL se puede mostrar en CRT/KB presionando MENÚS (F10) y seleccionando


KCL en el menú.

Además de ingresar comandos directamente en el indicador de KCL, los comandos de KCL se pueden ejecutar desde
archivos de comandos.

14.1 FORMATO DE COMANDO

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.

Ver también:Capitulo 2ELEMENTOS DEL LENGUAJE,yCapítulo 9SISTEMA DE ARCHIVOS,

14.1.1 Programa preestablecido

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:

• Usando el comando SET DEFAULT KCL


• Selección de un nombre de programa en el menú SELECCIONAR en el CRT/KB

14–2
MARRC75KR07091E Rev H 14. LENGUAJE DE COMANDOS KAREL (KCL)

14.1.2 Variables y tipos de datos

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”

14.2 COMANDOS DE CONTROL DE PROGRAMA

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.

Comandos de control del programa:

• Puede causar inmediatamente el movimiento del robot y/o del eje auxiliar, o tiene el potencial de causar movimiento

• Solo se puede ejecutar si se cumplen una serie de condiciones.

Los siguientes comandos son comandos de control de programa:

• 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 INTRODUCCIÓN DE COMANDOS

Puede ingresar comandos KCL solo desde CRT/KB.

Para ingresar comandos KCL:

14–3
14. LENGUAJE DE COMANDOS KAREL (KCL) MARRC75KR07091E Rev H

1. Presione MENÚ (F10) en CRT/KB.


2. Seleccione KCL.

3. Ingrese los comandos en el indicador de KCL.

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.

Por ejemplo, entrarELIMINARen el indicador de KCL se mostrará la siguiente lista de posibles


comandos: "ARCHIVO, NODO o VARIABLE".

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.

14.3.2 Error de mensajes

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.

14.4 PROCEDIMIENTOS DE MANDO

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.

• Los procedimientos de comando se ejecutan mediante el comando RUNCF.

14–4
MARRC75KR07091E Rev H 14. LENGUAJE DE COMANDOS KAREL (KCL)

14.4.1 Formato de procedimiento de comando

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.

Confirmación en un procedimiento de comando


Ingrese el comando y la confirmación en una línea:
BORRAR TODO SI

Procedimientos de comando de anidamiento

Use las siguientes pautas al anidar procedimientos de comando:

• Los procedimientos de comando se pueden anidar usando %INCLUDE filename dentro de un procedimiento de comando.

• El anidamiento de procedimientos de comando está restringido a cuatro niveles.

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.

Ver también:Sección 14.4.3, “Procesamiento de errores”

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:

• Preceda a los comentarios con dos guiones consecutivos (–).

• 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

14.4.2 Creación de procedimientos de comando

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.

Ver también:EDITAR comandos KCL,Apéndice C, “Descripción alfabética del comando KCL”

14.4.3 Procesamiento de errores

Si el sistema detecta un error de KCL mientras se ejecuta un procedimiento de comando, el sistema


maneja el error de una de dos maneras, según el valor de la variable del sistema $STOP_ON_ERR:

• Si $STOP_ON_ERR es VERDADERO cuando se detecta un error de KCL, el procedimiento de comando


finaliza y regresa el indicador KCL>.

• Si $STOP_ON_ERR es FALSO, el sistema ignora los errores de KCL y el procedimiento de comando se ejecuta
hasta completarse.

14.4.4 Ejecución de procedimientos de comando

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.

Los procedimientos de comando se pueden ejecutar mediante el comando KCL RUNCF.

14–6
Capítulo 15

SISTEMA DE ENTRADA/SALIDA

Contenido

Capítulo 15 SISTEMA DE ENTRADA/SALIDA ...................................................................... 15–1


15.1 SEÑALES DEFINIDAS POR EL USUARIO.................................................... ...................... 15–2
15.1.1 Señales DIN y DOUT.................................................... .......................... 15–2
15.1.2 Señales GIN y GOUT.................................................... .......................... 15–3
15.1.3 Señales AIN y AOUT.................................................... .......................... 15–3
15.1.4 Señales manuales.................................................... .......................................... 15–5
15.2 SEÑALES DEFINIDAS POR EL SISTEMA.................................................... .................. 15–5
15.2.1 Señales digitales de entrada y salida del robot (RDI/RDO).................................... 15–6
15.2.2 Señales de entrada y salida del panel del operador (OPIN/OPOUT)........................ 15–6
15.2.3 Señales de entrada y salida del Teach Pendant (TPIN/TPOUT)........................ 15–15
15.3 ENTRADA/SALIDA SERIE.................................................... ....................... 15–20
15.3.1 Entrada/salida serie.................................................... ............................... 15–20

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.

15.1 SEÑALES DEFINIDAS POR EL USUARIO

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:

• DIN (entrada digital) y DOUT (salida digital)

• GIN (entrada de grupo) y GOUT (salida de grupo)

• AIN (entrada analógica) y AOUT (salida analógica)

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.

15.1.1 Señales DIN y DOUT

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.

Para activar un DOUT:

DOUT[n] = VERDADERO o

15–2
MARRC75KR07091E Rev H 15. SISTEMA DE ENTRADA/SALIDA

SALIDA[n] = ENCENDIDO

Para apagar un DOUT:

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.

15.1.2 Señales GIN y GOUT

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.

15.1.3 Señales AIN y AOUT

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

En TPP, se usaría la siguiente lógica:

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]

R[2] tiene el voltaje deseado.

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.

15.1.4 Señales de mano

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.

HAND[1] usa las mismas salidas físicas que RDO[1] y RDO[2].

HAND[2] usa las mismas salidas físicas que RDO[3] y RDO[4].

Las siguientes declaraciones en lenguaje KAREL se proporcionan para controlar la señal, donde "n" es el
número de señal.

OPEN HAND n activa línea abierta y desactiva línea cerrada

CLOSE HAND n desactiva la línea abierta y activa la línea cerrada

RELAX HAND n desactiva ambas líneas

15.2 SEÑALES DEFINIDAS POR EL SISTEMA

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 digital de robot (RDI) y salida digital de robot (RDO)

• 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

15.2.1 Señales digitales de entrada y salida de robots (RDI/RDO)

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.

15.2.2 Señales de entrada y salida del panel del operador (OPIN/OPOUT)

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 primeras 16 señales, OPIN[0] - OPIN[15], se asignan al panel de operador estándar.

• 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 primeras 16 señales, OPOUT[0] - OPOUT[15], se asignan al panel de operador estándar.

• 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.

Señales de entrada y salida del panel del operador estándar

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

Cuadro 15–1. Señales de entrada estándar del panel del operador

OPINIÓN[n] Pecado] Función Descripción

OPINIÓN[0] SI[0] NO UTILIZADO -


OPINIÓN[1] SI[1] RESTABLECIMIENTO DE FALLAS Esta señal normalmente está apagada, lo que indica que no
se está presionando el botón FAULT RESET.

OPINA[2] SI[2] REMOTO Esta señal normalmente está APAGADA, lo que indica que el

controlador no está configurado como remoto.

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.

OPINIÓN[7] - OPINIÓN[15] SI[7], SI[10] - NO UTILIZADO -


SI[15]

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.

Cuadro 15–2. Señales de salida del panel del operador estándar

SALIDA[n] SOI[n] Función Descripción

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[6] SO[6] USUARIO LED#2 Esta señal es definible por el usuario.

SALIDA[7] SO[7] COLGANTE ENSEÑANZA Esta señal indica que la consola portátil está habilitada.
ACTIVADO

SALIDA[8] - SO[8] - SO[15] NO UTILIZADO -


SALIDA[15]

15–7
15. SISTEMA DE ENTRADA/SALIDA MARRC75KR07091E Rev H

Señales de entrada y salida del panel del operador del usuario

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

OPINIÓN[n] interfaz de usuario[n] E/S de proceso Función Descripción


Número

OPINIÓN[16] IU[1] 1 * IMTP * IMSTP es la señal de software de parada inmediata.


Siempre activo * IMSTP es una señal normalmente APAGADA que se mantiene ENCENDIDA y que, cuando se

establece en APAGADO,

• Pausa un programa si se está ejecutando.

• Desconecte la alimentación de los servos.

• Detenga inmediatamente el robot y aplique los frenos del


robot.

Código de error SRVO-037 *Entrada IMSTP (Grupo:i)


se mostrará cuando se pierda esta señal. Esta señal
siempre está activa.

Advertencia

* IMSTP es una entrada controlada por


software y no se puede utilizar con
fines de seguridad. Usar
* IMSTP con EMG1, EMG2 y EMGCOM
para usar esta señal con una parada
de emergencia del controlador de
hardware. Consulte el Manual de
mantenimiento, específico para su
modelo de robot, para obtener
información sobre la conexión de
EMG1, EMG2 y EMGCOM.

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[n] interfaz de usuario[n] E/S de proceso Función Descripción


Número

OPINIÓN[17] IU[2] 2 * MANTENER * HOLD es la señal de espera externa. *HOLD es una señal normalmente

Siempre activo APAGADA que se mantiene ENCENDIDA cuando se ajusta en APAGADO.

• Pausa la ejecución del programa.

• Cámara lenta a una parada controlada y espera.

• El freno en espera opcional apaga la alimentación del servo después

de que el robot se detiene.

OPINIÓN[18] IU[3] 3 * SFSPD * SFSPD es la señal de entrada de velocidad de seguridad. Esta señal

Siempre activo generalmente se conecta a la cerca de seguridad. * SFSPD es una señal

normalmente APAGADA que se mantiene ENCENDIDA y que cuando se APAGA

• Pausa la ejecución del programa.

• Reduzca el valor de anulación de velocidad al definido en una


variable del sistema. Este valor no se puede aumentar
mientras *SFSPD está desactivado.

• Muestra el mensaje de código de error MF-0004 Valla


abierta.

• No permitir una condición de inicio REMOTO. Las entradas de

inicio desde UOP o SOP están deshabilitadas cuando

* SFSPD está desactivado.

OPINIÓN[19] IU[4] 4 CSTOPI CSTOPI es la entrada de parada de ciclo. Cuando CSTOPI se


Siempre activo convierte en VERDADERO, la variable de sistema $CSTOP se
establece en VERDADERO. Además, si la variable del
sistema $SHELL_CONFIG.$shell_name no es VERDADERA o
no está inicializada en el encendido, CSTOPI funciona de la
siguiente manera, según la variable del sistema
$SHELL_CFG.$USE_ABORT.Si la variable del sistema
$SHELL_CFG.$USE_ABORT se establece en FALSO,la
entrada CSTOPI

• Borra la cola de programas a ejecutar que


fueron enviados por señales RSR.

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)

OPINIÓN[n] interfaz de usuario[n] E/S de proceso Función Descripción


Número

Advertencia

Cuando

$SHELL_CFG.USE_ABORT
es FALSO, CSTOPI no detiene
inmediatamente la ejecución
automática del programa.

• La ejecución automática se detendrá después de que el


programa actual haya terminado de ejecutarse.

Si la variable del sistema $SHELL_CFG.$USE_ABORT


se establece en TRUE, la entrada CSTOPI

• Borra la cola de programas a ejecutar que


fueron enviados por señales RSR.

• Cancela inmediatamente el programa que se está

ejecutando actualmente para los programas que fueron

enviados para ser ejecutados por RSR o PNS.

OPINIÓN[20] IU[5] 5 FALLO_RESET FAULT_RESET es la señal de restablecimiento de falla


Siempre activo externa. Cuando se recibe esta señal

• Se borra el estado de error.

• La alimentación del servo está activada.

• Un programa en pausano se reanudará.

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[n] interfaz de usuario[n] E/S de proceso Función Descripción


Número

OPINIÓN[21] IU[6] 6 COMIENZO START es la entrada de inicio remoto. El funcionamiento


Activo cuando el robot está de esta señal depende de la variable de sistema
en una condición remota $SHELL_CFG.$CONT_ONLY.Si la variable del sistema
(CMDENBL = ON) $SHELL_CFG.$CONT_ONLY se establece en FALSO,la
señal de entrada START

• Reanudar un programa en pausa.

• Si un programa no está en pausa, el programa


actualmente seleccionado comienza desde la posición del
cursor.

Si la variable del sistema $SHELL_CFG.


$CONT_ONLY se establece en TRUE, la señal de
entrada START

• Reanudar un programa en pausa solamente. La


entrada PROD_START debe utilizarse para iniciar un
programa desde el principio.

OPINIÓN[22] IU[7] 7 HOGAR HOME es la entrada de inicio. Cuando se recibe


Activo cuando el robot está esta señal, el robot se mueve a la posición inicial
en una condición remota definida.

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

está desactivada, se puede realizar el movimiento del robot. Cuando

ENBL está ENCENDIDO y el interruptor REMOTO en el panel del operador

está en la posición REMOTO, el robot está en una condición de operación

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[n] interfaz de usuario[n] E/S de proceso Función Descripción


Número

El número PNS se emite pulsando la señal SNO (salida del


número seleccionado) y la señal SNACK (reconocimiento
del número seleccionado). VerFigura 15–3.

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

SALIDA[n] UO[n] E/S de proceso Función Descripción


Número

SALIDA[16] UO[1] 1 CMDENBL CMDENBL es la salida de habilitación del


comando. Esta salida indica que el robot está en
una condición remota. Esta señal se enciende
cuando el interruptor REMOTE se enciende o
cuando se recibe la entrada ENBL. Esta salida
solo permanece encendida cuando el robot no
está en una condición de falla. VerFigura 15–2y
Figura 15–3.

SALIDA[17] UO[2] 2 SYSRDY SYSRDY es la salida lista del sistema. Esta


salida indica que los servos están activados.

SALIDA[18] UO[3] 3 PROGRAMA PROGRUN es la salida de ejecución del programa.

Esta salida se enciende cuando se está ejecutando

un programa. VerFigura 15–3.

SALIDA[19] UO[4] 4 EN PAUSA PAUSED es la salida del programa en pausa. Esta


salida se enciende cuando un programa está en
pausa.

SALIDA[20] UO[5] 5 RETENIDA HELD es la salida de retención. Esta salida se activa


cuando se ha presionado el botón SOP HOLD o
cuando la entrada UOP *HOLD está desactivada.

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[n] UO[n] E/S de proceso Función Descripción


Número

SALIDA[21] UO[6] 6 CULPA FAULT es la salida de error. Esta salida se


enciende cuando un programa está en una
condición de error.

SALIDA[22] UO[7] 7 PERCHA No soportado. Consulte la información específica de la


aplicación correspondiente.Manual de configuración y
operaciones, “Utilidad de posición de referencia”.

SALIDA[23] UO[8] 8 TPENBL TPENBL es la salida de habilitación de la consola

portátil. Esta salida se enciende cuando la botonera de

enseñanza está encendida.

SALIDA[24] UO[9] 9 BATALM BATALM es la salida de alarma de batería. Esta salida


se enciende cuando el voltaje de la batería de la RAM
CMOS cae por debajo de los 3,6 voltios.

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.

SALIDA[26] UNO[11]- UNO[18] 11- 18 ACK1/SNO1, RECONOCIMIENTO 1-8son las señales de


SALIDA[33] ACK2/SNO2, reconocimiento de salida 1 a 4. Estas señales se
ACK3/SNO3, encienden cuando se recibe la señal RSR
ACK4/SNO4, correspondiente. VerFigura 15–2SNO 1-8 son las
ACK5/SNO5, salidas de número de señal. Estas señales llevan la
ACK6/SNO6, representación de 8 bits del número de programa
ACK7/SNO7, seleccionado PNS correspondiente. Si el programa
ACK8/SNO8 no se puede representar con un número de 8 bits,
la señal se establece en ceros o se apaga. VerFigura
15–3.

SALIDA[34] UO[19] 19 BOCADILLO SNACK es la salida de reconocimiento del número


de señal. Esta salida es pulsada si el programa es
seleccionado por la entrada PNS. VerFigura 15–3
.
SALIDA[35] UO[20] 20 RESERVADO -
SALIDA[36] UO[21] 21 UNCAL (opción) UNCAL es la salida no calibrada. Esta salida se
enciende cuando el robot no está calibrado. El
robot no está calibrado cuando el controlador
pierde las señales de retroalimentación de uno
o todos los motores. Establezca $OPWORK.
$OPT_OUT = 1 para usar esta señal.

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)

SALIDA[n] UO[n] E/S de proceso Función Descripción


Número

SALIDA[37] UO[22] 22 UPENBL (opción) UPENBL es la salida de habilitación del panel de


usuario. Esta salida indica que el robot está en
una condición remota. Esta señal continúa cuando
el interruptor remoto se enciende o cuando se
recibe la entrada ENBL. Esta salida permanecerá
encendida incluso si el robot se encuentra en
una condición de falla.Establezca $OPWORK.
$OPT_OUT = 1 para usar esta señal.

SALIDA[38] UO[23] 23 BLOQUEADO (opción) -


SALIDA[39] UO[24] 24 CSTOPO (opción) CSTOPO es la salida de parada de ciclo. Esta
salida se enciende cuando se ha recibido la
entrada CSTOPI. Establezca $OPWORK.
$OPT_OUT = 1 para usar esta señal.

Figura 15–2. Diagrama de tiempo RSR

CMDENBL Condición remota


PRODUCCIÓ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

Figura 15–3. Diagrama de tiempo de PNS

CMDENBL Condición remota


PRODUCCIÓN

SNP 1 8 Se selecciona el número de programa


APORTE

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

El ancho de pulso se especifica en la

pantalla de configuración de PNS.

PROD_START
APORTE

PROGRAMA
PRODUCCIÓN El programa se ejecuta dentro de
los 32 ms desde PROD_START
flanco descendente.

15.2.3 Señales de entrada y salida del colgante de enseñanza (TPIN/TPOUT)

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.

Cuadro 15–5. Asignaciones de señal de entrada de Teach Pendant

TPIN[n] Enseñar llave colgante

PARADA DE EMERGENCIA Y HOMBRE PRESENTE

TPIN[250] PARADA DE EMERGENCIA


TPIN[249] Interruptor encendido / apagado

IPIN[247] Interruptor DEADMAN derecho

TPIN[248] Interruptor DEADMAN izquierdo

Teclas de flecha

15–15
15. SISTEMA DE ENTRADA/SALIDA MARRC75KR07091E Rev H

Cuadro 15–5. Asignaciones de señal de entrada de Teach Pendant (continuación)

TPIN[n] Enseñar llave colgante

TPIN[212] flecha arriba

TPIN[213] Flecha hacia abajo

IPIN[208] Flecha correcta

IPIN[209] Flecha izquierda

TPIN[0] Desplazamiento a la izquierda y/o a la

TPIN[204] derecha Desplazado Flecha hacia arriba

IPIN[205] Flecha hacia abajo desplazada

IPIN[206] Flecha hacia la derecha desplazada

IPIN[207] Flecha izquierda desplazada

Teclas del teclado (cambiadas o no cambiadas)

TPIN[13] INGRESAR

TPIN[8] ESPACIO TRASERO

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[136] ANTERIOR desplazado

TPIN[137] F1 desplazado

TPIN[138] F2 desplazado

TPIN[139] F3 desplazado

TPIN[140] F4 desplazado

TPIN[141] F5 desplazado

TPIN[142] Cambiado SIGUIENTE

Teclas de menú

15–16
MARRC75KR07091E Rev H 15. SISTEMA DE ENTRADA/SALIDA

Cuadro 15–5. Asignaciones de señal de entrada de Teach Pendant (continuación)

TPIN[n] Enseñar llave colgante

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 -%

TPIN[157] PASO desplazado

TPIN[158] MANTENER desplazado

TPIN[159] REINICIO desplazado

IPIN[227] DISP desplazado

IPIN[239] AYUDA cambiada

Teclas de función de usuario

TPIN[173] CLAVE DE USUARIO 1

TPIN[174] CLAVE DE USUARIO 2

TPIN[175] CLAVE DE USUARIO 3

TPIN[176] CLAVE DE USUARIO 4

TPIN[177] CLAVE DE USUARIO 5

TPIN[178] CLAVE DE USUARIO 6

TPIN[210] CLAVE DE USUARIO 7

TPIN[179] CLAVE DE USUARIO 1


TPIN[180] CLAVE DE USUARIO 2
TPIN[181] CLAVE DE USUARIO 3
TPIN[182] CLAVE DE USUARIO 4
TPIN[183] CLAVE DE USUARIO 5
TPIN[184] CLAVE DE USUARIO 6
TPIN[211] CLAVE DE USUARIO 7

Teclas de movimiento

15-17
15. SISTEMA DE ENTRADA/SALIDA MARRC75KR07091E Rev H

Cuadro 15–5. Asignaciones de señal de entrada de Teach Pendant (continuación)

TPIN[n] Enseñar llave colgante

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

IPIN[207] BWD desplazado

IPIN[202] COORDENADAS desplazadas

Teclas de movimiento continuación

TPIN[214] Desplazado +X

TPIN[215] Desplazado +Y

TPIN[216] Desplazado +Z

IPIN[217] Rotación desplazada +X


TPIN[218] Rotación +Y desplazada

TPIN[219] Rotación desplazada +Z

IPIN[12291] Desplazado +J7

IPIN[12295] Desplazado +J8

TPIN[220] Desplazado -X

TPIN[221] Desplazado -Y

TPIN[222] Desplazado -Z

IPIN[223] Rotación desplazada -X

TPIN[224] Rotación -Y desplazada


TPIN[225] Rotación desplazada -Z

IPIN[12293] Desplazado -J7

IPIN[12297] Desplazado -J8

iLlaves

15–18
MARRC75KR07091E Rev H 15. SISTEMA DE ENTRADA/SALIDA

Cuadro 15–5. Asignaciones de señal de entrada de Teach Pendant (continuación)

TPIN[n] Enseñar llave colgante

IPIN[12288] illave
IPIN[12298] iMENÚ, Menú superior
IPIN[12299] iSELECCIONAR, 4D Seleccionar mapa de

TPIN[12300] nodos iEDITAR, Registro de posición 4D i

IPIN[12301] DATOS, Mapa de nodos de edición 4D iFCTN,

IPIN[12302] vistas relacionadas iPASO

IPIN[12303]
IPIN[12304] iCOORDINADOR

IPIN[12305] iGRUPO
IPIN[12306] i+%
IPIN[12307] i-%
IPIN[12308] iflecha arriba
IPIN[12309] iFlecha hacia abajo

TPIN[12310] iFlecha correcta


TPIN[12311] iFlecha izquierda

IPIN[12312] iDISP, ventana de enfoque


TPIN[12313] iAYUDA
IPIN[12338] iCLAVE DE USUARIO 7, Pantalla 4D i

IPIN[12339] CLAVE DE USUARIO 6

TPIN[12340] iCLAVE DE USUARIO 5

TPIN[12341] iENTRAR, espacio

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

Hay tres señales de salida de Teach Pendant disponibles para su uso:

• TPOUT[6] - controla el LED de usuario n.º 1 del colgante de programación

15–19
15. SISTEMA DE ENTRADA/SALIDA MARRC75KR07091E Rev H

• TPOUT[7] - controla el LED de usuario n.º 2 del colgante de programación

• TPOUT[8] - controla el LED de usuario n.º 3 del colgante de programación

15.3 ENTRADA/SALIDA SERIE

15.3.1 Entrada/salida serie

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.

NotaP3: y P4: no están disponibles en el R-30iControlador B Mate.

Figura 15–4yFigura 15–5mostrar los puertos en cada controlador.

15–20
MARRC75KR07091E Rev H 15. SISTEMA DE ENTRADA/SALIDA

Figura 15–4. R-30iPuertos del controlador B

Placa de circuito impreso de la CPU principal

JRS16 RS-232-C (puerto 1)

JD17
RS-232-C (puerto 2)

JRS19 Tablero de circuito impreso del panel del operador

enseñar colgante

Figura 15–5. R-30iPuertos del controlador B Mate

Placa de circuito impreso de la CPU principal

JRS27 RS-232-C (puerto 1)

Tablero de circuito impreso del panel del operador

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.

NotaP3: y P4: no están disponibles en el R-30iControlador B Mate.

15–21
15. SISTEMA DE ENTRADA/SALIDA MARRC75KR07091E Rev H

Cuadro 15–6. Puertos P1 - P4

Puerto Nombre del elemento en pantalla tipo de puerto Usar Dispositivo por defecto

P2 JRS16 RS-232–C RS-232-C Cualquier dispositivo Consola de mantenimiento

P3 JD17 RS-232–C en la tarjeta CPU principal RS-232-C KCL


P4 JD17 en la tarjeta CPU principal. Este puerto se RS-422 Es inútil
muestra en el colgante de programación si

$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.

Cuadro 15–7. Configuración de comunicaciones predeterminada para dispositivos

Valor de tiempo de espera


Dispositivo Velocidad (baudios) Bit de paridad Bit de parada
(segundo)

Sensor* 4800 Extraño 1 bit 0


Anfitrión Com.* 4800 Extraño 1 bit 0
KCL/TRC 9600 Ninguna 1 bit 0
Consola de mantenimiento 9600 Ninguna 1 bit 0
Terminal de fábrica 9600 Ninguna 1 bit 0
Dispositivo de demostración TP 9600 Ninguna 1 bit 0
Es inútil 9600 Ninguna 1 bit 0
Puesto actual (para 9600 Ninguna 1 bit 0
utilizar con la opción
Posición actual)

Programador PMC 9600 Ninguna 2 bits 0


Módem/PPP Referirse aManual de operaciones y configuración de opciones de Internetpara obtener información sobre los módems

admitidos.

Dispositivo HMI 19200 Extraño 1 bit 0

* 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.

Después de conectar el hardware, configurar el puerto adecuado y conectar el puerto externo,


puede utilizar las sentencias OPEN FILE, READ y WRITE del lenguaje KAREL para comunicarse con
el dispositivo periférico.

15–22
MARRC75KR07091E Rev H 15. SISTEMA DE ENTRADA/SALIDA

Se admiten niveles más altos de protocolo de comunicación como característica opcional.

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:

• Un proceso de monitoreo de señales de entrada y configuración de señales de salida.

• Un proceso de generar y transmitir información de registro a un controlador de celda y recibir comandos u


otros datos de entrada de un controlador de celda.

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.

16.1 TERMINOLOGÍA MULTITAREA

En este capítulo se utilizan la siguiente terminología y expresiones.

• Tarea o tarea de usuario

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.

16.2 ASIGNACIÓN DE INTÉRPRETE

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.

Las siguientes son reglas para asignar una tarea a un intérprete:

• Si la tarea ya está asignada a un intérprete, utiliza el mismo intérprete.

• 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.

• Si no se puede hacer nada de lo anterior, la tarea no se puede iniciar.

16.3 CONTROL DE MOVIMIENTO

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:

• Cuando se inicia la tarea, si no se utiliza la directiva del controlador %NOLOCKGROUP. Si no se utiliza la


directiva %LOCKGROUP, la tarea requiere el control de todos los grupos de forma predeterminada. Si se
utiliza %LOCKGROUP, se requiere el control de los grupos especificados.

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.

A una tarea se le dará el control de los grupos requeridos, asumiendo:

• Ninguna otra tarea tiene el control del grupo.

• 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.

• No hay paradas de emergencia activas.

• Los servos están listos.

• La señal IMSTP de UOP no se afirma.

Una tarea se pausará si no puede obtener el control de los grupos requeridos.

Después de que una tarea obtiene el control de un grupo, lo mantiene hasta uno de los siguientes:

• La tarea finaliza (aborta).

• La tarea ejecuta el UNLOCK_GROUP incorporado.

• La tarea pasa el control de los grupos en un RUN_TASK integrado.

• 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.

16.4 PROGRAMACIÓN DE TAREAS

Una tarea que se está ejecutando actualmente (no abortada o en pausa) ejecutará declaraciones hasta que ocurra una de las
siguientes:

• Se produce una condición de retención.

• Un programa de mayor prioridad queda listo para ejecutarse.

• El intervalo de tiempo de la tarea caduca.

• El programa aborta o se detiene.

Los siguientes son ejemplos de condiciones de retención:

• Esperando a que se complete una operación de lectura.

• Esperando a que se complete un movimiento.

• Esperando a que se complete una instrucción WAIT, WAIT FOR o DELAY.

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.

16.4.1 Programación prioritaria

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.

La prioridad de una tarea se puede establecer de una de las siguientes maneras:

• De forma predeterminada, a cada tarea de usuario se le asigna una prioridad de 50.

• Los programas KAREL pueden contener la directiva traductora %PRIORITY.

• 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.

La siguiente tabla indica la prioridad de algunas otras funciones del sistema.

Cuadro 16–1. Tabla de prioridad de funciones del sistema

Prioridad Función del sistema Efecto de la función de retraso

-8 Máxima prioridad Nuevos movimientos retrasados.

-1 Planificador de movimiento Nuevos movimientos retrasados.

4 Jog TP Trotar desde Teach Pendant se retrasó.

54 Registrador de errores Se retrasó la actualización del registro de errores del sistema.

73 KCL Ejecución de comandos KCL retrasada.

82 administrador de CRT Retraso en el procesamiento de las teclas programables de CRT.

16–5
16. MULTITAREA MARRC75KR07091E Rev H

Cuadro 16–1. Tabla de prioridad de funciones del sistema (continuación)

Prioridad Función del sistema Efecto de la función de retraso

88 gerente de TP Retraso en la actividad del Teach Pendant general.

143 Prioridad más baja No retrasa nada de lo anterior.

16.4.2 Rebanada de tiempo

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.

16.5 TAREAS INICIALES

Hay varias maneras de comenzar una tarea.

• 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.

• Teach colgante shift-FWD tecla. Consulte la información específica de la aplicación correspondiente.Manual de


operaciones y configuración de FANUC America Corporation,Capítulo sobre "Probar un programa y ejecutar la
producción", 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:

• Si el valor binario de las señales PNS es cero.

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

16.5.2 Tareas secundarias

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.

16.6 CONTROL Y SEGUIMIENTO DE TAREAS

Hay tres entornos desde los que puede controlar y monitorear tareas:

16–7
16. MULTITAREA MARRC75KR07091E Rev H

1. Programas colgantes de enseñanza (TPP) -Sección 16.6.1

2. Programas KAREL -Sección 16.6.2


3. Comandos KCL -Sección 16.6.3

16.6.1 De los Programas TPP

La instrucción TPP RESUME_PROG se puede utilizar para continuar una tarea en PAUSA.

16.6.2 De los Programas KAREL

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.

• RUN_TASK ejecuta una tarea.

• CONT_TASK reanuda la ejecución de una tarea en PAUSA.

• PAUSE_TASK pausa una tarea.

• ABORT_TASK cancela una tarea.

• La acción del controlador de condiciones CONTINUAR provoca la ejecución de una tarea.

• 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.

16.6.3 Desde KCL

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.

• EJECUTAR <nombre_tarea> inicia o continúa una tarea.

• CONT <nombre_tarea> continúa una tarea.

• PAUSE <nombre_tarea> pausa una tarea.

• ABORT <nombre_tarea> aborta una tarea.

• SHOW TASK <task_name> muestra el estado de una tarea.

• MOSTRAR TAREAS muestra el estado de todas las tareas.

16–8
MARRC75KR07091E Rev H 16. MULTITAREA

16.7 USO DE SEMÁFOROS Y SINCRONIZACIÓN DE TAREAS

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:

• Borrar un semáforo(KAREL: CLEAR_SEMA incorporado): establece el recuento de semáforos en cero.

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.

• Publicar en un semáforo(KAREL: POST_SEMA incorporado): agrega uno al conteo de semáforos.

Si el recuento de semáforos es cero o mayor, cuando se emita el semáforo posterior, el recuento de


semáforos se incrementará en uno. La siguiente tarea que espera en el semáforo disminuirá el conteo
de semáforos y continuará con la ejecución. Referirse aFigura 16–1.

Si el recuento de semáforos es negativo, cuando se emita el semáforo posterior, el recuento de semáforos


se incrementará en uno. La tarea que ha estado esperando en el semáforo por más tiempo continuará su
ejecución. Referirse aFigura 16–1.

• Leer un semáforo(KAREL: SEMA_COUNT integrado): devuelve el recuento de semáforos actual.

• Espera un semáforo(KAREL: PEND_SEMA integrado, SIGNAL SEMAPHORE Acción):

Si el recuento de semáforos es mayor que cero cuando se emite el semáforo de espera, el


recuento de semáforos se reducirá y la tarea continuará ejecutándose. Referirse aFigura 16–1.

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

Figura 16–1. Sincronización de tareas mediante un semáforo

PAGS PAGS PAGS


D

B W

Tarea

A C W W

T0 T1 T2 T3 T4 T5 T6 T7 Tennesse

W - Semáforo de espera P ejecución de tareas T0 - recuento de semáforos = indeterminado


- Semáforo de publicación Tarea en espera T1 - recuento de semáforos = 0
C - Borrar semáforo T2 - recuento de semáforos = T3 - 1
recuento de semáforos = T4 - 2
recuento de semáforos = T5 - 1
recuento de semáforos = 0 T6 -
recuento de semáforos = 1 T7 -
recuento de semáforos = 0

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.

La tarea principal contendría el siguiente KAREL:

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)

La tarea del servidor contendría el siguiente código KAREL:

16–10
MARRC75KR07091E Rev H 16. MULTITAREA

Tarea del servidor

- - 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.

Ejemplo de programa de sincronización de tareas y semáforos -TAREA PRINCIPAL

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

CLEAR_SEMA (movimiento_ctrl) - - se asegura de que el semáforo sea cero antes de usarlo.


POST_SEMA (movimiento_ctrl) - - hace que motion_ctrl esté disponible inmediatamente
FIN init_lock
-----------------------------------------------------

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

estado : ENTERO - - El estado de la operación de GET_TSK_INFO


task_no : ENTERO - - Recibe el número de tarea actual para task_name
attr_out: ENTERO - - Recibe la salida TSK_STATUS
ficticio: STRING[2] - - No recibe ninguna información
EMPEZAR

GET_TSK_INFO (nombre_tarea, nº_tarea, TSK_STATUS, attr_out, dummy, status) SI (attr_out =


PG_ABORTED) ENTONCES
RETORNO (VERDADERO) - - Si se aborta la tarea, devuelve VERDADERO
TERMINARA SI

FALSO RETORNO) - - de lo contrario, la tarea no se aborta y regresa


FALSO
FIN is_tsk_done
EMPEZAR
movimiento_ctrl = 1 - - Semáforo para permitir el control de movimiento
init_lock - - Asegúrese de que esto se haga solo una vez
FORCE_SPMENU ( tp_panel, spi_tpuser, 1) - - Forzar el Teach Pendant
- - pantalla de usuario para ser visto
EJECUTAR_TAREA('tarea_a', 1, FALSO, FALSO, 1, estado) - - Ejecutar task_a
EJECUTAR_TAREA('tarea_b', 1, FALSO, FALSO, 1, estado) - - Ejecutar task_b
REPETIR
tsk_a_done = is_tsk_done ('tarea_a') tsk_b_done
= is_tsk_done ('tarea_b') retraso (100)

UNTIL (tsk_a_done y tsk_b_done) END main_task -- -- Repetir


y hasta que ambos task_a
task_b se cancelan

Ejemplo de programa de sincronización de tareas y semáforos -TAREA A

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

-- mover el robot y debe --


-- tener control --
-- --
-----------------------------------------------------
RUTINA run_home
VAR
time_out: BOOLEANO
EMPEZAR

PEND_SEMA(motion_ctrl,-1,time_out)-- bloquear motion_ctrl de otras tareas


- - evitar que otras tareas muevan el robot
BLOQUEO_GRUPO (1, estado)
SET_POS_REG(1, home_pos, estado)
do_move - - llamar al programa TP para moverse a la posición inicial
UNLOCK_GROUP (1, estado)
POST_SEMA(movimiento_ctrl) - - desbloquear motion_ctrl
- - permitir que otra tarea mueva el robot
FIN run_home
EMPEZAR
set_cursor (tpfunc, 1, 4, estado) escribe
tpfunc ('HOME', CR)
esperar TPIN[129]+ - - esperar a que se presione F1
corre a casa
FIN tarea_a

Ejemplo de programa de sincronización de tareas y semáforos -TAREA B

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

PEND_SEMA (motion_ctrl,-1,time_out) -- bloquear motion_ctrl desde otros


- - las tareas evitan que otras tareas
- - robot en movimiento
LOCK_GROUP (1, estado)
FOR i=1 to PATH_LEN(work_path) DO
move_pos = work_path[i] SET_POS_REG(1,
move_pos, estado)
do_move - - llamar al programa TP para moverse al nodo de ruta
ENDFOR
UNLOCK_GROUP (1, estado)
POST_SEMA(motion_ctrl) - - desbloquear motion_ctrl permitir
- - otra tarea para mover el robot
FIN do_work
EMPEZAR
set_cursor(tpfunc, 1, 10, estado) write
tpfunc('TRABAJO',CR)
esperar TPIN[131]+ - - esperar hasta que se presione F2
hacer trabajo

FIN tarea_b

16.8 USO DE COLAS PARA COMUNICACIONES DE TAREAS

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.

Las siguientes operaciones son compatibles con las colas:

• INIT_QUEUE inicializa una cola y la deja vacía.


• APPEND_QUEUE agrega un número entero a la lista de entradas en la cola.

• GET_QUEUE: lee la entrada más antigua (superior) de la cola y la elimina.

Estos y otros integrados relacionados con las colas ( DELETE_QUEUE, INSERT_QUEUE, COPY_QUEUE)
se describen enApéndice A.

Un tipo de datos QUEUE_TYPE tiene un elemento accesible para el usuario,n_entradas.Este es el número de


entradas que se agregaron a la cola y no se leyeron. La matriz de enteros que se usa con una cola la usan los
integrados de la cola y el programa KAREL no debe hacer referencia a ella.

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

El solicitante contendría el siguiente código:

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)

La tarea del servidor contendría el siguiente código:

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

Apéndice A DESCRIPCIÓN ALFABÉTICA DEL IDIOMA KAREL ............................................... A-1


A.1 VISIÓN GENERAL.................................................... .................................................... ............. A–10
A.2 - A - DESCRIPCIÓN DEL IDIOMA KAREL.................................................... .................. A–18
A.2.1 ABORTAR Acción.................................................... .................................................... ....... A–18
A.2.2 ABORTAR Condición.................................................... .................................................... .. A–19
A.2.3 Declaración ABORTAR.................................................... .................................................... .. A–19
A.2.4 Procedimiento integrado ABORT_TASK.................................................... ............................ A–20
A.2.5 ABS función integrada.................................................... ............................................................. A–21
A.2.6 Función integrada ACOS.................................................... ............................................ A–21
A.2.7 Procedimiento integrado ACT_SCREEN.................................................... ............................ A-22
A.2.8 Procedimiento integrado ACT_TBL.................................................... ..................................... A–23
A.2.9 Procedimiento integrado ADD_BYNAMEPC.................................................... ....................... A–24
A.2.10 Procedimiento integrado ADD_DICT.................................................... .................................... A–26
A.2.11 Procedimiento integrado ADD_INTPC.................................................... ................................ A–27
A.2.12 Procedimiento integrado ADD_REALPC.................................................... ............................ A–28
A.2.13 Procedimiento integrado ADD_STRINGPC.................................................... ......................... A–29
A.2.14 %ALPHABETIZE Directiva de traductor.................................................... ...................... A–31
A.2.15 Procedimiento integrado APPEND_NODE.................................................... ......................... A–31
A.2.16 Procedimiento integrado APPEND_QUEUE.................................................... ....................... A–32
A.2.17 APROXIMACIÓN Función incorporada.................................................... .................................... A–33
A.2.18 ARRAY Tipo de datos.................................................... .................................................... .. A–33
A.2.19 Función integrada ARRAY_LEN.................................................... .................................. A–35
A.2.20 Función incorporada ASIN.................................................... ............................................. A–35
A.2.21 Acción de asignación.................................................... .................................................... A–36
A.2.22 Sentencia de asignación.................................................... ............................................. A–37
A.2.23 Función integrada ATAN2.................................................... .......................................... A–39
A.2.24 Declaración ADJUNTA.................................................... .................................................... A–40
A.2.25 Procedimiento integrado ATT_WINDOW_D.................................................... ........................ A–40

A-1
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

A.2.26 Procedimiento integrado ATT_WINDOW_S.................................................... ........................ A–41


A.2.27 Procedimiento integrado AVL_POS_NUM.................................................... .......................... A–42
A.3 - B - DESCRIPCIÓN DEL IDIOMA KAREL.................................................... .................. A–43
A.3.1 Tipo de datos BOOLEAN....................................................
.......................................................... A–43
A.3.2 Función integrada BYNAME.................................................... ............................................. A–44
A.3.3 Tipo de datos BYTE.................................................... .................................................... ..... A–45
A.3.4 Procedimiento integrado BYTES_AHEAD.................................................... .......................... A–46
A.3.5 Función integrada BYTES_LEFT.................................................... ................................ A–47
A.4 - C - DESCRIPCIÓN DEL IDIOMA KAREL.................................................... .................. A–48
A.4.1 Procedimiento integrado CALL_PROG.................................................... ............................... A–48
A.4.2 Procedimiento integrado CALL_PROGLIN.................................................... ......................... A–49
A.4.3 CANCELAR Acción.................................................... .................................................... ..... A–50
A.4.4 Declaración de CANCELAR.................................................... .................................................... A–50
A.4.5 Declaración de CANCELAR ARCHIVO.................................................... .......................................... A–51
A.4.6 Procedimiento integrado CHECK_DICT.................................................... ............................. A–52
A.4.7 Procedimiento integrado CHECK_EPOS.................................................... ............................ A–53
A.4.8 Procedimiento integrado CHECK_NAME.................................................... .......................... A–54
A.4.9 Función integrada CHR.................................................... ............................................................. A–54
A.4.10 Procedimiento integrado CLEAR.................................................... ............................................. A–55
A.4.11 Procedimiento integrado CLEAR_SEMA.................................................... ............................ A–56
A.4.12 Declaración de CERRAR ARCHIVO.................................................... ............................................ A–56
A.4.13 Declaración MANO CERRADA.................................................... .......................................... A–57
A.4.14 Procedimiento integrado CLOSE_TPE.................................................... ............................... A–57
A.4.15 Procedimiento integrado CLR_IO_STAT.................................................... ............................. A–58
A.4.16 Procedimiento integrado CLR_PORT_SIM.................................................... ......................... A–58
A.4.17 Procedimiento integrado CLR_POS_REG.................................................... .......................... A–59
A.4.18 Directiva de traductor %CMOSVARS.................................................... .......................... A–60
A.4.19 Directiva de traductor %CMOS2SHADOW.................................................... ................... A–60
A.4.20 Procedimiento integrado CNC_DYN_DISB.................................................... ......................... A–60
A.4.21 Procedimiento integrado CNC_DYN_DISE.................................................... ......................... A–61
A.4.22 Procedimiento integrado CNC_DYN_DISI.................................................... .......................... A–62
A.4.23 Procedimiento integrado CNC_DYN_DISP.................................................... ......................... A–63
A.4.24 Procedimiento integrado CNC_DYN_DISR.................................................... ......................... A–63
A.4.25 Procedimiento integrado CNC_DYN_DISS.................................................... ......................... A–64
A.4.26 Procedimiento integrado CNCL_STP_MTN.................................................... ........................ A–65
A.4.27 Procedimiento integrado CNV_CNF_STRG.................................................... .......................... A–65
A.4.28 Procedimiento integrado CNV_CONF_STR.................................................... ........................ A–66
A.4.29 Procedimiento integrado CNV_INT_STR.................................................... ............................ A–67
A.4.30 Procedimiento integrado CNV_JPOS_REL.................................................... ......................... A–68
A.4.31 Procedimiento integrado CNV_REAL_STR.................................................... ........................ A–68
A.4.32 Procedimiento integrado CNV_REL_JPOS.................................................... ......................... A–69
A.4.33 Procedimiento integrado CNV_STR_CONF.................................................... ........................ A–70
A.4.34 Procedimiento integrado CNV_STR_INT.................................................... ............................ A–71
A.4.35 Procedimiento integrado CNV_STR_REAL.................................................... ........................ A–72
A.4.36 Procedimiento integrado CNV_STR_TIME.................................................... ......................... A–72
A.4.37 Procedimiento integrado CNV_TIME_STR.................................................... ......................... A–73
A.4.38 %COMENTARIO Traductor Directiva.................................................... ............................ A–74
A.4.39 Procedimiento integrado COMPARE_FILE.................................................... .......................... A–74
A.4.40 CONDICIÓN...ENDCONDICIÓN Sentencia.................................................... ................ A–76
A.4.41 CONFIG Tipo de datos.................................................... .................................................... . A–78
A.4.42 Declaración de TEMPORIZADOR DE CONEXIÓN.................................................... ..................................... A–79
A.4.43 CONTINUAR Acción.................................................... .................................................... .. A–80
A.4.44 CONTINUAR Condición.................................................... .......................................................... A–80
A.4.45 Procedimiento integrado CONT_TASK.................................................... ............................... A–81
A.4.46 Procedimiento integrado COPY_FILE.................................................... ................................ A–82

A–2
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

A.4.47 Procedimiento integrado COPY_PATH.................................................... ............................... A–83


A.4.48 Procedimiento integrado COPY_QUEUE.................................................... ............................ A–84
A.4.49 Procedimiento integrado COPY_TPE.................................................... .................................. A–86
A.4.50 Función incorporada COS.................................................... ............................................................. A–87
A.4.51 Elemento de entrada/salida CR.................................................... .......................................................... A–87
A.4.52 Procedimiento integrado CREATE_TPE.................................................... ............................. A–88
A.4.53 Procedimiento integrado CREATE_VAR.................................................... ............................. A–89
A.4.54 %DISPOSITIVO CRT.................................................... .................................................... ........ A–91
A.4.55 Función integrada CURJPOS.................................................... ..................................... A–92
A.4.56 Función integrada CURPOS.................................................... ............................................. A–93
A.4.57 Función integrada CURR_PROG.................................................... ................................ A–94
A.5 - D - DESCRIPCIÓN DEL IDIOMA KAREL.................................................... .................. A–94
A.5.1 Procedimiento integrado DAQ_CHECKP.................................................... .......................... A–94
A.5.2 Procedimiento incorporado DAQ_REGPIPE.................................................... .......................... A–95
A.5.3 Procedimiento integrado DAQ_START.................................................... ............................... A–97
A.5.4 Procedimiento integrado DAQ_STOP.................................................... .................................. A–99
A.5.5 Procedimiento integrado DAQ_UNREG.................................................... ............................ A–100
A.5.6 Procedimiento integrado DAQ_WRITE.................................................... ............................. A–101
A.5.7 Directiva de traductor %DEFGROUP.................................................... ......................... A–103
A.5.8 Procedimiento integrado DEF_SCREEN.................................................... .......................... A–103
A.5.9 Procedimiento integrado DEF_WINDOW.................................................... .......................... A–104
A.5.10 Directiva de traductor %DELAY.................................................... .................................. A–105
A.5.11 Declaración DE DEMORA.................................................... .................................................... . A–106
A.5.12 Procedimiento integrado DELETE_FILE.................................................... .......................... A–107
A.5.13 Procedimiento integrado DELETE_NODE.................................................... ........................ A–107
A.5.14 Procedimiento integrado DELETE_QUEUE.................................................... ...................... A–108
A.5.15 Procedimiento integrado DEL_INST_TPE.................................................... ........................ A–109
A.5.16 Procedimiento integrado DET_WINDOW.................................................... .......................... A–109
A.5.17 DESHABILITAR CONDICIÓN Acción.................................................... .................................. A–110
A.5.18 Declaración de CONDICIÓN DE DESHABILITACIÓN.................................................... .......................... A–111
A.5.19 Declaración del TEMPORIZADOR DE DESCONEXIÓN.................................................... ............................ A–112
A.5.20 Procedimiento integrado DISCTRL_ALPH.................................................... ....................... A–113
A.5.21 Procedimiento integrado DISCTRL_FORM.................................................... ...................... A–114
A.5.22 Procedimiento integrado DISCTRL_LIST.................................................... ......................... A–117
A.5.23 Procedimiento integrado DISCTRL_PLMN.................................................... ....................... A–118
A.5.24 Procedimiento integrado DISCTRL_SBMN.................................................... ....................... A–120
A.5.25 Procedimiento integrado DISCTRL_TBL.................................................... .......................... A–123
A.5.26 Procedimiento integrado DISMONT_DEV.................................................... ...................... A–125
A.5.27 DISP_DAT_T Tipo de datos.................................................... .......................................... A-126
A.5.28 Procedimiento integrado DOSFILE_INF.................................................... ............................. A–127
A.6 - E - KAREL IDIOMA DESCRIPCIÓN.................................................... ................ A–129
A.6.1 HABILITAR CONDICIÓN Acción.................................................... .................................... A–129
A.6.2 Declaración de CONDICIÓN DE HABILITACIÓN.................................................... ............................ A–130
A.6.3 %ENVIRONMENT Directiva Traductor.................................................... ................... A–130
A.6.4 Procedimiento integrado ERR_DATA.................................................... ............................... A-132
A.6.5 Condición de ERROR.................................................... .................................................... A–133
A.6.6 Cláusula EVAL.................................................... .................................................... ........ A–134
A.6.7 EVENTO Condición.................................................... .................................................... . A–134
A.6.8 Función incorporada EXP.................................................... ............................................. A-135
A.7 - F - KAREL IDIOMA DESCRIPCIÓN.................................................... ................ A-136
A.7.1 ARCHIVO Tipo de datos.................................................... .................................................... ..... A-136
A.7.2 Procedimiento integrado FILE_LIST.................................................... .................................. A-136
A.7.3 Declaración FOR...ENDFOR.................................................... ...................................... A–138
A.7.4 Procedimiento integrado FORCE_SPMENU.................................................... ..................... A–139

A–3
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

A.7.5 Procedimiento integrado FORMAT_DEV.................................................... .......................... A–142


A.7.6 MARCO función incorporada.................................................... ............................................. A–143
A.7.7 Cláusula FROM.................................................... .................................................... ....... A-144
A.8 - G - KAREL IDIOMA DESCRIPCIÓN.................................................... ................ A-145
A.8.1 Procedimiento integrado GET_ATTR_PRG.................................................... ...................... A-145
A.8.2 Función integrada GET_FILE_POS.................................................... .......................... A–147
A.8.3 Función incorporada GET_JPOS_REG.................................................... ......................... A–148
A.8.4 Función integrada GET_JPOS_TPE.................................................... ......................... A–149
A.8.5 Procedimiento integrado GET_PORT_ASG.................................................... ...................... A–150
A.8.6 Función incorporada GET_PORT_ATR.................................................... ......................... A–151
A.8.7 Procedimiento integrado GET_PORT_CMT.................................................... ...................... A–154
A.8.8 Procedimiento integrado GET_PORT_MOD.................................................... ..................... A–154
A.8.9 Procedimiento integrado GET_PORT_SIM.................................................... ....................... A–156
A.8.10 Procedimiento integrado GET_PORT_VAL.................................................... ....................... A–157
A.8.11 Procedimiento integrado GET_POS_FRM.................................................... ........................ A–157
A.8.12 Función integrada GET_POS_REG.................................................... .......................... A–158
A.8.13 Función integrada GET_POS_TPE.................................................... .......................... A–159
A.8.14 Procedimiento integrado GET_POS_TYP.................................................... ......................... A–160
A.8.15 Procedimiento integrado GET_PREG_CMT.................................................... ...................... A–161
A.8.16 Procedimiento integrado GET_QUEUE.................................................... ............................ A–161
A.8.17 Procedimiento integrado GET_REG.................................................... .................................. A-163
A.8.18 GET_REG_CMT.................................................... .................................................... .... A-163
A.8.19 Procedimiento integrado GET_SREG_CMT.................................................... ......................... A-164
A.8.20 Procedimiento integrado GET_STR_REG.................................................... .......................... A-164
A.8.21 Procedimiento integrado GET_TIME.................................................... .................................. A-165
A.8.22 Procedimiento integrado GET_TPE_CMT.................................................... ......................... A–166
A.8.23 Procedimiento integrado GET_TPE_PRM.................................................... ........................ A-167
A.8.24 Procedimiento integrado GET_TSK_INFO.................................................... ........................ A–169
A.8.25 Procedimiento integrado GET_USEC_SUB.................................................... ....................... A–171
A.8.26 Función integrada GET_USEC_TIM.................................................... .......................... A–172
A.8.27 Procedimiento integrado GET_VAR.................................................... .................................. A–172
A.8.28 IR A Declaración.................................................... .................................................... . A–176
A.9 - H - KAREL IDIOMA DESCRIPCIÓN.................................................... ................ A–177
A.9.1 ESPERA Acción.................................................... .................................................... ........ A–177
A.9.2 Declaración de retención.................................................... .................................................... .. A–178
A.10 - I - DESCRIPCIÓN DEL LENGUAJE KAREL.................................................... .................. A–178
A.10.1 SI ... Declaración ENDIF.................................................... ............................................ A–178
A.10.2 Cláusula IN.................................................... .................................................... ............. A–179
A.10.3 %INCLUDE Directiva de traductor.................................................... ............................. A–180
A.10.4 ÍNDICE Función integrada.................................................... ............................................. A–181
A.10.5 Procedimiento integrado INI_DYN_DISB.................................................... .......................... A–182
A.10.6 Procedimiento integrado INI_DYN_DISE.................................................... .......................... A–184
A.10.7 Procedimiento integrado INI_DYN_DISI.................................................... .......................... A–185
A.10.8 Procedimiento integrado INI_DYN_DISP.................................................... .......................... A–187
A.10.9 Procedimiento integrado INI_DYN_DISR.................................................... .......................... A–188
A.10.10 Procedimiento integrado INI_DYN_DISS.................................................... .......................... A–189
A.10.11 Procedimiento integrado INIT_QUEUE.................................................... ............................. A–190
A.10.12 Procedimiento integrado INIT_TBL.................................................... .................................... A–190
A.10.13 Función integrada IN_RANGE.................................................... .................................... A–201
A.10.14 Procedimiento integrado INSERT_NODE.................................................... ......................... A–202
A.10.15 Procedimiento integrado INSERT_QUEUE.................................................... ....................... A–203
A.10.16 Tipo de datos ENTERO.................................................... .......................................................... A–204
A.10.17 Función integrada INV.................................................... ............................................................. A–205
A.10.18 Procedimiento integrado IO_MOD_TYPE.................................................... ......................... A–206

A–4
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

A.10.19 Función integrada IO_STATUS.................................................... .................................. A–207


A.11 - J - KAREL IDIOMA DESCRIPCIÓN.................................................... .................. A–209
A.11.1 Función integrada J_IN_RANGE.................................................... ............................... A–209
A.11.2 Tipo de datos JOINTPOS.................................................... ............................................. A–209
A.11.3 Función integrada JOINT2POS.................................................... .................................. A–210
A.12 - K - KAREL IDIOMA DESCRIPCIÓN.................................................... ................ A–211
A.12.1 Procedimiento incorporado de KCL.................................................... .......................................... A–211
A.12.2 Procedimiento integrado KCL_NO_WAIT.................................................... ......................... A–212
A.12.3 Procedimiento integrado KCL_STATUS.................................................... .......................... A–213
A.13 - L - KAREL IDIOMA DESCRIPCIÓN.................................................... ................ A–213
A.13.1 Función incorporada de LN.................................................... .......................................................... A–213
A.13.2 Procedimiento integrado LOAD.................................................... ............................................. A–214
A.13.3 Procedimiento integrado LOAD_STATUS.................................................... ......................... A–215
A.13.4 Procedimiento integrado LOCK_GROUP.................................................... ......................... A–216
A.13.5 Directiva de traductor %LOCKGROUP.................................................... ...................... A–217
A.14 - M - KAREL IDIOMA DESCRIPCIÓN.................................................... ................ A–218
A.14.1 ESPEJO función incorporada.................................................... ...................................... A–218
A.14.2 Procedimiento integrado MODIFY_QUEUE.................................................... ...................... A–220
A.14.3 Función integrada MOTION_CTL.................................................... ............................... A-221
A.14.4 Procedimiento integrado MOUNT_DEV.................................................... ............................ A-222
A.14.5 Procedimiento integrado MOVE_FILE.................................................... ............................... A-222
A.14.6 Procedimiento integrado MSG_CONNECT.................................................... ....................... A-223
A.14.7 Procedimiento integrado MSG_DISCO.................................................... ............................. A–225
A.14.8 MSG_PING.................................................... .................................................... ........... A–225
A.15 - N - KAREL IDIOMA DESCRIPCIÓN.................................................... ................ A–226
A.15.1 Acción NO ABORTAR.................................................... .................................................... A–226
A.15.2 Directiva de traductor %NOABORT.................................................... .......................... A–227
A.15.3 Directiva de traductor %NOBUSYLAMP.................................................... ..................... A–227
A.15.4 Función integrada NODE_SIZE.................................................... ................................ A–228
A.15.5 Directiva de traductor %NOLOCKGROUP.................................................... .................. A–229
A.15.6 Acción SIN MENSAJE.................................................... ............................................................. A–230
A.15.7 Acción SIN PAUSA.................................................... .................................................... . A–230
A.15.8 Directiva de traductor %NOPAUSE.................................................... .......................... A–231
A.15.9 Directiva de traductor %NOPAUSESHFT.................................................... ................... A–232
A.16 - O - KAREL IDIOMA DESCRIPCIÓN.................................................... ................ A–232
A.16.1 Declaración de ARCHIVO ABIERTO....................................................
............................................ A–232
A.16.2 Declaración MANO ABIERTA.................................................... .......................................... A–233
A.16.3 Procedimiento integrado OPEN_TPE.................................................... ............................... A–234
A.16.4 Función integrada ORD.................................................... ............................................ A–235
A.16.5 Función integrada ORIENTAR.................................................... ............................................. A–235
A.17 - P - KAREL IDIOMA DESCRIPCIÓN.................................................... ................ A–236
A.17.1 Tipo de datos de RUTA.................................................... .................................................... ... A–236
A.17.2 Función integrada PATH_LEN.................................................... .................................... A–238
A.17.3 PAUSA Acción.................................................... .................................................... ...... A–239
A.17.4 PAUSA Condición.................................................... .................................................... . A–239
A.17.5 Declaración de PAUSA.................................................... .................................................... A–240
A.17.6 Procedimiento integrado PAUSE_TASK.................................................... .......................... A-241
A.17.7 Procedimiento integrado PEND_SEMA.................................................... ............................ A-242
A.17.8 Procedimiento integrado PIPE_CONFIG.................................................... .......................... A–243
A.17.9 Procedimiento integrado POP_KEY_RD.................................................... .......................... A–244
A.17.10 Acción Port_Id.................................................... .................................................... ...... A–244
A.17.11 Condición Port_Id.................................................... .................................................... . A-245
A.17.12 Función incorporada de POS.................................................... ............................................ A-246

A–5
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

A.17.13 Función incorporada POS2JOINT.................................................... .................................. A–247


A.17.14 Procedimiento integrado POS_REG_TYPE.................................................... ...................... A–248
A.17.15 POSICIÓN Tipo de datos.................................................... ............................................................. A–250
A.17.16 Procedimiento integrado POST_ERR.................................................... ............................... A-251
A.17.17 Procedimiento integrado POST_ERR_L.................................................... ............................. A-252
A.17.18 Procedimiento integrado POST_SEMA.................................................... ............................ A–253
A.17.19 Procedimiento integrado PRINT_FILE.................................................... ............................... A–254
A.17.20 Directiva de traductor de %PRIORITY.................................................... ............................ A–254
A.17.21 Procedimiento integrado PROG_BACKUP.................................................... ....................... A–256
A.17.22 Procedimiento integrado PROG_CLEAR.................................................... .......................... A–259
A.17.23 Procedimiento integrado PROG_RESTORE.................................................... ..................... A–261
A.17.24 Procedimiento integrado PROG_LIST.................................................... ............................... A–263
A.17.25 PROGRAMA Declaración.................................................... ............................................ A–264
A.17.26 Acción de pulso.................................................... .................................................... ...... A–265
A.17.27 Declaración de pulso.................................................... .................................................... A–266
A.17.28 Declaración de CONDICIÓN DE PURGA.................................................... ............................... A–267
A.17.29 Procedimiento integrado PURGE_DEV.................................................... ............................ A–268
A.17.30 Procedimiento integrado PUSH_KEY_RD.................................................... ........................ A–268
A.18 - Q - DESCRIPCIÓN DEL IDIOMA KAREL.................................................... ................ A–270
A.18.1 QUEUE_TYPE Tipo de datos.................................................... ........................................ A–270
A.19 - R - KAREL IDIOMA DESCRIPCIÓN.................................................... ................ A–270
A.19.1 LEER declaración.................................................... .................................................... .. A–270
A.19.2 Procedimiento integrado READ_DICT.................................................... ............................... A–272
A.19.3 Procedimiento integrado READ_DICT_V.................................................... ......................... A–273
A.19.4 Procedimiento integrado READ_KB.................................................... .................................. A–274
A.19.5 Tipo de datos REALES.................................................... .................................................... ... A–278
A.19.6 Condición relacional.................................................... ............................................................. A–280
A.19.7 RELAJAR LA MANO Declaración.................................................... ........................................ A–281
A.19.8 Declaración de LIBERACIÓN.................................................... ............................................................. A–282
A.19.9 Procedimiento integrado REMOVE_DICT.................................................... ......................... A–282
A.19.10 Procedimiento integrado RENAME_FILE.................................................... ......................... A–283
A.19.11 Procedimiento integrado RENAME_VAR.................................................... .......................... A–284
A.19.12 Procedimiento integrado RENAME_VARS.................................................... ........................ A–284
A.19.13 REPETIR... HASTA Declaración.................................................... .................................... A–285
A.19.14 Procedimiento integrado RESET.................................................... ...................................... A–286
A.19.15 REANUDAR Acción.................................................... .................................................... ... A–287
A.19.16 Declaración de RESUMEN.................................................... .......................................................... A–287
A.19.17 Declaración de RETORNO.................................................... ................................................ A–288
A.19.18 RGET_PORTCMT RUTINA integrada.................................................... ......................... A–289
A.19.19 RGET_PORTSIM RUTINA integrada.................................................... .......................... A–290
A.19.20 RGET_PORTVAL RUTINA integrada.................................................... ......................... A–291
A.19.21 RGET_PREGCMT RUTINA integrada.................................................... ....................... A–292
A.19.22 RGET_REG RUTINA incorporada.................................................... .................................... A–293
A.19.23 RGET_REG_CMT RUTINA integrada.................................................... ......................... A–294
A.19.24 RGET_SREGCMT RUTINA integrada.................................................... ........................ A–295
A.19.25 RGET_STR_REG RUTINA incorporada.................................................... ......................... A–296
A.19.26 RMCN_ALERT RUTINA integrada.................................................... ............................. A–297
A.19.27 RMCN_SEND RUTINA integrada.................................................... ............................... A–298
A.19.28 RNUMREG_RECV RUTINA integrada.................................................... ........................ A–299
A.19.29 RNUMREG_SEND RUTINA integrada.................................................... ........................ A–301
A.19.30 Función incorporada REDONDA.................................................... ............................................. A-302
A.19.31 Declaración de RUTINA.................................................... .......................................................... A-302
A.19.32 RPREG_RECV RUTINA integrada.................................................... ............................. A-304
A.19.33 RPREG_SEND RUTINA integrada.................................................... ............................. A-305
A.19.34 RSET_INT_REG RUTINA integrada.................................................... .......................... A-307

A–6
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

A.19.35 RSET_PORTCMT RUTINA incorporada.................................................... ......................... A-307


A.19.36 RSET_PORTSIM RUTINA incorporada.................................................... .......................... A–308
A.19.37 RSET_PORTVAL RUTINA incorporada.................................................... .......................... A–309
A.19.38 RSET_PREGCMT RUTINA incorporada.................................................... ......................... A–310
A.19.39 RSET_REALREG RUTINA integrada.................................................... ......................... A–311
A.19.40 RSET_REG_CMT RUTINA incorporada.................................................... ......................... A–312
A.19.41 RSET_SREGCMT RUTINA incorporada.................................................... ......................... A–313
A.19.42 RSET_STR_REG RUTINA integrada.................................................... .......................... A–314
A.19.43 Procedimiento integrado RUN_TASK.................................................... ............................... A-315
A.20 - S - KAREL IDIOMA DESCRIPCIÓN.................................................... ................ A-316
A.20.1 Procedimiento integrado SAVE.................................................... ........................................ A-316
A.20.2 Procedimiento integrado SAVE_DRAM.................................................... ............................ A–317
A.20.3 SELECCIONAR ... ENDSELECT Sentencia.................................................... ....................... A–318
A.20.4 Procedimiento integrado SELECT_TPE.................................................... .......................... A–319
A.20.5 Función integrada SEMA_COUNT.................................................... ............................ A–319
A.20.6 SEMÁFORO Condición.................................................... ............................................. A–320
A.20.7 Procedimiento integrado SEND_DATAPC.................................................... ........................ A–320
A.20.8 Procedimiento integrado SEND_EVENTPC.................................................... ...................... A–321
A.20.9 Procedimiento integrado SET_ATTR_PRG.................................................... ....................... A–322
A.20.10 Procedimiento integrado SET_CURSOR.................................................... .......................... A–324
A.20.11 Procedimiento integrado SET_EPOS_REG.................................................... ...................... A-325
A.20.12 Procedimiento integrado SET_EPOS_TPE.................................................... ....................... A-326
A.20.13 Procedimiento integrado SET_FILE_ATR.................................................... ......................... A–327
A.20.14 Procedimiento integrado SET_FILE_POS.................................................... ........................ A–328
A.20.15 Procedimiento integrado SET_INT_REG.................................................... .......................... A–329
A.20.16 Procedimiento integrado SET_JPOS_REG.................................................... ....................... A–329
A.20.17 Procedimiento integrado SET_JPOS_TPE.................................................... ....................... A–330
A.20.18 Procedimiento integrado SET_LANG.................................................... ............................... A–331
A.20.19 Procedimiento integrado SET_PERCH.................................................... ............................. A–332
A.20.20 Procedimiento integrado SET_PORT_ASG.................................................... ...................... A–333
A.20.21 Función integrada SET_PORT_ATR.................................................... ......................... A–334
A.20.22 Procedimiento integrado SET_PORT_CMT.................................................... ...................... A–336
A.20.23 Procedimiento integrado SET_PORT_MOD.................................................... ...................... A–337
A.20.24 Procedimiento integrado SET_PORT_SIM.................................................... ....................... A–338
A.20.25 Procedimiento integrado SET_PORT_VAL.................................................... ....................... A–339
A.20.26 Procedimiento integrado SET_POS_REG.................................................... ........................ A–340
A.20.27 Procedimiento integrado SET_POS_TPE.................................................... ......................... A–341
A.20.28 Procedimiento integrado SET_PREG_CMT.................................................... ...................... A-342
A.20.29 Procedimiento integrado SET_REAL_REG.................................................... ...................... A-342
A.20.30 Procedimiento integrado SET_REG_CMT.................................................... ........................ A–343
A.20.31 Procedimiento integrado SET_SREG_CMT.................................................... ........................ A–343
A.20.32 Procedimiento integrado SET_STR_REG.................................................... .......................... A–344
A.20.33 Procedimiento integrado SET_TIME.................................................... .................................. A–344
A.20.34 Procedimiento integrado SET_TPE_CMT.................................................... ......................... A–346
A.20.35 Procedimiento integrado SET_TRNS_TPE.................................................... ....................... A–346
A.20.36 Procedimiento integrado SET_TSK_ATTR.................................................... ....................... A–347
A.20.37 Procedimiento integrado SET_TSK_NAME.................................................... ...................... A–348
A.20.38 Procedimiento integrado SET_VAR.................................................... .................................... A–349
A.20.39 Directiva de traductor %SHADOWVARS.................................................... ................... A-352
A.20.40 CORTO Tipo de datos.................................................... .................................................... A-352
A.20.41 SEÑAL EVENTO Acción.................................................... .......................................... A-352
A.20.42 Declaración de EVENTO DE SEÑAL.................................................... ..................................... A–353
A.20.43 SEÑAL DE SEMÁFORO Acción.................................................... ................................ A–354
A.20.44 SIN función incorporada.................................................... ............................................................. A–354
A.20.45 Función integrada SQRT.................................................... .......................................... A–354

A–7
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

A.20.46 Directiva de traductor %STACKSIZE.................................................... ......................... A–355


A.20.47 Tipo de datos STD_PTH_NODE.................................................... .................................... A–355
A.20.48 DETENER Acción.................................................... .................................................... ........ A–356
A.20.49 Declaración DETENER.................................................... .................................................... ... A–357
A.20.50 STRING Tipo de datos.................................................... .......................................................... A–357
A.20.51 Función integrada STR_LEN.................................................... ..................................... A–359
A.20.52 ESTRUCTURA Tipo de datos.................................................... ............................................. A–359
A.20.53 Función integrada SUB_STR.................................................... ..................................... A–360
A.21 - T - KAREL IDIOMA DESCRIPCIÓN.................................................... ................ A–361
A.21.1 Función integrada TAN....................................................
............................................. A–361
A.21.2 Directiva de traductor %TIMESLICE.................................................... .......................... A–361
A.21.3 Directiva de traductor %TPMOTION.................................................... .......................... A–362
A.21.4 Procedimiento integrado TRADUCIR.................................................... ............................. A–362
A.21.5 Función incorporada TRUNC.................................................... ........................................ A–364
A.22 - U - KAREL IDIOMA DESCRIPCIÓN.................................................... ................ A–364
A.22.1 Acción UNHOLD.................................................... .................................................... ... A–364
A.22.2 Declaración UNHOLD.................................................... .......................................................... A–365
A.22.3 Función integrada UNINIT.................................................... ........................................ A–366
A.22.4 Directiva de traductor %UNINIVARS.................................................... ........................ A–366
A.22.5 Procedimiento incorporado UNLOCK_GROUP.................................................... ..................... A–366
A.22.6 Acción DE PAUSA.................................................... .................................................... . A–368
A.22.7 Procedimiento incorporado de UNPOS.................................................... ..................................... A–368
A.22.8 UTILIZANDO... ENDUSANDO Declaración.................................................... ............................. A–369
A.23 - V - DESCRIPCIÓN DEL IDIOMA KAREL.................................................... ................ A–370
A.23.1 V_ACQ_VAMAPiProcedimiento integrado de RVision.................................................... ........... A–370
A.23.2 V_ADJ_2DiProcedimiento integrado de RVision.................................................... ..................... A–371
A.23.3 V_CAM_CALIBiProcedimiento integrado de RVision.................................................... ............ A–372
A.23.4 V_CLR_VAMAPiProcedimiento integrado de RVision.................................................... ............ A–374
A.23.5 V_DISPLAY4DiProcedimiento integrado de RVision.................................................... .............. A–374
A.23.6 V_FIND_VIEWiProcedimiento integrado de RVision.................................................... .............. A–375
A.23.7 V_GET_OFFSETiProcedimiento integrado de RVision.................................................... .......... A–376
A.23.8 V_GET_PASSFLiProcedimiento integrado de RVision.................................................... .......... A-378
A.23.9 V_GET_QUEUEiProcedimiento integrado de RVision.................................................... ........... A–379
A.23.10 V_GET_VPARAMiProcedimiento integrado de RVision.................................................... .......... A–380
A.23.11 V_INIT_QUEUEiProcedimiento integrado de RVision.................................................... ............ A–381
A.23.12 V_IRCONEXIÓNiProcedimiento integrado de RVision.................................................... ............. A–381
A.23.13 V_LED_APAGADOiProcedimiento integrado de RVision.................................................... .................. A–383
A.23.14 V_LED_ONiProcedimiento integrado de RVision.................................................... ................... A–383
A.23.15 V_OVERRIDEiProcedimiento integrado de RVision.................................................... ............... A–384
A.23.16 V_RALC_QUEUEiProcedimiento integrado de RVision.................................................... ......... A–385
A.23.17 V_RUN_FINDiProcedimiento integrado de RVision.................................................... ............... A–385
A.23.18 V_SAVE_IMREGiProcedimiento integrado de RVision.................................................... ........... A–387
A.23.19 V_SET_REFiProcedimiento integrado de RVision.................................................... .................. A–388
A.23.20 V_SNAP_VIEWiProcedimiento integrado de RVision.................................................... ............. A–389
A.23.21 V_START_VTRKiProcedimiento integrado de RVision.................................................... .......... A–390
A.23.22 V_STOP_VTRKiProcedimiento integrado de RVision.................................................... ............ A–391
A.23.23 Procedimiento integrado VAR_INFO.................................................... .................................. A–391
A.23.24 Procedimiento integrado VAR_LIST.................................................... .................................... A–394
A.23.25 Tipo de datos VECTOR.................................................... .......................................................... A–396
A.23.26 Procedimiento integrado VOL_SPACE.................................................... ............................... A–397
A.23.27 VREG_FND_POSiProcedimiento integrado de RVision.................................................... ......... A–399
A.23.28 VREG_OFFSETiProcedimiento integrado de RVision.................................................... ........... A–399
A.24 - W - KAREL IDIOMA DESCRIPCIÓN.................................................... ............... A–400
A.24.1 ESPERAR declaración.................................................... ............................................. A–400

A–8
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

A.24.2 Cláusula CUANDO.................................................... .................................................... ....... A–401


A.24.3 MIENTRAS...ENDWHILE Declaración.................................................... ............................... A–401
A.24.4 Cláusula CON.................................................... .................................................... ........ A–402
A.24.5 ESCRIBIR declaración.................................................... .................................................... . A–402
A.24.6 Procedimiento integrado WRITE_DICT.................................................... ............................ A–403
A.24.7 Procedimiento integrado WRITE_DICT_V.................................................... ........................ A–404
A.25 - X - DESCRIPCIÓN DEL IDIOMA KAREL.................................................... ................ A–405
A.25.1 Procedimiento integrado XML_ADDTAG.................................................... .......................... A–405
A.25.2 Procedimiento integrado XML_GETDATA.................................................... ......................... A–406
A.25.3 Procedimiento integrado XML_REMTAG.................................................... .......................... A–407
A.25.4 Procedimiento integrado XML_SCAN.................................................... ............................... A–408
A.25.5 Procedimiento integrado XML_SETVAR.................................................... ............................ A–409
A.25.6 Tipo de datos XYZWPR.................................................... ................................................ A–410
A.25.7 Tipo de datos XYZWPREXT.................................................... ............................................. A–411
A.26 - Y - KAREL IDIOMA DESCRIPCIÓN.................................................... ................ A–412
A.27 - Z - KAREL IDIOMA DESCRIPCIÓN.................................................... ................ A–412

A–9
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

A.1 VISIÓN GENERAL

Este apéndice describe, en orden alfabético, cada elemento estándar del lenguaje KAREL, incluyendo:

• Tipos de datos

• Declaraciones y cláusulas ejecutables

• Condiciones y acciones del manejador de condiciones

• Rutinas integradas

• Traductor de directivas

En cada descripción se incluye un breve ejemplo de un uso típico de cada elemento.

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:

• Objetivo:Indica el propósito específico al que sirve el elemento en el idioma.

• 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.

Tabla A–1. Notación de sintaxis

Sintaxis Sentido Ejemplo Resultado

<> Las palabras encerradas son AAA <BBB> AAA


opcional AAA BBB

{} Las palabras encerradas son AAA {BBB} AAA


opcional y se puede AAA BBB
repetir AAA BBB BBB
AAA BBB BBB BBB

| Separa alternativas AAA | BBB AAA


BBB
<|> Separa una alternativa si solo AAA <BBB | CCC> AAA
se puede usar una o ninguna AAA BBB
AAACCC

|| Se debe usar exactamente AAA || BBB | CCC || AAA BBB


una alternativa AAACCC

A–10
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

Tabla A–1. Notación de sintaxis (continuación)

Sintaxis Sentido Ejemplo Resultado

{|} Cualquier combinación de AAA {BBB | CCC} AAA


se pueden usar alternativas AAA BBB
AAACCC
AAA BBB CCC
AAA CCC BBB
AAA BBB CCC BBB BBB

<<|>> Se permite el anidamiento de AAA <BBB <CCC | AAA


símbolos. Mire primero la DDD> AAA BBB
notación más interna para ver AAA BBB CCC
qué describe, luego mire la AAA BBB DDD
siguiente capa más interna
para ver qué describe, y así
sucesivamente.

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:

Tipo de devolución de función: data_typ

Los tipos de datos de parámetros de entrada y salida para funciones y procedimientos se identifican como:

[en] nombre_parámetro: tipo_datos

[fuera] nombre_parámetro: tipo_datos

dónde :

[in] especifica el tipo de datos de los parámetros que se pasan a la rutina

[out] especifica el tipo de datos de los parámetros que se devuelven al programa desde la rutina

El grupo %ENVIRONMENT especifica el grupo %ENVIRONMENT para funciones y procedimientos


integrados, que utiliza el traductor fuera de línea. Los valores válidos son: BYNAM, CTDEF, ERRS, FDEV,
FLBT, IOSETUP, KCL, MEMO, MIR, MOTN, MULTI, PATHOP, PBQMGR, REGOPE, STRNG, SYSDEF, TIM, TPE,
TRANS, UIF, VECTR. El grupo SYSTEM es utilizado automáticamente por el traductor fuera de línea.

• 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

• Ejemplo:Muestra un breve ejemplo y una explicación del elemento.Tabla A–2medianteTabla A–8enumere


los elementos del lenguaje KAREL, descritos en este apéndice, por tipo de elemento.Tabla A–9enumera
estos elementos en orden alfabético.

Cuadro A–2. Comportamiento

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

SEÑAL EVENTO Acción


SEÑAL SEMÁFORO Acción
DETENER Acción
DESMANEJAR Acción
DESPAUSAR Acción

Tabla A–3. Cláusulas

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

Tabla A–4. Condiciones

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

Tabla A–5. Tipos de datos

ARRAY Tipo de datos


Tipo de datos BOOLEAN
Tipo de datos BYTE
CONFIGURACIÓN de datos Escribe
DISP_DAT_T Datos Escribe
ARCHIVO Datos Escribe
ENTERO Datos Escribe
POS CONJUNTO Datos Escribe
Datos de RUTA Escribe
POSICIÓN Datos Escribe
TIPO DE COLA Datos Escribe
REAL Datos Escribe
CORTO Datos Escribe
STD_PTH_NODE Datos Escribe
CADENA de datos Escribe
ESTRUCTURA Datos Escribe
VECTOR Datos Escribe
XYZWPR Datos Escribe
XYZWPREXT Datos Escribe

A–13
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

Cuadro A–6. Directivas

%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

Cuadro A–7. Resumen de rutinas integradas de KAREL

Categoría identificador

Por nombre CALL_PROG CURR_PROG PROG_LISTA


CALL_PROGLIN ARCHIVO_LISTA VAR_INFO
VAR_LIST

Adquisición de datos DAQ_CHECKP DAQ_START DAQ_UNREG


DAQ_REGPIPE DAQ_STOP DAQ_ESCRIBIR

Transferencia de datos entre RGET_PORTCMT RGET_STR_REG RSET_PORTSIM


Robots a través de Ethernet RGET_PORTSIM RNREG_RECV RSET_PORTVAL
RGET_PORTVAL RNREG_SEND RSET_PREGMT
RGET_PREGCMT RPREG_RECV RSET_REALREG
RGET_REG RPREG_SEND RSET_REG_CMT
RGET_REG_CMT RSET_INT_REG RSET_SREGCMT
RGET_SREGCMT RSET_PORTCMT RSET_STR_REG

Manejo de códigos de error ERR_DATOS POST_ERR POST_ERR_L

A–14
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

Cuadro A–7. Resumen de rutinas integradas de KAREL (continuación)

Categoría identificador

Operación de archivos y dispositivos CHECK_NOMBRE MOUNT_DEV XML_ADDTAG


COMPARAR_ARCHIVO MOVER_ARCHIVO XML_GETDATA
COPIAR ARCHIVO IMPRIMIR ARCHIVO XML_REMTAG
BORRAR ARCHIVO PURGAR_DEV XML_ESCANEAR

DESMONTAR_DEV RENOMBRAR ARCHIVO XML_SETVAR


DOSFILE_INF
FORMATO_DEV

Comunicaciones de iPhone RMCN_SEND RMCN_ALERT

E/S serie, uso de archivos BYTES_AHEAD IO_ESTADO SET_FILE_ATR


BYTES_LEFT MSG_CONECTAR SET_FILE_POS
CLR_IO_STAT MSG_DISCO SET_PORT_ATR
GET_FILE_POS MSG_PING VOL_ESPACIO
GET_PORT_ATR TUBERÍA_CONFIG

Configuración de E/S de proceso CLR_PORT_SIM GET_PORT_SIM SET_PORT_CMT


GET_PORT_ASG GET_PORT_VAL SET_PORT_MOD
GET_PORT_CMT IO_MOD_TYPE SET_PORT_SIM
GET_PORT_MOD SET_PORT_ASG SET_PORT_VAL

Operación KCL KCL KCL_NO_WAIT KCL_STATUS

Operación de memoria CLARO PROG_RESPALDO RENAME_VARS


CREAR_VAR PROG_CLEAR AHORRAR

CARGA PROG_RESTORE GUARDAR_DRAM

LOAD_STATUS RENAME_VAR

Espejo ESPEJO

Movimiento y Programa CNCL_STP_MTN MOVIMIENTO_CTL REINICIAR

Control

Multiprogramación ABORTAR_TAREA PAUSA_TAREA SEMA_COUNT


CLEAR_SEMA PEND_SEMA SET_TSK_ATTR
CONT_TAREA POST_SEMA SET_TSK_NOMBRE
GET_TSK_INFO EJECUTAR_TAREA UNLOCK_GROUP
LOCK_GROUP

Operación de ruta APPEND_NODE ELIMINAR NODO NODE_SIZE


COPY_PATH INSERTAR_NODO PATH_LEN

Computadora personal ADD_BYNAMEPC ADD_REALPC SEND_DATAPC


Comunicaciones ADD_INTPC ADD_STRINGPC SEND_EVENTPC

A–15
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

Cuadro A–7. Resumen de rutinas integradas de KAREL (continuación)

Categoría identificador

Posición CHECK_EPOS CUADRO TPV


CNV_JPOS_REL EN EL RANGO POS2JUNTA
CNV_REL_JPOS J_IN_RANGE SET_PERCH
CURSOS JOINT2POS UNPOS
CURJPOS

Administrador de colas APLICACIÓNEND_QUEUE GET_QUEUE INSERT_QUEUE


COPY_QUEUE INIT_QUEUE
DELETE_QUEUE MODIFY_QUEUE

Registrar Operación CLR_POS_REG GET_SREG_CMT SET_POS_REG


GET_JPOS_REG GET_STR_REG SET_PREG_CMT
GET_POS_REG POS_REG_TYPE SET_REAL_REG
GET_PREG_CMT SET_EPOS_REG SET_REG_CMT
OBTENER_REG SET_INT_REG SET_SREG_CMT
GET_REG_CMT SET_JPOS_REG SET_STR_REG

Operación de cadena CNV_CNF_STRG CNV_STR_CONF STR_LEN


CNV_CONF_STR CNV_STR_INT SUB_STR
CNV_INT_STR CNV_STR_REAL
CNV_REAL_STR

Sistema abdominales porque REDONDO


ACOS Exp SET_VAR
ARRAY_LEN GET_VAR PECADO

COMO EN ÍNDICE SQRT


ATAN2 INV BRONCEARSE

POR NOMBRE LN TRONCO


CDH PEDIDO UNINIT

Operación de hora del día CNV_STR_TIME CONSIGUE TIEMPO GET_USEC_TIM


CNV_TIME_STR GET_USEC_SUB FIJAR TIEMPO

Programa TPE AVL_POS_NUM GET_POS_FRM SET_ATTR_PRG


CLOSE_TPE GET_POS_TPE SET_EPOS_TPE
COPY_TPE GET_POS_TYP SET_JPOS_TPE
CREAR_TPE GET_TPE_CMT SET_POS_TPE
DEL_INST_TPE GET_TPE_PRM SET_TPE_CMT
GET_ATTR_PRG OPEN_TPE SET_TRNS_TPE
GET_JPOS_TPE SELECT_TPE

Traducir TRADUCIR

A-16
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

Cuadro A–7. Resumen de rutinas integradas de KAREL (continuación)

Categoría identificador

Interfaz de usuario ACT_PANTALLA DET_VENTANA INI_DYN_DISS


ADD_DICT DISCTRL_ALPH INIT_TBL
DISCTRL_FORM POP_KEY_RD
ACT_TABLA DISCTRL_LIST PUSH_KEY_RD
ATT_WINDOW_D DISCTRL_PLMN LEER_DICT
ATT_WINDOW_S DISCTRL_SBMN LEER_DICT_V
CHECK_DICT DISCTRL_TBL LEER_KB
CNC_DYN_DISB FORCE_SPMENÚ REMOVE_DICT
CNC_DYN_DISE INI_DYN_DISB SET_CURSOR
CNC_DYN_DISI INI_DYN_DISE SET_LANG
CNC_DYN_DISP INI_DYN_DISI ESCRIBIR_DICT
CNC_DYN_DISR INI_DYN_DISP ESCRIBIR_DICT_V
CNC_DYN_DIS INI_DYN_DISR
DEF_PANTALLA
DEF_VENTANA

Vector ACERCARSE ORIENTAR

Operación de visión V_CAM_CALIB V_INIT_QUEUE V_START_VTRK


V_GET_OFFSET V_STOP_VTRK
V_GET_PASSFL V_OVERRIDE VREG_FND_POS
VREG_OFFSET
V_GET_QUEUE V_RALC_QUEUE
V_RUN_FIND
V_SET_REF

Tabla A–8. Elementos

Elemento de entrada/salida CR

Cuadro A–9. Declaraciones

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

Cuadro A–9. Declaraciones (continuación)

Declaración CONNECT TIMER


Declaración DELAY
CONDICIÓN DE DESHABILITACIÓN Declaración
TEMPORIZADOR DE DESCONEXIÓN Declaración
HABILITAR CONDICIÓN Declaración
PARA..ENDFOR Declaración
IR Declaración
MANTENER Declaración
SI..ENDIF Declaración
ABIERTO EXPEDIENTE Declaración

ABIERTO MANODeclaración

PAUSA Declaración
PROGRAMA Declaración
LEGUMBRES Declaración

PURGA CONDICIÓN Declaración


LEER Declaración
RELAX Declaración MANO
LIBERAR Declaración
REPETIR HASTA Declaración
REANUDAR Declaración
DEVOLVER Declaración
RUTINA Declaración
SELECCIONAR..FIN SELECCIONAR Declaración
Declaración de EVENTO DE SEÑAL
Declaración DETENER
Declaración UNHOLD
Declaración USING..ENDUSING
Declaración WAIT FOR
MIENTRAS...FINALIZA Declaración
ESCRIBIR declaración

A.2 - A - DESCRIPCIÓN DEL IDIOMA KAREL

A.2.1 ABORTAR Acción

Objetivo:Cancela la ejecución de una tarea en ejecución o en pausa

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.

• Si no se especifica PROGRAM[n], se cancela la ejecución de la tarea actual.

Ver también:GET_TSK_INFO Integrado

Capítulo 6MANEJADORES DE CONDICIONES

Ejemplo:Referirse aSección B.6, "Programa de manejadores de condiciones y variables de ruta


(PTH_MOVE.KL)", para obtener un ejemplo de programa detallado.

A.2.2 ABORTAR Condición

Objetivo:Supervisa el aborto de la ejecución de tareas

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.

• Si no se especifica PROGRAM [n], se utiliza el número de tarea actual.

• Las acciones que son llamadas de rutina no se ejecutarán si se cancela la ejecución de la tarea.

• La condición ABORT puede ir seguida de la cláusula PROGRAM[n], donde n es el número de tarea a


monitorear. Utilice GET_TSK_INFO para obtener un número de tarea.

Ver también:CONDICIÓN ... Declaración ENDCONDITION, GET_TSK_INFO incorporado,Capítulo 6 MANEJADORES


DE CONDICIONES,Apéndice E, “Diagramas de sintaxis”, para obtener información adicional sobre la sintaxis

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.6, "Programa de manejadores de condiciones y variables de ruta" (PTH_MOVE.KL)

Sección B.10, "Uso de pantallas dinámicas incorporadas" (DYN_DISP.KL)

A.2.3 Declaración ABORTAR

Objetivo:Termina la ejecución de la tarea y cancela cualquier movimiento en curso (o pendiente)

Sintaxis:ABORTAR <PROGRAMA[n]>

• Después de ABORT, el programa no se puede reanudar. Debe ser reiniciado.

A–19
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

• La instrucción puede ir seguida de la cláusula PROGRAM[n], donde n es el número de tarea que se


cancelará.

Ver también:, “Diagramas de sintaxis”, para obtener información adicional sobre la sintaxis.

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.2, "Copiar variables de ruta" (CPY_PTH.KL)

Sección B.6, "Programa de manejadores de condiciones y variables de ruta" (PTH_MOVE.KL)

Sección B.12, "Visualización de una lista desde un archivo de diccionario" (DCLST_EX.KL)

Sección B.1, "Configuración de puertos de salida digital para monitoreo" (DOUT_EX.KL)

A.2.4 Procedimiento integrado ABORT_TASK

Objetivo:Anula la tarea en ejecución o en pausa especificada

Sintaxis:ABORT_TASK(nombre_tarea, force_sw, cancel_mtn_sw, estado)

Parámetros de entrada/salida:

[en] nombre_tarea :STRING

[en] force_sw :BOOLEANO

[en] cancel_mtn_sw :BOOLEANO

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :MULTI

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.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ver también:CONT_TASK, RUN_TASK, PAUSE_TASK procedimientos integrados, acción


NO_ABORT, directiva de traductor %NO_ABORT,capitulo 16MULTITAREA

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.

A.2.5 ABS función integrada

Objetivo:Devuelve el valor absoluto del argumento x, que puede ser una expresión INTEGER
o REAL

Sintaxis:ABS(x)

Tipo de retorno de función: ENTERO o REAL

Parámetros de entrada/salida:

[en] x :INTEGER o expresión REAL

%ENTORNO Grupo :SISTEMA

Detalles:

• Devuelve el valor absoluto de x, con el mismo tipo de datos que x.

Ejemplo:Referirse aSección B.7, "Listado de archivos y programas y manipulación de cadenas


(LIST_EX.KL)", para obtener un ejemplo de programa detallado.

A.2.6 Función integrada ACOS

Objetivo:Devuelve el arcocoseno (cos-1) en grados del argumento especificado

Sintaxis:ACOS(x)

Tipo de retorno de función: REAL

Parámetros de entrada/salida:

[en] x :REAL

%ENTORNO Grupo :SISTEMA

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.

Función integrada ACOS


rutina tomar_acos
variable

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.

Función integrada ACOS


rutina tomar_acos
variable

respuesta_r: real
empezar
ans_r = acos (-1.5) -- hace que el programa aborte ESCRIBIR
('acos -1.5 ', ans_r, CR)
FIN take_acos

A.2.7 Procedimiento integrado ACT_SCREEN

Objetivo:Activa una pantalla

Sintaxis:ACT_PANTALLA

Parámetros de entrada/salida:

[en] nombre_pantalla :STRING

[fuera] old_screen_n :STRING

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :PBCORE

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

MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

• Nombre de pantalladebe ser una cadena que contenga el nombre de una pantalla previamente definida,
consulte DEF_SCREEN Built-in.

• El nombre de la pantalla que esto reemplaza se devuelve envieja_pantalla_n.

• 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.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ver también:Procedimiento integrado DEF_SCREEN

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.12, "Visualización de una lista desde un archivo de diccionario" (DCLST_EX.KL)

A.2.8 Procedimiento integrado ACT_TBL

Objetivo:Actúa sobre una tecla mientras muestra una tabla en el colgante de enseñanza

Sintaxis:ACT_TBL(acción, def_item, table_data, term_char, added_wind, estado)

Parámetros de entrada/salida:

[entrada,salida] acción :INTEGER

[entrada,salida] def_item :INTEGER

[entrada,salida] table_data :XWORK_T

[fuera] term_char :INTEGER

[fuera] adjuntar_viento :BOOLEANO

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :UIF

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:

— ky_undef - No se presionó ningún carácter de terminación

— ky_select: se seleccionó un elemento seleccionable

— key_new_menu - Se seleccionó un nuevo menú

— ky_f1 a ky_f10 - Se seleccionó una tecla de función

• 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.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ejemplo:Consulte el ejemplo para el INIT_TBL integrado,Sección A.10.12.

A.2.9 Procedimiento integrado ADD_BYNAMEPC

Objetivo:Para agregar un valor entero, real o de cadena en un byte KAREL dado un búfer de datos.

Sintaxis:ADD_BYNAMEPC(dat_buffer, dat_index, prog_name, var_name, estado)

A–24
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

Parámetros de entrada/salida:

[en] dat_buffer :ARRAY DE BYTE

[entrada,salida] dat_index :INTEGER

[en] nombre_del_programa :STRING

[en] nombre_var :CADENA

[fuera] estado: ENTERO

%ENTORNO Grupo :PC

Detalles:

• búfer_dat-una matriz de hasta 244 bytes.

• índice_dat-el número de byte inicial para colocar el valor de cadena.

• prog_name-especifica el nombre del programa que contiene la variable especificada.

• 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).

• estado-el estado de la operación intentada. Si no es 0, entonces ocurrió un error y los datos no


se colocaron en el búfer.

El ADD_BYNAMEPC incorporado agrega valores enteros, reales y de cadena al búfer de datos de la


misma manera que los incorporados de KAREL ADD_INTPC, ADD_REALPC y ADD_STRINGPC.

Ver también:ADD_BYNAMEPC, ADD_INTPC, ADD_REALPC, ADD_STRINGPC

Ejemplo:Consulte lo siguiente para ver un ejemplo de ADD_BYNAMEPC integrado.

Procedimiento integrado ADD_BYNAMEPC


PRUEBA DEL PROGRAMA POR NM

%AMBIENTE ordenador personal

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

A.2.10 Procedimiento integrado ADD_DICT

Objetivo:Agrega el diccionario especificado al idioma especificado.

Sintaxis:ADD_DICT(nombre_archivo, nombre_dict, nombre_idioma, opción_añadir, estado)

Parámetros de entrada/salida:

[en] nombre_archivo :STRING

[en] dict_name :CADENA

[en] nombre_idioma :STRING

[en] add_option :INTEGER

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :PBCORE

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.

• nombre_idiomaespecifica a qué idioma se agregará el diccionario. Se debe utilizar una de las


siguientes constantes predefinidas:

dp_predeterminado

dp_inglés

dp_japonés

dp_frances

dp_german

dp_español

• Se debe usar el idioma predeterminado a menos que se requiera más de un idioma.

• añadir_opcióndebe ser el siguiente:

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.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, se produjo un error al agregar el


archivo de diccionario.

Ver también:Procedimientos integrados READ_DICT, WRITE_DICT, REMOVE_DICT,Capítulo 10


DICCIONARIOS Y FORMULARIOS

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.12, "Visualización de una lista desde un archivo de diccionario" (DCLST_EX.KL)

Sección B.12, "Archivos de diccionario" (DCALPHEG.UTX)

A.2.11 Procedimiento integrado ADD_INTPC

Objetivo:Para agregar un valor INTEGER (escriba 16 - 10 HEX) en un búfer de datos de bytes KAREL.

Sintaxis:ADD_INTPC(dat_buffer, dat_index, número, estado)

Parámetros de entrada/salida:

[en] dat_buffer :ARRAY DE BYTE

[entrada,salida] dat_index :INTEGER

[en] número: ENTERO

[fuera] estado: ENTERO

%ENTORNO Grupo :PC

Detalles:

• búfer_dat-una matriz de hasta 244 bytes.

• índice_dat-el número de byte inicial para colocar el valor entero.

• número-el valor entero para colocar en el búfer.


• estado-el estado de la operación intentada. Si no es 0, entonces ocurrió un error y los datos no se
colocaron en el búfer.

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):

índice inicial = índice_dat

A–27
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

2 bytes - tipo variable

4 bytes - el número

2 bytes de cero (0) - marcador de fin de búfer

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 10=tipo de variable INTEGER

0 0 0 5=número entero 5

0 0=fin de los datos en el búfer

Al regresar del incorporado, índice = 7.

Ver también:ADD_BYNAMEPC, ADD_INTPC, ADD_REALPC, ADD_STRINGPC

Ejemplo:Consulte el ejemplo TESTDATA en la función integrada SEND_DATAPC.

A.2.12 Procedimiento integrado ADD_REALPC

Objetivo:Para agregar un valor REAL (escriba 17 - 11 HEX) en un búfer de datos de bytes KAREL.

Sintaxis:ADD_REALPC(dat_buffer, dat_index, número, estado)

Parámetros de entrada/salida:

[en] dat_buffer :ARRAY DE BYTE

[entrada,salida] dat_index :INTEGER

[en] número :REAL

[fuera] estado: ENTERO

%ENTORNO Grupo :PC

Detalles:

• búfer_dat-una matriz de hasta 244 bytes.

• índice_dat-el número de byte inicial para colocar el valor real.

A–28
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

• número-el valor real para colocar en el búfer.


• estado-el estado de la operación intentada. Si no es 0, entonces ocurrió un error y los datos no
se colocaron en el búfer.

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):

índice inicial = índice_dat

2 bytes - tipo variable

4 bytes - el número

2 bytes de cero (0) - marcador de fin de búfer

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:

0 11=Tipo de variable REAL

43 CA CC CD=número real 345.600006

0 0=fin de los datos en el búfer

Al regresar del incorporado, índice = 7.

Ver también:ADD_BYNAMEPC, ADD_INTPC, ADD_REALPC, ADD_STRINGPC

Ejemplo:Consulte el ejemplo TESTDATA en la función integrada SEND_DATAPC.

A.2.13 Procedimiento integrado ADD_STRINGPC

Objetivo:Para agregar un valor de cadena (tipo 209 - D1 HEX) en un búfer de datos de bytes KAREL.

Sintaxis:ADD_STRINGPC(dat_buffer, dat_index, elemento, estado)

Parámetros de entrada/salida:

[en] dat_buffer :ARRAY DE BYTE

[entrada,salida] dat_index :INTEGER

A–29
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

[en] artículo: cadena

[fuera] estado: ENTERO

%ENTORNO Grupo :PC

Detalles:

• búfer_dat-una matriz de hasta 244 bytes.

• índice_dat-el número de byte inicial para colocar el valor de cadena.

• artículo-el valor de cadena para colocar en el búfer.

• estado-el estado de la operación intentada. Si no es 0, entonces ocurrió un error y los datos no


se colocaron en el búfer.

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 STRING se agregan al búfer de la siguiente manera:

índice inicial = índice_dat

2 bytes - tipo variable

1 byte - longitud de la cadena de texto

bytes de texto

2 bytes de cero (0) - marcador de fin de búfer

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:

0 D1=STRING tipo de variable

7=hay 7 caracteres en la cadena 'MHSHELL'

4D 48 53 48 45 4C 4C 0= 'MHSHELL' con final de cadena 0

0 0=fin de los datos en el búfer

Al regresar del incorporado, índice = 12.

Ver también:ADD_BYNAMEPC, ADD_INTPC, ADD_REALPC, ADD_STRINGPC

A–30
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

Ejemplo:Consulte el ejemplo TESTDATA en la función integrada SEND_DATAPC.

A.2.14 %ALPHABETIZE Directiva de traductor

Objetivo:Especifica que las variables estáticas se crearán en orden alfabético cuando se cargue el código p.

Sintaxis:%ALFABETIZAR

Detalles:

• Las variables estáticas se pueden declarar en cualquier orden en un programa KAREL y


%ALPHABETIZE hará que se muestren en orden alfabético en el menú DATA o en la lista KCL> SHOW
VARS.

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.2, "Copiar variables de ruta" (CPY_PTH.KL)

Sección B.5, "Uso de registros integrados" (REG_EX.KL)

Sección B.6, "Programa de manejadores de condiciones y variables de ruta" (PTH_MOVE.KL)

Sección B.10, "Uso de pantallas dinámicas incorporadas" (DYN_DISP.KL)

Sección B.12, "Visualización de una lista desde un archivo de diccionario" (DCLST_EX.KL)

A.2.15 Procedimiento integrado APPEND_NODE

Objetivo:Agrega un nodo no inicializado al final del argumento PATH

Sintaxis:APPEND_NODE(ruta_var, estado)

Parámetros de entrada/salida:

[en] path_ var :RUTA

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :PBCORE

Detalles:

• ruta_vares la variable de ruta a la que se adjunta el nodo.

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.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ver también:Procedimientos incorporados DELETE_NODE, INSERT_NODE

Ejemplo:Referirse aSección B.2, "Copia de variables de ruta" (CPY_PTH.KL), para ver un ejemplo de programa
detallado.

A.2.16 Procedimiento integrado APPEND_QUEUE

Objetivo:Agrega una entrada a una cola si la cola no está llena

Sintaxis:APPEND_QUEUE(valor, cola, datos_cola, número_secuencia, estado)

Parámetros de entrada/salida:

[en] valor: ENTERO

[entrada,salida] cola :QUEUE_TYPE

[entrada, salida] cola_datos :ARRAY OF INTEGER

[fuera] secuencia_no :INTEGER

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :PBQMGR

Detalles:

• valorespecifica el valor que se agregará a la cola.


• colaespecifica la variable de cola para la cola.
• cola_datosespecifica la matriz utilizada para contener los datos en la cola. La longitud de esta matriz
determina el número máximo de entradas en la cola.

• secuencia_nose devuelve con el número de secuencia de la entrada que se acaba de añadir.

• 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

A.2.17 APROXIMACIÓN Función incorporada

Objetivo:Devuelve un VECTOR unitario que representa el eje z de un argumento POSICIÓN

Sintaxis:APROXIMACIÓN (posición)

Tipo de retorno de función: VECTOR

Parámetros de entrada/salida:

[en] posición :POSICIÓN

%MEDIO AMBIENTE Grupo :VECTR

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

app_vector = ENFOQUE (start_pos) - - establece app_vector igual al


- - eje z de start_pos
start_pos.ubicación = start_pos.ubicación + app_vector *500
- - crea start_pos + 500 mm
- - en dirección z
FIN p_enfoque

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.)

A.2.18 ARRAY Tipo de datos

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

tamaño : un INTEGER literal o constante

data_type : cualquier tipo excepto PATH

Detalles:

• Tallaindica el número de elementos en una variable ARRAY.


• Talladebe estar en el rango de 1 a 32767 y debe especificarse en una declaración de variable ARRAY
normal. La cantidad de memoria disponible en su controlador puede restringir el tamaño máximo de un
ARRAY.

• 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.

• Cada elemento es del mismo tipo designado portipo de datos.

• 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

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.2, "Copiar variables de ruta" (CPY_PTH.KL)

Sección B.8, "Generación y movimiento a lo largo de una ruta hexagonal" (GEN_HEX.KL)

Sección B.9, "Uso de las funciones integradas de archivo y dispositivo" (FILE_EX.KL)

Sección B.12, "Visualización de una lista desde un archivo de diccionario" (DCLST_EX.KL)

Sección B.14, "Aplicación de compensaciones a un programa de Teach Pendant copiado" (CPY_TP.KL)

A–34
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

A.2.19 Función integrada ARRAY_LEN

Objetivo:Devuelve el número de elementos contenidos en el argumento de matriz especificado

Sintaxis:ARRAY_LEN(var_ario)

Tipo de retorno de función: ENTERO

Parámetros de entrada/salida:

[en] ary_var :ARRAY

%ENTORNO Grupo :SISTEMA

• El valor devuelto es el número de elementos declarados paraary_var,no el número de elementos


que se han inicializado enary_var.

Ejemplo:Referirse aSección B.7, "Listado de archivos y programas y manipulación de


cadenas" (LIST_EX.KL), para ver un ejemplo de programa detallado.

A.2.20 Función incorporada ASIN

Objetivo:Devuelve el arcoseno (sen-1) en grados del argumento especificado

Sintaxis:ASIN(x)

Tipo de retorno de función: REAL

Parámetros de entrada/salida:

[en] x :REAL

%ENTORNO Grupo :SISTEMA

Detalles:

• Devuelve el arcoseno de x.

• x debe estar entre -1 y 1, de lo contrario, el programa se cancelará con un error.

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.

Función incorporada ASIN


RUTINA tomar_asin
VAR
respuesta_r: REAL

A–35
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

EMPEZAR

respuesta_r = ASIN (-1)


ESCRIBIR ('asin -1 ', ans_r, CR) FIN
tomar_asin

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.

Función incorporada ASIN


RUTINA tomar_asin
VAR
respuesta_r: REAL
EMPEZAR
ans_r = ASIN (-1.5) -- hace que el programa aborte WRITE
('asin -1.5 ', ans_r, CR)
FIN take_asin

A.2.21 Acción de asignación

Objetivo:Establece el valor de una variable al resultado de una expresión evaluada

Sintaxis:variable {[subíndice{,subíndice}]| . campo} = gasto

dónde:

variable : cualquier variable KAREL

subíndice: una expresión INTEGER

expn : una expresión KAREL válida

campo: cualquier campo de una variable estructurada

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.

• subíndicese utiliza para acceder a los elementos de una matriz.

• fivejezse utiliza para acceder a los campos de una estructura.

• gastodebe ser del mismo tipo que la variable o elemento devariable.

• 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

A.2.22 Sentencia de asignación

Objetivo:Establece el valor de una variable al resultado de una expresión evaluada

Sintaxis:variable {[subíndice{,subíndice}]| . campo} = gasto

dónde:

variable : cualquier variable KAREL

subíndice: una expresión INTEGER

expn : una expresión KAREL válida

campo: cualquier campo de una variable estructurada

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.

• subíndicese utiliza para acceder a los elementos de una matriz.

• fivejezse utiliza para acceder a los campos de una estructura.

• gastodebe ser del mismo tipo que la variable o elemento devariable.

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

A.2.23 Función integrada ATAN2

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)

Tipo de retorno de función: REAL

Parámetros de entrada/salida:

[en] x1 :REAL

[en] y1 :REAL

%ENTORNO Grupo :SISTEMA

Detalles:

• x1yy1especificar las coordenadas x e y del punto.


• Six1yy1son ambos cero, el intérprete abortará el programa.

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.

Función integrada ATAN2


PROGRAMA p_atan2
VAR
p1: POSICIÓN
x, y, z, dirección: REAL
EMPEZAR

X = 100 -- uso apropiado valores


y = 200 -- por x, y, z en
z = 300 -- su robot
dirección = ATAN2(x, y)
p1 = POS(x, y, z, 0, 0, dirección, 'n') --r componente de orientación
- - de POS es igual al ángulo
FIN p_atan2 - - devuelto por ATAN2(100,200)

A–39
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

A.2.24 Declaración ADJUNTA

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

programación se deshabilite. El estado de la tarea mostrará una retención de "adjuntar hecho".

• 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.

A.2.25 Procedimiento integrado ATT_WINDOW_D

Objetivo:Adjunte una ventana a la pantalla en un dispositivo de visualización

Sintaxis:ATT_WINDOW_D(nombre_ventana, disp_dev_nam, fila, columna, nombre_pantalla, estado)

Parámetros de entrada/salida:

[en] nombre_ventana :STRING

[en] disp_dev_nam :CADENA

[en] fila: ENTERO

[en] col :ENTERO

[fuera] screen_name :STRING

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :PBCORE

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.

• nombre_ventanadebe ser una ventana previamente definida.

• disp_dev_namdebe ser uno de los dispositivos de visualización ya definidos:

Dispositivo CRT 'CRT'

Dispositivo colgante de enseñanza 'TP'

• 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.

• Es un error si la ventana ya está adjunta a la pantalla.


• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

A.2.26 Procedimiento integrado ATT_WINDOW_S

Objetivo:Adjuntar una ventana a una pantalla

Sintaxis:ATT_WINDOW_S(nombre_ventana, nombre_pantalla, fila, columna, estado)

Parámetros de entrada/salida:

[en] nombre_ventana :STRING

[en] nombre_pantalla :STRING

[en] fila: ENTERO

[en] col :ENTERO

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :PBCORE

Detalles:

• Hace que los datos de la ventana especificada se muestren o adjunten a la pantalla especificada en una fila
y columna especificadas.

• nombre_ventanayNombre de pantalladeben ser nombres de ventanas y pantallas previamente definidos.

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.

• Es un error si la ventana ya está adjunta a la pantalla.


• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ver también:Sección 7.10, "Consejos sobre la interfaz de usuario", DET_WINDOW incorporado

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.2.27 Procedimiento integrado AVL_POS_NUM

Objetivo:Devuelve el primer número de posición disponible en un programa de consola portátil

Sintaxis:AVL_POS_NUM(open_id, pos_num, estado)

Parámetros de entrada/salida:

[en] id_abierto :INTEGER

[fuera] pos_num : ENTERO

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :TPE

Detalles:

• id_abiertoespecifica el programa del Teach Pendant abierto. Se debe abrir un programa antes de llamar a este
incorporado.

• pos_numse establece en el primer número de posición disponible.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ha ocurrido un error.

Ejemplo:Referirse aSección B.14, "Aplicación de compensaciones a un programa de Teach Pendant


copiado" (CPY_TP.KL), para ver un ejemplo de programa detallado.

A–42
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

A.3 - B - DESCRIPCIÓN DEL IDIOMA KAREL

A.3.1 Tipo de datos BOOLEAN

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.

Cuadro A–10. Valores BOOLEAN válidos y no válidos

VÁLIDO INVÁLIDO RAZÓN

CIERTO T Debe usar la palabra completa

EN 1 No se pueden usar valores INTEGER

• 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.

• Los operadores BOOLEAN válidos son

— Y, O, y NO
— Operadores relacionales (>, >=, =, <>, < y <=)

• Los siguientes tienen valores BOOLEAN:

— Constantes BOOLEAN, ya sean predefinidas o definidas por el usuario (por ejemplo, ON es una constante
predefinida)

— Variables BOOLEAN y campos BOOLEAN en una estructura

— ARRAY DE elementos BOOLEAN


— Valores devueltos por funciones BOOLEANAS, ya sean definidas por el usuario o integradas (por ejemplo,
IN_RANGE(pos_var))

— 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

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.2, "Copiar variables de ruta" (CPY_PTH.KL)

Sección B.3, "Guardar datos en el dispositivo predeterminado" (SAVE_VR.KL)

Sección B.5, "Uso de registros incorporados" (REG_EX.KL)

Sección B.7, "Listado de archivos y programas y manipulación de cadenas" (LIST_EX.KL)

Sección B.9, "Uso de las funciones integradas de archivo y dispositivo" (FILE_EX.KL)

Sección B.10, "Uso de pantallas dinámicas incorporadas" (DYN_DISP.KL)

Sección B.12, "Visualización de una lista desde un archivo de diccionario" (DCLST_EX.KL)

Sección B.14, "Aplicación de compensaciones a un programa de Teach Pendant copiado" (CPY_TP.KL)

Sección B.1, "Configuración de puertos de salida digital para monitoreo" (DOUT_EX.KL)

A.3.2 Función integrada BYNAME

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.

Sintaxis:BYNAME (prog_name, var_name, entrada)

Parámetros de entrada/salida:

[en] nombre_del_programa :STRING

[en] nombre_var :CADENA

[entrada,salida] entrada :INTEGER

%MEDIO AMBIENTE Grupo :sistema

Detalles:

• Este incorporado solo se puede usar para pasar un parámetro a una rutina KAREL.

• entradadevuelve el número de entrada en la tabla de datos variables dondenombre_varse encuentra. Esta


variable no necesita inicializarse y no debe modificarse.

• 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

• nombre_vardebe hacer referencia a una variable de programa estática.

• 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.

• Las variables del sistema no se pueden pasar mediante BYNAME.

• 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.

A.3.3 Tipo de datos BYTE

Objetivo:Define una variable como un tipo de datos BYTE

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.

Tipo de datos BYTE


PROGRAMA byte_ex
%NOLOCKGROUP
ESCRIBE

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

A.3.4 Procedimiento integrado BYTES_AHEAD

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.

Sintaxis:BYTES_AHEAD(file_id, n_bytes, estado)

Parámetros de entrada/salida:

[en] id_archivo :ARCHIVO

[fuera] n_bytes: ENTERO

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :FLBT

Detalles:

• file_idespecifica el archivo que se abrió.

• losfile_iddebe abrirse con el atributo ATR_READAHD establecido en un valor mayor que cero.

• n_bytees el número de bytes en el búfer de lectura anticipada.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

• Se devolverá un estado distinto de cero para dispositivos no seriales, como archivos.

Ver también:Sección 7.3.1, “Atributos de archivo”

Ejemplo:El siguiente ejemplo borrará el Puerto 2 (FLPY:) de cualquier byte que aún quede por leer.

Procedimiento integrado BYTES_AHEAD


RUTINA puerto_purga
VAR
s1 : CADENA[1]
n_intentar : ENTERO
n_bytes : ENTERO
estadística : ENTERO
EMPEZAR
stat=SET_PORT_ATR (port_2, ATR_READAHD, 1) -- establece FLPY: para tener una lectura
- - búfer por delante de 128 bytes
ABRIR ARCHIVO fi('RO', 'rdahd.tst')
REPETIR
BYTES_AHEAD (fi, n_bytes, estadística)
- - Obtener el número de bytes listos
- - ser leído

A–46
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

si (n_bytes = 0) entonces - - si no hay bytes, establezca stat


estadística = 282
terminara si

si (n_bytes >= 1_) entonces - - hay bytes para leer


leer fi(s1::1) - - leer en un byte a la vez
stat=io_status (fi) - - obtener el estado de la operación de lectura
terminara si

HASTA estadística <> 0 - - continuar hasta que no queden más bytes


END purge_port
EMPEZAR

- - texto del programa principal aquí


END bytes_ahd

A.3.5 Función integrada BYTES_LEFT

Objetivo:Devuelve el número de bytes restantes en el registro de datos de entrada actual

Sintaxis:BYTES_LEFT(id_archivo)

Tipo de retorno de función: ENTERO

Parámetros de entrada/salida:

[en] id_archivo :ARCHIVO

%MEDIO AMBIENTE Grupo :FLBT

Detalles:

• file_idespecifica el archivo que se abrió.

• 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.

Función integrada BYTES_LEFT


PROGRAMA p_bytes restantes
%NOLOCKGROUP
%AMBIENTE flbt
CONSTITUCIÓN

predeterminado_1 = 0
predeterminado_2 = -1
VAR rqd_field, opt_field_1, opt_field_2: INTEGER BEGIN

WRITE('Ingrese campo(s) entero(s): ')


READ(rqd_field)
SI BYTES_LEFT (PANTALLA TP) > 0 ENTONCES
LEER (opt_field_1)
MÁS
opt_field_1 = predeterminado_1
ENDIF
SI BYTES_LEFT (PANTALLA TP) > 0 ENTONCES
LEER (opt_field_2)
MÁS
opt_field_2 = default_2 ENDIF

FIN p_bytes restantes

A.4 - C - DESCRIPCIÓN DEL IDIOMA KAREL

A.4.1 Procedimiento integrado CALL_PROG

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:

[en] nombre_del_programa :STRING

[entrada,salida] prog_index :INTEGER

%MEDIO AMBIENTE Grupo :PBCORE

Detalles:

• prog_namees el nombre del programa a ejecutar, en la tarea de llamada actual.

• prog_indexdevuelve el número de entrada en la tabla del programa dondeprog_namese


encuentra. Esta variable no necesita inicializarse y no debe modificarse.

• CALL_PROG no se puede utilizar para ejecutar rutinas internas o externas.

Ver también:Funciones integradas CURR_PROG y CALL_PROGLIN

Ejemplo:Referirse aSección B.2, "Copia de variables de ruta" (CPY_PTH.KL), para ver un ejemplo de programa
detallado.

A.4.2 Procedimiento integrado CALL_PROGLIN

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.

Sintaxis:CALL_PROGLIN(prog_name, prog_line, prog_index, pause_entry)

Parámetros de entrada/salida:

[en] nombre_del_programa :STRING

[en] prog_line :INTEGER

[entrada,salida] prog_index :INTEGER

[en] pausa_entrada :BOOLEANO

%MEDIO AMBIENTE Grupo :BYNAM

Detalles:

• prog_namees el nombre del programa a ejecutar, en la tarea de llamada actual.

• prog_lineespecifica la línea en la que se inicia la ejecución de un programa de consola portátil. 0 o 1 se


utiliza para el comienzo del programa.

A–49
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

• Los programas KAREL siempre se ejecutan al principio del programa.

• prog_indexdevuelve el número de entrada en la tabla del programa dondeprog_namese


encuentra. Esta variable no necesita inicializarse y no debe modificarse.

• pausa_entradaespecifica si pausar la ejecución del programa al ingresar el programa.

• CALL_PROGLIN no se puede utilizar para ejecutar rutinas internas o externas.

Ver también:Función integrada CURR_PROG y CALL_PROG

Ejemplo:Referirse aSección B.5, "Uso de registros integrados" (REG_EX.KL), para ver un ejemplo de programa
detallado.

A.4.3 CANCELAR Acción

Objetivo:Termina cualquier movimiento en curso

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.

• Las mociones canceladas se tratan como completadas y no se pueden reanudar.

• La acción CANCELAR en un controlador de condición global cancela cualquier movimiento pendiente.

A.4.4 Declaración de CANCELAR

Objetivo:Finaliza cualquier moción en curso.

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.

• Las mociones canceladas se tratan como completadas y no se pueden reanudar.

• 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.

• El movimiento no se puede cancelar para una tarea diferente.

Ver también:Apéndice E, “Diagramas de sintaxis”, para obtener información adicional sobre la sintaxis

A.4.5 Declaración de CANCELAR ARCHIVO

Objetivo:Cancela una instrucción READ o WRITE que está en curso.

Sintaxis:CANCELAR ARCHIVO [file_var]

dónde:

file_var: una variable de ARCHIVO

Detalles:

• Se utiliza para cancelar la entrada o salida en un archivo específico

• 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.

Ver también:Función integrada IO_STATUS,Capítulo 7OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS, Apéndice E,


“Diagramas de sintaxis”, para obtener información adicional sobre la sintaxis

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.

Declaración de CANCELAR ARCHIVO


PROGRAMA can_file_ex
%AMBIENTE FLBT
%AMBIENTE UIF
%NOLOCKGROUP
VAR
int_var: ENTERO
RUTINA cancelar_leer
EMPEZAR

CANCELAR ARCHIVO TPDISPLAY


FINAL cancelar_leer
EMPEZAR

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

A.4.6 Procedimiento integrado CHECK_DICT

Objetivo:Comprueba el diccionario especificado para un elemento especificado

Sintaxis:CHECK_DICT(dict_name, element_no, status)

Parámetros de entrada/salida:

[en] dict_name :CADENA

[en] número_elemento :CADENA

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :UIF

A–52
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

Detalles:

• nombre_dictes el nombre del diccionario a comprobar.

• elemento_noes el número de elemento dentro del diccionario.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces no se pudo encontrar el


elemento.

Ver también:ADD_DICT, READ_DICT, WRITE_DICT, REMOVE_DICT Procedimientos integrados. Consulte el


ejemplo de programa para el procedimiento integrado DISCTRL_LIST yCapítulo 10DICCIONARIOS Y
FORMULARIOS

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.4.7 Procedimiento integrado CHECK_EPOS

Objetivo:Comprueba que la posición especificada es válida y que no se generarán errores de movimiento


al moverse a esta posición

Sintaxis:CHECK_EPOS (eposn, uframe, utool, estado <, group_no>)

Parámetros de entrada/salida:

[en] eposn :XYZWPREXT

[en] uframe :POSICIÓN

[en] utool :POSICIÓN

[fuera] estado: ENTERO

[en] grupo_no :INTEGER

%MEDIO AMBIENTE Grupo :PBCORE

Detalles:

• eposnes la posición XYZWPREXT a comprobar.


• uframeespecifica la posición de uframe para usar conepos.

• utoolespecifica la posición de utool para usar conepos.

• estadoexplica el estado del cheque. Si la posición es alcanzable, el estado será 0.


• grupo_noes opcional, pero si se especifica será el número de grupo paraeposn.Si no se especifica, se utiliza el
grupo predeterminado del programa.

A–53
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

Ver también:GET_POS_FRM

Ejemplo:Referirse aSección B.8(GEN_HEX.KL)

A.4.8 Procedimiento integrado CHECK_NAME

Objetivo:Comprueba un archivo o nombre de programa especificado en busca de caracteres ilegales.

Sintaxis:CHECK_NAME (nombre_especificación, estado)

Parámetros de entrada/salida:

[en] especificación_nombre :STRING

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :FDEV

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*.

A.4.9 Función integrada CHR

Objetivo:Devuelve el carácter que corresponde a un código numérico

Sintaxis:CHR (código)

Tipo de retorno de función: CADENA

Parámetros de entrada/salida:

[en] código: ENTERO

%ENTORNO Grupo :SISTEMA

Detalles:

• códigorepresenta el código numérico del carácter para el juego de caracteres ASCII, gráfico o
multinacional.

• Devuelve una cadena de un solo carácter a la que se le asigna el valor decódigo.

A–54
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

Ver también:Apéndice D,“Códigos de caracteres ASCII”

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.4, "Rutinas estándar" (ROUT_EX.KL)

Sección B.5, "Uso de registros integrados" (REG_EX.KL)

Sección B.6, "Programa de manejadores de condiciones y variables de ruta" (PTH_MOVE.KL)

Sección B.13, "Uso de DISCTRL_ALPHA incorporado" (DCALP_EX.KL)

Sección B.14, "Aplicación de compensaciones a un programa de Teach Pendant copiado" (CPY_TP.KL)

Sección B.1, "Configuración de puertos de salida digital para monitoreo" (DOUT_EX.KL)

A.4.10 Procedimiento integrado CLEAR

Objetivo:Borra el programa especificado y/o las variables de la memoria

Sintaxis:CLEAR(file_spec, estado)

Parámetros de entrada/salida:

[en] especificación_archivo :CADENA

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :PBCORE

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

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ejemplo:El siguiente ejemplo borra un programa KAREL, borra las variables de un programa y borra
un programa de consola portátil.

Procedimiento integrado CLEAR


- - Borrar programa KAREL
CLEAR('test1.pc', estado)
- - Borrar variables KAREL
CLEAR('testvars.vr', status)

A–55
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

- - Borrar el programa Teach Pendant


CLEAR('prg1.tp', status)

A.4.11 Procedimiento integrado CLEAR_SEMA

Objetivo:Borre el semáforo indicado poniendo el conteo a cero

Sintaxis:CLEAR_SEMA(semaphore_no)

Parámetros de entrada/salida:

[en] semaphore_no :INTEGER

%MEDIO AMBIENTE Grupo :MULTI

Detalles:

• El semáforo indicado porsemáforo_nose borra


• semáforo_nodebe estar en el rango de 1 al número de semáforos definidos en el controlador.

• 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.

Ver también:POST_SEMA, procedimientos integrados PEND_SEMA, función integrada SEMA_COUNT,


ejemplos en el Capítulo 14, "Multitarea"

A.4.12 Declaración de CERRAR ARCHIVO

Objetivo:Rompe la asociación entre una variable FILE y un archivo de datos o puerto de comunicación

Sintaxis:CERRAR ARCHIVO file_var

dónde:

file_var: una variable de ARCHIVO

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.

• La función integrada IO_STATUS siempre devolverá cero.

A–56
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

Ver también:Función integrada IO_STATUS,Capítulo 7OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS, Apéndice E,


“Diagramas de sintaxis”, para obtener información adicional sobre la sintaxis

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.4.13 Declaración MANO CERRADA

Objetivo:Hace que la mano especificada se cierre

Sintaxis:CERRAR MANO hand_num

dónde:

hand_num :una expresión INTEGER

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.

Declaración MANO CERRADA


SET_POS_REG(1, p1, estado) move_pr – Llame al
programa TP para mover CERRAR MANO
hand_num

A.4.14 Procedimiento integrado CLOSE_TPE

Objetivo:Cierra el programa del Teach Pendant especificado

Sintaxis:CLOSE_TPE(open_id, estado)

Parámetros de entrada/salida:

A–57
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

[en] id_abierto :INTEGER

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :PBCORE

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.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ha ocurrido un error.

Ver también:Procedimiento integrado OPEN_TPE

Ejemplo:Referirse aSección B.14, "Aplicación de compensaciones a un programa de Teach Pendant


copiado" (CPY_TP.KL), para ver un ejemplo de programa detallado.

A.4.15 Procedimiento integrado CLR_IO_STAT

Objetivo:Borrar los resultados de la última operación en el argumento del archivo

Sintaxis:CLR_IO_STAT(id_archivo)

Parámetros de entrada/salida:

[en] id_archivo :ARCHIVO

%MEDIO AMBIENTE Grupo :PBCORE

Detalles:

• Provoca el resultado de la última operación enfile_id,que es devuelto por IO_STATUS, para ser borrado a cero.

Ver también:Función integrada I/O-STATUS

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.4.16 Procedimiento integrado CLR_PORT_SIM

Objetivo:Establece el puerto especificado para que no esté simulado

Sintaxis:CLR_PORT_SIM(tipo_puerto, número_puerto, estado)

A–58
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

Parámetros de entrada/salida:

[en] tipo_puerto :INTEGER

[en] port_no :INTEGER

[fuera] estado: ENTERO

%ENVIRONMENT Grupo :iosetup

Detalles:

• tipo_puertoespecifica el código para el tipo de puerto a dessimular. Los códigos se definen en


FR:KLIOTYPS.KL.

• port_noespecifica el número de puerto para anular la simulación.

• estadose devuelve con cero si los parámetros son válidos y se borra la simulación del puerto
especificado.

Ver también:Procedimientos incorporados GET_PORT_SIM, SET_PORT_SIM

A.4.17 Procedimiento integrado CLR_POS_REG

Objetivo:Elimina todos los datos del grupo especificado en el registro de posición especificado

Sintaxis:CLR_POS_REG(registrar_no, grupo_no, estado)

Parámetros de entrada/salida:

[en] número_de_registro :INTEGER

[en] grupo_no :INTEGER

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :REGOPE

Detalles:

• registro_noespecifica el número de registro cuyos datos deben ser borrados.

• Sigrupo_noes cero, se borran los datos de todos los grupos.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ver también:Procedimiento integrado SET_POS_REG, función integrada GET_POS_REG

Ejemplo:El siguiente ejemplo borra los primeros 100 registros de posición.

A–59
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

Procedimiento integrado CLR_POS_REG


PARA registro_no = 1 a 100 DO
CLR_POS_REG(registrar_no, 0, estado)
ENDFOR

A.4.18 Directiva de traductor %CMOSVARS

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.

Ver también:Sección A.10.2Cláusula IN DRAM

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.10, "Uso de funciones integradas de visualización dinámica" (DCLST_EX.KL)

Sección B.1, "Configuración de puertos de salida digital para monitoreo" (DOUT_EX.KL)

A.4.19 Directiva de traductor %CMOS2SHADOW

Objetivo:Indica al traductor que coloque todas las variables CMOS en la memoria Shadow

Sintaxis:%SOMBRA CMOS2

A.4.20 Procedimiento integrado CNC_DYN_DISB

Objetivo:Cancela la visualización dinámica en función del valor de una variable BOOLEAN en una ventana
específica.

Sintaxis:CNC_DYN_DISB (b_var, nombre_ventana, estado)

A–60
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

Parámetros de entrada/salida:

[en] b_var :BOOLEANO

[en] nombre_ventana :STRING

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :UIF

Detalles:

• b_vares la variable booleana cuya visualización dinámica se cancelará.

• nombre_ventanadebe ser un nombre de ventana previamente definido. VerSección 7.10.1. ySección


7.10.2para nombres de ventana predefinidos.

• 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.

Ver también:Procedimiento integrado INI_DYN_DISB

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.10, "Uso de pantallas dinámicas incorporadas" (DYN_DISP.KL)

Sección B.11, "Manipulación de valores de variables mostradas dinámicamente" (CHG_DATA.KL)

A.4.21 Procedimiento integrado CNC_DYN_DISE

Objetivo:Cancela la visualización dinámica en función del valor de una variable INTEGER en una ventana
específica.

Sintaxis:CNC_DYN_DISe (e_var, nombre_ventana, estado)

Parámetros de entrada/salida:

[en] e_var :ENTERO

[en] nombre_ventana :STRING

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :UIF

A–61
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

Detalles:

• e_vares la variable entera cuya visualización dinámica se cancelará.


• Consulte el procedimiento incorporado CNC_DYN_DISB para obtener una descripción de los otros parámetros enumerados
anteriormente.

Ver también:Procedimiento integrado INI_DYN_DISE

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.10, "Uso de pantallas dinámicas incorporadas" (DYN_DISP.KL)

Sección B.11, "Manipulación de valores de variables mostradas dinámicamente" (CHG_DATA.KL)

A.4.22 Procedimiento integrado CNC_DYN_DISI

Objetivo:Cancela la visualización dinámica de una variable INTEGER en una ventana específica.

Sintaxis:CNC_DYN_DISI(int_var, nombre_ventana, estado)

Parámetros de entrada/salida:

[en] int_var :ENTERO

[en] nombre_ventana :STRING

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :UIF

Detalles:

• int_vares la variable entera cuya visualización dinámica se cancelará.


• Consulte el procedimiento incorporado CNC_DYN_DISB para obtener una descripción de los otros parámetros enumerados

anteriormente.

Ver también:Procedimiento integrado INI_DYN_DISI

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.10, "Uso de pantallas dinámicas incorporadas" (DYN_DISP.KL)

Sección B.11, "Manipulación de valores de variables mostradas dinámicamente" (CHG_DATA.KL)

A–62
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

A.4.23 Procedimiento integrado CNC_DYN_DISP

Objetivo:Cancela la visualización dinámica en función del valor de un puerto en una ventana específica.

Sintaxis:CNC_DYN_DISP(tipo_puerto, número_puerto, nombre_ventana, estado)

Parámetros de entrada/salida:

[en] tipo_puerto :INTEGER

[en] port_no :INTEGER

[en] nombre_ventana :STRING

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :UIF

Detalles:

• tipo_puertoyport_noson valores enteros que especifican el puerto cuya visualización dinámica se


cancelará.

• Consulte el procedimiento incorporado CNC_DYN_DISB para obtener una descripción de los otros parámetros enumerados

anteriormente.

Ver también:Procedimiento integrado INI_DYN_DISP para obtener información sobretipo_puertocódigos.

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.10, "Uso de pantallas dinámicas incorporadas" (DYN_DISP.KL)

Sección B.11, "Manipulación de valores de variables mostradas dinámicamente" (CHG_DATA.KL)

A.4.24 Procedimiento integrado CNC_DYN_DISR

Objetivo:Cancela la visualización dinámica de una variable de número REAL en una ventana específica.

Sintaxis:CNC_DYN_DISR(real_var, nombre_ventana, estado)

Parámetros de entrada/salida:

[en] real_var :REAL

[en] nombre_ventana :STRING

[fuera] estado: ENTERO

A–63
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

%MEDIO AMBIENTE Grupo :UIF

Detalles:

• real_vares la variable REAL cuya visualización dinámica se desea cancelar.

• Consulte el procedimiento incorporado CNC_DYN_DISB para obtener una descripción de los otros parámetros enumerados

anteriormente.

Ver también:Procedimiento integrado INI_DYN_DISR

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.10, "Uso de pantallas dinámicas incorporadas" (DYN_DISP.KL)

Sección B.11, "Manipulación de valores de variables mostradas dinámicamente" (CHG_DATA.KL)

A.4.25 Procedimiento integrado CNC_DYN_DISS

Objetivo:Cancela la visualización dinámica de una variable STRING en una ventana específica.

Sintaxis:CNC_DYN_DISS(str_var, nombre_ventana, estado)

Parámetros de entrada/salida:

[en] str_var :CADENA

[en] nombre_ventana :STRING

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :UIF

Detalles:

• str_vares la variable STRING cuya visualización dinámica se cancelará.


• Consulte el procedimiento incorporado CNC_DYN_DISB para obtener una descripción de los otros parámetros enumerados

anteriormente.

Ver también:Procedimiento integrado INI_DYN_DISS

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.10, "Uso de pantallas dinámicas incorporadas" (DYN_DISP.KL)

Sección B.11, "Manipulación de valores de variables mostradas dinámicamente" (CHG_DATA.KL)

A–64
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

A.4.26 Procedimiento integrado CNCL_STP_MTN

Objetivo:Cancela todos los movimientos detenidos

Sintaxis:CNCL_STP_MTN

%ENVIRONMENT Grupo :motn

• Todos los movimientos detenidos se cancelarán para todos los grupos que controla el programa.

• Se ejecutarán las declaraciones que siguen a las declaraciones de movimiento.

• CNCL_STP_MTN no tendrá ningún efecto si actualmente no se detiene ningún movimiento.

• El movimiento no se puede cancelar para una tarea diferente.

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.

Procedimiento integrado CNCL_STP_MTN


RUTINA e_stop_hndlr
EMPEZAR

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]

A.4.27 Procedimiento integrado CNV_CNF_STRG

Objetivo:Convierte la CONFIG especificada en una CADENA usando un group_no opcional

Sintaxis:CNV_CNF_STRG(origen, destino <,nº_grupo>)

Parámetros de entrada/salida:

[en] fuente: CONFIG

[fuera] objetivo :STRING

[en] grupo_no :INTEGER

A–65
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

%MEDIO AMBIENTE Grupo :FUERTE

Detalles:

• objetivorecibe la forma STRING de la configuración especificada porfuente.

• 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.

Sigrupo_nose especifica, debe estar en el rango de 1 al número total de grupos definidos en el


controlador.

Ver también:Procedimiento integrado CNV_STR_CONF

Ejemplo:El siguiente ejemplo convierte la configuración de la posiciónposiciónen una STRING y la pone en


cadena_configutilizando la máscara de configuración del grupo 2. A continuación, la cadena se muestra en la
pantalla.

Procedimiento integrado CNV_CNF_STRG


CNV_CNF_STRG(posn.pos_config, cadena_config, 2)
WRITE('Configuración de posn en grupo 2: ', config_string, cr)

A.4.28 Procedimiento integrado CNV_CONF_STR

Objetivo:Convierte la CONFIGURACIÓN especificada en una CADENA

Sintaxis:CNV_CONF_STR(origen, destino)

Parámetros de entrada/salida:

[en] fuente: CONFIG

[fuera] objetivo :STRING

%MEDIO AMBIENTE Grupo :FUERTE

Detalles:

• objetivorecibe la forma STRING de la configuración especificada porfuente.

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.

Ver también:Procedimiento integrado CNV_STR_CONF

Ejemplo:El siguiente ejemplo convierte la configuración de la posiciónposiciónen una STRING y la pone


encadena_config.A continuación, la cadena se muestra en la pantalla.

Procedimiento integrado CNV_CONF_STR


CNV_CONF_STR(posn.pos_config, cadena_config)
ESCRIBIR('Configuración de posn: ', config_string, cr)

A.4.29 Procedimiento integrado CNV_INT_STR

Objetivo:Da formato al INTEGER especificado en una CADENA

Sintaxis:CNV_INT_STR(origen, longitud, base, destino)

Parámetros de entrada/salida:

[en] fuente: expresión INTEGER

[en] longitud: expresión INTEGER

[en] base: expresión INTEGER

[fuera] destino :STRING expresión

%MEDIO AMBIENTE Grupo :PBCORE

Detalles:

• fuentees el INTEGER que se va a formatear en una CADENA.

• 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.

• baseindica el sistema numérico en el que se va a representar el número.basedebe estar en el


rango 2-16 o 0 (cero) que indica base 10.

• Si los valores delongitudobaseno son válidos,objetivose devuelve sin inicializar.

• 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

Ver también:Procedimiento integrado CNV_STR_INT

Ejemplo:Consulte la siguiente sección para obtener ejemplos de programas detallados:

Sección B.7, "Listado de archivos y programas y manipulación de cadenas" (LIST_EX.KL)

A.4.30 Procedimiento integrado CNV_JPOS_REL

Objetivo:Permite que un programa KAREL examine ángulos de articulaciones individuales como valores REALES

Sintaxis:CNV_JPOS_REL(jointpos, matriz_real, estado)

Parámetros de entrada/salida:

[en] joint_pos :JOINTPOS

[out] real_array :ARRAY [num_joints] OF REAL

[fuera] estado: ENTERO

%ENTORNO Grupo :SISTEMA

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.

• la medida de lamatriz_realelementos está en grados.


• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ver también:Procedimiento integrado CNV_REL_JPOS

Ejemplo:Referirse aSección B.14, "Aplicación de compensaciones a un programa de Teach Pendant


copiado" (CPY_TP.KL), para ver un ejemplo de programa detallado.

A.4.31 Procedimiento integrado CNV_REAL_STR

Objetivo:Formatea el valor REAL especificado en una CADENA

Sintaxis:CNV_REAL_STR(fuente, longitud, num_digits, destino)

A–68
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

Parámetros de entrada/salida:

[en] fuente: expresión REAL

[en] longitud: expresión INTEGER

[en] num_digits :INTEGER expresión

[fuera] objetivo :STRING

%MEDIO AMBIENTE Grupo :FUERTE

Detalles:

• fuentees el valor REAL a formatear.


• 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.

• núm_dígitosespecifica el número de dígitos que se muestran a la derecha del punto decimal. Si


núm_dígitos es un número negativo,fuentese formateará en notación científica (donde el ABS(
núm_dígitos) representa el número de dígitos a la derecha del punto decimal.) Sinúm_dígitoses 0, se
suprime el punto decimal.

• Silongitudonúm_dígitosno son válidos,objetivose devuelve sin inicializar.

• 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).

Ver también:Procedimiento integrado CNV_STR_REAL

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.

Procedimiento integrado CNV_REAL_STR


cur_volts = AIN[2]
CNV_REAL_STR(cur_volts, 7, 2, volt_string)
WRITE('Voltage=',volt_string,CR)

A.4.32 Procedimiento integrado CNV_REL_JPOS

Objetivo:Permite que un programa KAREL manipule ángulos individuales de una posición conjunta

Sintaxis:CNV_REL_JPOS(real_array, joint_pos, estado)

Parámetros de entrada/salida:

A–69
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

[en] real_array :ARRAY [num_joints] OF REAL

[fuera] joint_pos :JOINTPOS

[fuera] estado: ENTERO

%ENTORNO Grupo :SISTEMA

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.

• la medida de lamatriz_realelementos es grados.


• pos_juntoses uno de los tipos de posiciones conjuntas de KAREL: JOINTPOS o JOINTPOS1 a
JOINTPOS9.

• pos_juntosrecibe la forma de posición conjunta de real_array.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.6, "Programa de manejadores de condiciones y variables de ruta" (PTH_MOVE.KL)

Sección B.8, "Generación y movimiento a lo largo de una ruta hexagonal" (GEN_HEX.KL)

Sección B.14, "Aplicación de compensaciones a un programa de Teach Pendant copiado" (CPY_TP.KL)

A.4.33 Procedimiento integrado CNV_STR_CONF

Objetivo:Convierte la cadena de configuración especificada en un tipo de datos CONFIG

Sintaxis:CNV_STR_CONF(origen, destino, estado)

Parámetros de entrada/salida:

[en] fuente :STRING

[fuera] objetivo :CONFIG

[fuera] estado: ENTERO

A–70
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

%MEDIO AMBIENTE Grupo :FUERTE

Detalles:

• objetivorecibe el formulario CONFIG de la cadena de configuración especificada porfuente.

• fuentedebe ser una cadena de configuración válida para el brazo robótico conectado al controlador.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ver también:Procedimiento integrado CNV_CONF_STR

Ejemplo:El siguiente ejemplo establece la configuración de posiciónxyz_posa la configuración


especificada porcadena_configy luego mueve el TCP a esa posición.

Procedimiento integrado CNV_STR_CONF


CNV_STR_CONF(config_string, xyz_pos.config_data, status) SET_POS_REG(1,
xyz_pos, status) —— Coloque xyz_pos en PR[1] move_to_pr —— Llame al
programa TP para pasar a PR[1]

A.4.34 Procedimiento integrado CNV_STR_INT

Objetivo:Convierte la CADENA especificada en un INTEGER

Sintaxis:CNV_STR_INT(origen, destino)

Parámetros de entrada/salida:

[en] fuente :STRING

[fuera] objetivo: ENTERO

%MEDIO AMBIENTE Grupo :PBCORE

Detalles:

• fuentese convierte en un INTEGER y se almacena enobjetivo.

• Sifuenteno contiene una representación válida de un INTEGER,objetivoestá configurado sin inicializar.

Ver también:Procedimiento integrado CNV_INT_STR

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.2, "Copiar variables de ruta" (CPY_PTH.KL)

Sección B.12, "Visualización de una lista desde un archivo de diccionario" (DCLST_EX.KL)

A–71
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

A.4.35 Procedimiento integrado CNV_STR_REAL

Objetivo:Convierte la CADENA especificada en REAL

Sintaxis:CNV_STR_REAL(origen, destino)

Parámetros de entrada/salida:

[en] fuente :STRING

[fuera] objetivo :REAL

%MEDIO AMBIENTE Grupo :PBCORE

Detalles:

• Conviertefuentea un número REAL y almacena el resultado enobjetivo.

• 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 -.

Ver también:Procedimiento integrado CNV_REAL_STR

Ejemplo:El siguiente ejemplo convierte la STRINGcalleen un REAL y lo pone enVelocidad.

Procedimiento integrado CNV_STR_REAL


REPETIR
ESCRIBIR('Ingresar tarifa:')
LEER(cadena)
CNV_STR_REAL(str, tasa) HASTA
NO UNINIT(tasa)

A.4.36 Procedimiento integrado CNV_STR_TIME

Objetivo:Convierte una representación de tiempo de cadena en una representación de tiempo entera.

Sintaxis:CNV_STR_TIME(origen, destino)

Parámetros de entrada/salida:

[en] fuente :STRING

[fuera] objetivo: ENTERO

%MEDIO AMBIENTE Grupo :TIM

A–72
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

Detalles:

• El tamaño del parámetro de cadena,fuente,es CADENA[20].

• fuentedebe ingresarse usando el formato “DD-MMM-YYY HH:MM:SS”. El especificador de segundos,


"SS", es opcional. Se utiliza un valor de cero (0) si no se especifican segundos. Sifuentees inválido,
objetivose establecerá en 0.

• 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á.

Ver también:Procedimiento integrado SET_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
CNV_STR_TIME. A continuación, SET_TIME se utiliza para establecer la hora dentro del sistema KAREL a la hora
especificada porint_time.

Procedimiento integrado CNV_STR_TIME


WRITE('Ingrese la nueva hora: ')
READ(str_time)
CNV_STR_TIME(str_time,int_time)
SET_TIME(int_time)

A.4.37 Procedimiento integrado CNV_TIME_STR

Objetivo:Convierte una representación INTEGER del tiempo en una CADENA

Sintaxis:CNV_TIME_STR(origen, destino)

Parámetros de entrada/salida:

[en] fuente: ENTERO

[fuera] objetivo :STRING

%MEDIO AMBIENTE Grupo :TIM

Detalles:

• El procedimiento integrado GET_TIME se utiliza para determinar la representación INTEGER


del tiempo. CNV_TIME_STR se utiliza para convertirfuenteaobjetivo,que se mostrará en
formato “DD-MMM-YYY HH:MM:”.

Ver también:Procedimiento integrado GET_TIME

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.

A.4.38 %COMENTARIO Traductor Directiva

Objetivo:Especifica un comentario de hasta 16 caracteres

Sintaxis:%COMENTARIO = 'ssssssssssssssss'

donde sssssssssssssssss = espacio

Detalles:

• El comentario puede tener hasta 16 caracteres.

• 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.

Ver también:Procedimientos integrados SET_ATTR_PRG y GET_ATTR_PRG

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.2, "Copiar variables de ruta" (CPY_PTH.KL)

Sección B.3, "Guardar datos en el dispositivo predeterminado" (SAVE_VR.KL)

Sección B.5, "Uso de registros integrados" (REG_EX.KL)

Sección B.6, "Programa de manejadores de condiciones y variables de ruta" (PTH_MOVE.KL)

Sección B.9, "Uso de las funciones integradas de archivo y dispositivo" (FILE_EX.KL)

Sección B.10, "Uso de pantallas dinámicas incorporadas" (DYN_DISP.KL)

Sección B.12, "Visualización de una lista desde un archivo de diccionario" (DCLST_EX.KL)

Sección B.13, "Uso de DISCTRL_ALPHA incorporado" (DCALP_EX.KL)

Sección B.1, "Configuración de puertos de salida digital para monitoreo" (DOUT_EX.KL)

A.4.39 Procedimiento integrado COMPARE_FILE

Objetivo:Compara el contenido de un archivo con otro archivo

A–74
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

Sintaxis:COMPARE_FILE(filea, fileb, result_file, ascii_flag, diff_count, estado)

Parámetros de entrada/salida:

[en] archivoa :STRING

[en] archivob :CADENA

[fuera] archivo_resultado :ARCHIVO

[en] ascii_flag:BOOLEANO

[fuera] diff_count :INTEGER

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :FDEV

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).

• diff_countcuántas líneas ASCII (texto) diferían.


• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ver también:COPY_FILE, RENAME_FILE, DELETE_FILE Procedimientos incorporados

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.

Figura A–1. Ejemplo de procedimiento incorporado COMPARE_FILE

---------------------------------------------------------------
Compfiles de PROGRAMA
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - VAR

estado: entero
prog_name: cadena[128]
archivo de registro: archivo

file_ary: matriz [1638] de cadena [MAX_PROG_NAM]

A–75
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

tempstore en CMOS: cadena [40]


índice: entero
findex: entero
n_progs: entero
diff_count: entero

EMPEZAR

prog_name = '*'
índice = 0
n_progs = 1
diff_count=1
IF unidad (tempstore) DESPUÉS

almacén temporal = 'MC:\ref'


TERMINARA SI

ABRIR ARCHIVO logfile ('RW', 'CMPFILES.LOG') PROG_LIST(prog_name, 2, 0,


1, file_ary, n_progs, index) FOR index = 1 TO n_progs DO

- - COMPARE_FILE( nombrearchivo1: cadena; (EN) Primer nombre de archivo para comparación


-- nombre de archivo2: cadena; (EN) Segundo nombre de archivo para comparación
-- archivo_salida: archivo; (SALIDA) Abrir archivo KAREL para salida
-- ascii_flag: booleano; (IN) Si es VERDADERO, la comparación es ASCII
-- recuento: entero; (OUT) ASCII- Número de diferencias/
–– Primer byte diferente binario (SALIDA)
-- estado: entero) Resultado como no se puede abrir el archivo

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

FIN de archivos compilados

A.4.40 CONDICIÓN...ENDCONDICIÓN Sentencia

Objetivo:Define un controlador de condición global

Sintaxis:CONDICIÓN[cond_hand_no]: [with_list]

CUANDO cond_list DO action_list

A–76
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

{CUANDO cond_list DO action_list}

CONDICIÓN FINAL

Detalles:

• cond_hand_noespecifica el número asociado con el manejador de condiciones y debe estar en el rango


de 1-1000. El programa se cancela con un error si está fuera de este rango.

• Si ya existe un manejador de condiciones con el número especificado, el anterior se reemplaza por el


nuevo.

• 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.

• Las llamadas a rutinas de función no están permitidas en una sentencia CONDITION.

• 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.

• Utilice la instrucción o acción DISABLE para desactivar un controlador de condiciones.

• El manejador de condiciones permanece definido y puede ser reactivado posteriormente por la declaración o
acción ENABLE.

• La instrucción PURGE se puede utilizar para eliminar la definición de un controlador de condiciones.

• 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

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.6, "Programa de manejadores de condiciones y variables de ruta" (PTH_MOVE.KL)

Sección B.1, "Configuración de puertos de salida digital para monitoreo" (DOUT_EX.KL)

A–77
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

A.4.41 CONFIG Tipo de datos

Objetivo:Define un campo de estructura o variable como un tipo de datos CONFIG

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.

• CONFIG contiene los siguientes campos predefinidos:

— 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.

• Las variables y campos declarados como CONFIG pueden ser

— Asignados unos a otros.


— Pasados como parámetros.

— Escrito y leído desde archivos sin formato.

• 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 campo CONFIG es parte de cada variable y campo POSITION y XYZWPR.

• 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.

CONFIG Tipo de datos

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

A.4.42 Declaración de TEMPORIZADOR DE CONEXIÓN

Objetivo:Hace que una variable INTEGER comience a actualizarse como un reloj de milisegundos

Sintaxis:CONECTAR EL TEMPORIZADOR A clock_var

dónde:

clock_var :una variable INTEGER estática definida por el usuario

Detalles:

• reloj_varactualmente se incrementa por el valor de la variable del sistema $SCR.$COND_TIME cada


$SCR.$COND_TIME milisegundos siempre que el programa esté en ejecución o en pausa y continúa
hasta que el programa desconecta el temporizador, finaliza o aborta. Por ejemplo, si $SCR.$COND_TIM
E=32 entoncesreloj_varse incrementará en 32 cada 32 milisegundos.

• 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.

• El programa puede restablecer elreloj_vara cualquier valor mientras está conectado.

• 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

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.8, "Generación y movimiento a lo largo de una ruta hexagonal" (GEN_HEX.KL)

Sección B.1, "Configuración de puertos de salida digital para monitoreo" (DOUT_EX.KL)

A.4.43 CONTINUAR Acción

Objetivo:Continúa la ejecución de una tarea en pausa

Sintaxis:CONTINUAR <PROGRAMA[n]>

Detalles:

• La acción CONTINUAR no reanudará los movimientos detenidos.

• 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.

A.4.44 CONTINUAR Condición

Objetivo:Condición que se cumple cuando continúa la ejecución del programa

Sintaxis:CONTINUAR <PROGRAMA[n]>

Detalles:

• La condición CONTINUAR supervisa la ejecución del programa.

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

A.4.45 Procedimiento integrado CONT_TASK

Objetivo:Continúa la tarea especificada

Sintaxis:CONT_TASK(tarea_nombre, estado)

Parámetros de entrada/salida:

[en] nombre_tarea :STRING

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :MULTI

Detalles:

• nombre de la tareaes el nombre de la tarea a continuar. Si la tarea no se detuvo, se devuelve un error en


estado.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

• 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

Ver también:RUN_TASK, ABORT_TASK, PAUSE_TASK Procedimientos integrados,capitulo


16 MULTITAREA

Ejemplo:El siguiente ejemplo solicita al usuario el nombre de la tarea y continúa la ejecución de


la tarea. Referirse acapitulo 16MULTITAREA,para más ejemplos.

Procedimiento integrado CONT_TASK


PROGRAMA cont_task_ex
%AMBIENTE MULTI
VAR
task_str: CADENA[12]
estado: ENTERO
EMPEZAR

WRITE('Ingrese el nombre de la tarea para


continuar:') READ(task_str)
CONT_TASK(tarea_str, estado)
FINAL cont_task_ex

A.4.46 Procedimiento integrado COPY_FILE

Objetivo:Copia el contenido de un archivo a otro con la opción de sobrescribir

Sintaxis:COPY_FILE(from_file, to_file, overwrite_sw, nowait_sw, status)

Parámetros de entrada/salida:

[en] from_file :STRING

[en] a_archivo :STRING

[en] overwrite_sw :BOOLEANO

[en] nowait_sw :BOOLEANO

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :FDEV

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

• sobrescribir_swespecifica que los archivos deben sobrescribirse si existen.

• 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.

• Si el programa se aborta durante la copia, la copia se completará antes de abortar.

• Si el dispositivo al que está copiando se llena durante la copia, se devolverá un error.

Notanoesperar_swno está disponible en esta versión y debe establecerse en FALSO.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ver también:RENAME_FILE, DELETE_FILE Procedimientos integrados

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.4.47 Procedimiento integrado COPY_PATH

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.

Sintaxis:COPY_PATH (origen_ruta, inicio_nodo, final_nodo, destino_ruta, estado)

Parámetros de entrada/salida:

[en] fuente_ruta :RUTA

[en] nodo_inicio :INTEGER

[en] end_node :INTEGER

[en] ruta_destino :RUTA

[fuera] estado: ENTERO

%ENVIRONMENT Grupo :pathop

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).

Un ejemplo de uncamino parcialcopiar a una ruta de destino.

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.

Un ejemplo de uncopiar la ruta de origen en orden inversoa una ruta de destino.

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.

Específicamente, el comando anterior copiará el nodo 5 de P1 al nodo 1 de P2, el nodo 4 de P1 al nodo 2 de P2 y


así sucesivamente.

Ejemplo:Referirse aSección B.2, "Copia de variables de ruta" (CPY_PTH.KL), para ver un ejemplo de programa
detallado.

A.4.48 Procedimiento integrado COPY_QUEUE

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.

Sintaxis:COPY_QUEUE(cola, cola_datos, secuencia_no, n_saltar, out_data, n_got, estado)

Parámetros de entrada/salida:

[en] cola_t :TIPO_QUEUE

[en] queue_data :ARRAY OF INTEGER

A–84
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

[en] n_skip :ENTERO

[en] secuencia_no :entero

[out] out_data :ARRAY OF INTEGER

[fuera] n_got :INTEGER

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :PBQMGR

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.

• secuencia_noespecifica el número de secuencia de la entrada más antigua que se va a copiar. Si elsecuencia_noes


cero, el punto de partida para la copia está determinado por eln_saltarparámetro.

• 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:

— Cero si hayn_saltaro menos entradas en la cola.


— (queue_to n_entries_skip)si esto es menor que ARRAY_LEN(out_data)
— ARRAY_LEN(out_data) si es menor o igual que queue.n_entries - n_skip
• estadose devuelve con cero

Ver también:APPEND_QUEUE, DELETE_QUEUE, INSERT_QUEUE Procedimientos integrados,Sección 16.8, "Uso


de colas para la comunicación de tareas"

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.

Procedimiento integrado COPY_QUEUE


PROGRAMA copy_queue_x
%ambiente PBQMGR
VAR
job_queue FROM global_vars: QUEUE_TYPE job_data FROM
global_vars: ARRAY[100] OF INTEGER ROUTINE disp_queue(data:
ARRAY OF INTEGER;
n_disp: ENTERO) DESDE disp_prog
ROUTINE disp_page(data_array: ARRAY OF INTEGER;

A–85
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

page_no: ENTERO): BOOLEAN


VAR
estado: ENTERO
n_got: ENTERO
EMPEZAR

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

A.4.49 Procedimiento integrado COPY_TPE

Objetivo:Copia un programa de consola portátil a otro programa de consola portátil.

Sintaxis:COPY_TPE(from_prog, to_prog, overwrite_sw, status)

Parámetros de entrada/salida:

[en] from_prog :CADENA

[en] a_prog :CADENA

[en] overwrite_sw :BOOLEANO

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :TPE

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.

• sobrescribir_sw,si se establece en TRUE, sobrescribirá automáticamente ela_progsi ya existe y no


está seleccionado actualmente. Si se establece en FALSO, ela_progno se sobrescribirá si ya existe.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, la copia no se produjo.

A–86
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

Ver también:Procedimiento integrado CREATE_TPE

Ejemplo:Referirse aSección B.14, "Aplicación de compensaciones a un programa de Teach Pendant


copiado" (CPY_TP.KL), para ver un ejemplo de programa detallado.

A.4.50 Función incorporada COS

Objetivo:Devuelve el coseno REAL del argumento del ángulo REAL, especificado en grados

Sintaxis:COS (ángulo) Tipo de retorno de función: REAL

Parámetros de entrada/salida:

[en] ángulo: expresión REAL

%ENTORNO Grupo :SISTEMA

Detalles:

• ánguloes un ángulo especificado 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.

A.4.51 Elemento de entrada/salida CR

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.

El siguiente elemento de datos se leerá desde el comienzo de la siguiente línea de entrada.

• 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

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

A–87
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

Sección B.3, "Guardar datos en el dispositivo predeterminado" (SAVE_VR.KL)

Sección B.4, "Rutinas estándar" (ROUT_EX.KL)

Sección B.5, "Uso de registros integrados" (REG_EX.KL)

Sección B.6, "Programa de manejadores de condiciones y variables de ruta" (PTH_MOVE.KL)

Sección B.7, "Listado de archivos y programas y manipulación de cadenas" (LIST_EX.KL)

Sección B.8, "Generación y movimiento a lo largo de una ruta hexagonal" (GEN_HEX.KL)

Sección B.9, "Uso de las funciones integradas de archivo y dispositivo" (FILE_EX.KL)

Sección B.10, "Uso de pantallas dinámicas incorporadas" (DYN_DISP.KL)

Sección B.12, "Visualización de una lista desde un archivo de diccionario" (DCLST_EX.KL)

Sección B.13, "Uso de DISCTRL_ALPHA incorporado" (DCALP_EX.KL)

Sección B.14, "Aplicación de compensaciones a un programa de Teach Pendant copiado" (CPY_TP.KL)

Sección B.1, "Configuración de puertos de salida digital para monitoreo" (DOUT_EX.KL)

A.4.52 Procedimiento integrado CREATE_TPE

Objetivo:Crea un programa colgante de aprendizaje con el nombre especificado

Sintaxis:CREATE_TPE(nombre_prog, tipo_prog, estado)

Parámetros de entrada/salida:

[en] nombre_del_programa :STRING

[en] tipo_prog :INTEGER

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :TPE

Detalles:

• prog_nameespecifica el nombre del programa que se va a crear.

• 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

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error. Algunos de


los posibles errores son los siguientes:

7015 Existe un programa especificado

9030 El nombre del programa es NULL

9031 Eliminar número de la parte superior del nombre del programa

9032 Eliminar espacio del nombre del programa

9036 Memoria insuficiente

9038 Carácter no válido en el nombre del programa

• 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.

Ver también:Procedimiento integrado SET_ATTR_PRG

A.4.53 Procedimiento integrado CREATE_VAR

Objetivo:Crea la variable KAREL especificada

Sintaxis:CREATE_VAR(var_prog_nam, var_nam, typ_prog_nam, type_nam, group_num,


inner_dim, mid_dim, outside_dim, status, <mem_pool>)

Parámetros de entrada/salida:

[en] var_prog_nam :CADENA

[en] var_nam :CADENA

[en] typ_prog_nam :CADENA

[en] nombre_tipo :CADENA

[en] grupo_num :INTEGER

[en] interior_dim :INTEGER

[en] mid_dim :INTEGER

[en] dim_exterior :INTEGER

[fuera] estado: ENTERO

A–89
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

[en] mem_pool :INTEGER

%MEDIO AMBIENTE Grupo :MEMO

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.

• var_namespecifica el nombre de la variable que se creará.

• 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'

'CADENA[n]', donde n es la longitud de la cadena; el valor predeterminado es 12 si no se especifica.

'VECTOR'

'VIS_PROCESO'

'XYZWPR'

'XYZWPREXT'

Cualquier otro nombre de tipo se considera tipo definido por el usuario.

• núm_grupoespecifica el número de grupo que se utilizará para los tipos de datos posicionales.

• interior_dimespecifica las dimensiones de la matriz más interna. Por ejemplo,interior_dim=30 para


ARRAY[10,20,30] OF INTEGER.interior_dimdebe establecerse en 0 si la variable no es una matriz.

• mid_dimespecifica las dimensiones de la matriz intermedia. Por ejemplo,mid_dim=20 para ARRAY[10,20,30] OF


INTEGER.mid_dimdebe establecerse en 0 si la variable no es una matriz bidimensional.

• dim_exteriorespecifica las dimensiones de la matriz más externa. Por ejemplo,dim_exterior=10 para


ARRAY[10,20,30] OF INTEGER.dim_exteriordebe establecerse en 0 si la variable no es una matriz tridimensional.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

• 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.

Ver también:Procedimientos incorporados CLEAR, RENAME_VAR

Ejemplo:Referirse aSección B.2, "Copia de variables de ruta" (CPY_PTH.KL), para ver un ejemplo de programa
detallado.

A.4.54 %DISPOSITIVO CRT

Objetivo:Especifica que el dispositivo CRT/KB es el dispositivo predeterminado

Sintaxis:%DISPOSITIVO CRT

A–91
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

Detalles:

• Especifica que la ventana INPUT/OUTPUT será la predeterminada en las sentencias READ


y WRITE en lugar de la ventana TPDISPLAY.

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.

A.4.55 Función integrada CURJPOS

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

Sintaxis:CURJPOS(axs_lim_mask, ovr_trv_mask <,group_no>)

Tipo de retorno de función: JOINTPOS

Parámetros de entrada/salida:

[fuera] axs_lim_mask :INTEGER

[fuera] ovr_trv_mask :INTEGER

[en] grupo_no :INTEGER

%ENTORNO Grupo :SISTEMA

Detalles:

• Sigrupo_nose omite, se asume el grupo predeterminado para el programa.

• Sigrupo_nose especifica, debe estar en el rango de 1 al número total de grupos definidos en el


controlador.

• axs_lim_maskespecifica qué ejes están fuera de los límites del eje.

• ovr_trv_maskespecifica qué ejes están en sobrecarrera.

Notamáscara_límite_ejeyovr_trv_maskno están disponibles en esta versión y se pueden establecer en 0.

Ver también:Función integrada CURPOS,Capítulo 8DATOS DE POSICIÓN

Ejemplo:El siguiente ejemplo obtiene la posición conjunta actual del robot.

Función integrada CURJPOS


PROGRAMA getpos
VAR
jnt: POS CONJUNTOS

A–92
Traducido del inglés al español - www.onlinedoctranslator.com

MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

EMPEZAR

jnt=CURJPOS(0,0)
FIN getpos

A.4.56 Función integrada CURPOS

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

Sintaxis:CURPOS(axis_limit_mask, ovr_trv_mask <,group_no>)

Tipo de retorno de función: XYZWPREXT

Parámetros de entrada/salida:

[fuera] axis_limit_mask :INTEGER

[fuera] ovr_trv_mask :INTEGER

[en] grupo_no :INTEGER

%ENTORNO Grupo :SISTEMA

Detalles:

• Sigrupo_nose omite, se asume el grupo predeterminado para el programa.

• Sigrupo_nose especifica, debe estar en el rango de 1 al número total de grupos definidos en el


controlador.

• El grupo debe ser cinemático.

• 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.

• máscara_límite_ejeespecifica qué ejes están fuera de los límites del eje.

• ovr_trv_maskespecifica qué ejes están en sobrecarrera.

Notamáscara_límite_ejeyovr_trv_maskno están disponibles en esta versión y se ignorarán si se configuran.

Ver también:Capítulo 8DATOS DE POSICIÓN

Ejemplo:Referirse aSección B.5, "Uso de las funciones integradas de registro", para obtener un ejemplo de programa detallado.

Sección B.5, "Uso de registros integrados" (REG_EX.KL)

Sección B.1, "Configuración de puertos de salida digital para monitoreo" (DOUT_EX.KL)

A–93
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

A.4.57 Función integrada CURR_PROG

Objetivo:Devuelve el nombre del programa que se está ejecutando actualmente

Sintaxis:CURR_PROG

Tipo de devolución de función: STRING [12]

%MEDIO AMBIENTE Grupo :BYNAM

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.

A.5 - D - DESCRIPCIÓN DEL IDIOMA KAREL

A.5.1 Procedimiento integrado DAQ_CHECKP

Objetivo:Para verificar el estado de una tubería y la cantidad de bytes disponibles para leer desde la tubería.

Sintaxis:DAQ_CHECKP(núm_tubería, estadística_tubería, disponibilidad_bytes)

Parámetros de entrada/salida:

[en] pipe_num :INTEGER

[fuera] pipe_stat :INTEGER

[fuera] bytes_avail :INTEGER

Detalles:

• pipe_numes el número de tubería (1 - 5) a comprobar.

• pipe_states el estado de la tubería devuelta. El estado es una combinación de los siguientes indicadores:

— DAQ_PIPREG es cuando se registra la tubería (valor = 1).

— DAQ_ACTIVE es cuando la tubería está activa, es decir, se ha iniciado (valor = 2).

— DAQ_CREATD es cuando se crea la tubería (valor = 4).

— DAQ_SNAPSH es cuando la tubería está en modo instantánea (valor = 8).

— 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

— DAQ_OVFLOW es cuando la tubería se desborda (valor = 32).

— DAQ_FLUSH es cuando se limpia la tubería (valor = 64).


• bytes_availes el número de bytes que están disponibles para ser leídos desde la canalización.

Procedimiento integrado DAQ_CHECKP


El parámetro devuelto pipe_stat se puede combinar con AND con las constantes de
bandera anteriores para determinar si la tubería está registrada, está activa, etc. Por
ejemplo, debe verificar si la canalización está activa antes de escribir en ella.

Procedimiento integrado DAQ_CHECKP


El indicador DAQ_OVFLOW nunca se establecerá para la tarea que escribe
en la tubería cuando llama a DAQ_CHECKP. Este indicador se aplica solo a
las tareas que leen de la canalización.

Ver también:DAQ_WRITE incorporado.

Ejemplo:Consulte el ejemplo de DAQWRITE en la función integrada DAQ_WRITE.

NotaEste integrado solo está disponible cuando se cargan las opciones de DAQ o monitor de datos.

A.5.2 Procedimiento incorporado DAQ_REGPIPE

Objetivo:Para registrar una tubería para su uso en KAREL.

Sintaxis:DAQ_REGPIPE(núm_tubo, tipo_mem, tamaño_tubo, nombre_prog, nombre_var, nombre_tubo,


tamaño_flujo y estado)

Parámetros de entrada/salida:

[en] pipe_num :INTEGER

[en] tipo_mem :INTEGER

[en] pipe_size :INTEGER

[en] nombre_del_programa :STRING

[en] nombre_var :CADENA

[en] nombre_tubería :STRING

A–95
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

[en] stream_size :INTEGER

[fuera] estado: ENTERO

Detalles:

• pipe_numes el número de tubería (1-5) a registrar.


• tipo_memle permite asignar la memoria que se utilizará para la tubería. Se pueden utilizar las siguientes
constantes:

— DAQ_DRAM le permite asignar memoria DRAM.


— DAQ_CMOS le permite asignar memoria CMOS.
• tamaño de la tuberíaes el tamaño de la tubería, se expresa como el número de registros de datos que puede contener. El
tamaño del registro de datos en sí está determinado por el tipo de datos de var_name.

• 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.

• stream_sizees el número de registros para transmitir automáticamente a un archivo de salida, si la


tubería se inicia como una tubería transmitida. Una única escritura de la variable especificada
constituye un único registro en la canalización. Si el tamaño de flujo se establece en cero, la
canalización no transmitirá automáticamente los registros a un dispositivo de archivo; todos los
datos se mantendrán en la tubería hasta que se lea la tubería. Use stream_size para ayudar a
optimizar la carga de la red cuando la tubería se usa para enviar datos a la PC. Si es cero o uno, la
tarea de monitoreo enviará cada registro de datos tan pronto como se vea en la tubería. Si el número
es dos o más, el monitor esperará hasta que haya tantos registros de datos en la tubería antes de
enviarlos todos a la PC. De esta manera, se puede minimizar la sobrecarga de envío de paquetes de
red.

• estadoes el estado de la operación intentada. Si no es 0, entonces ocurrió un error y la tubería no


se registró.

Ver también:DAQ_UNREG incorporado.

Procedimiento incorporado DAQ_REGPIPE


Las tuberías deben registrarse antes de que puedan iniciarse y en las que se escriben los
datos. La operación de registro dice
el sistema cómo configurar la tubería cuando se va a utilizar. Una vez registrada, una
tubería se configura para aceptar la
escritura de una cierta cantidad de datos por registro, según el tamaño de la variable
especificada. Con el fin de
cambiar la configuración de una tubería, primero se debe dar de baja la tubería

A–96
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

usando DAQ_UNREG, y luego se


volvió a registrar.

Ejemplo:El siguiente ejemplo registra la tubería 1 de KAREL para escribir una variable en el programa.

Procedimiento incorporado DAQ_REGPIPE


PROGRAMA DAQREG
%AMBIENTE adquisición de datos

CONSTITUCIÓN

er_abortar = 2
VAR
estado: ENTERO
variable de datos: ENTERO
EMPEZAR

- - Registre la tubería 1 DRAM como kldaq.dat


- - Puede contener 100 copias de la variable datavar
- - antes de que la tubería se desborde DAQ_REGPIPE(1,
DAQ_DRAM, 100, '', 'datavar', &
'kldaq.dat', 0, estado)
SI estado<>0 ENTONCES
POST_ERR(estado,' ',0,er_abortar) ENDIF

FIN DAQREG

NotaEste integrado solo está disponible cuando se cargan las opciones de DAQ o monitor de datos.

A.5.3 Procedimiento integrado DAQ_START

Objetivo:Para activar una pipa KAREL para escribir.

Sintaxis:DAQ_START(núm_tubo, modo_tubo, desarrollo_flujo, estado)

Parámetros de entrada/salida:

[en] pipe_num :INTEGER

[en] pipe_mode :INTEGER

[en] stream_dev :CADENA

[fuera] estado: ENTERO

Detalles:

A–97
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

• pipe_numes el número de tubería (1 - 5) a iniciar. La tubería debe haber sido registrada


previamente

• 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.

• estadoes el estado de la operación intentada. Si no es 0, entonces ocurrió un error y la canalización no se


eliminó del registro.

Ver también:DAQ_REGPIPE incorporado y DAQ_STOP incorporado,

Procedimiento integrado DAQ_START


Esta llamada integrada se puede realizar desde la misma tarea/programa que la tarea de
escritura o desde una
activar/desactivar tarea. La tarea de escritura puede permanecer inactiva hasta que se
inicia la canalización, momento en el que comienza a escribir
datos.

Procedimiento integrado DAQ_START


Una tubería se inicia automáticamente cuando una aplicación de PC emite FRCPipe. Método
StartMonitor. En este caso,
no es necesario que la aplicación KAREL llame a DAQ_START para activar la tubería.

Procedimiento integrado DAQ_START


El inicio y la detención de una tubería se rastrean mediante un esquema de conteo de
referencia. Es decir, cualquier combinación de dos
Las llamadas DAQ_START y FRCPipe.StartMonitor requieren cualquier peine

Ejemplo:El siguiente ejemplo inicia la tubería 1 de KAREL en modo de transmisión.

Procedimiento integrado DAQ_START


PROGRAMA PIPONOFF
%AMBIENTE adquisición de datos

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

- - Indicación para activar la tubería


ESCRIBIR ('Presione 1 para iniciar la
tubería') LEER (tpinput)
SI tpinput = '1' ENTONCES
- - tubo de arranque 1
DAQ_START(1, DAQ_STREAM, 'RD:', estado) SI
estado<>0 ENTONCES
POST_ERR(status,' ',0,er_abort) ELSE

- - indicador para apagar la tubería ESCRIBIR


('Presione cualquier tecla para detener la tubería')
LEER (tpinput)
- - tubo de tope 1
DAQ_STOP(1, FALSO, estado)
SI estado<>0 DESPUÉS

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.

A.5.4 Procedimiento integrado DAQ_STOP

Objetivo:Para parar una pipa KAREL para escribir.

Sintaxis:DAQ_STOP(núm_tubo, forzar_apagado, estado)

Parámetros de entrada/salida:

[en] pipe_num :INTEGER

[en] force_off :BOOLEANO

[fuera] estado: ENTERO

Detalles:

• pipe_numes el número de tubería (1 - 5) a detener.


• forzar fueraOcurre si TRUE obliga a que la tubería se apague, incluso si otra aplicación hizo una solicitud de inicio en la
tubería. Si se establece en FALSO, si todas las solicitudes de inicio se han contabilizado con solicitudes de detención, la tubería
se apaga; de lo contrario, permanece encendida.

A–99
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

• estadoes el estado de la operación intentada. Si no es 0, entonces ocurrió un error y la tubería


no se detuvo.

Ver también:DAQ_START Incorporado.

Procedimiento integrado DAQ_STOP


El mecanismo de inicio/parada en cada tubería funciona con un conteo de referencia.
La tubería se inicia en la primera solicitud de inicio,
y se cuenta cada solicitud de inicio subsiguiente. Si se recibe una solicitud de parada para
la canalización, el recuento se reduce.

Procedimiento integrado DAQ_STOP


Si la tubería no se fuerza y el conteo no es cero, la tubería permanece encendida. Al
establecer el indicador force_off en VERDADERO,
la tubería se apaga independientemente del conteo. El conteo se reinicia.

Procedimiento integrado DAQ_STOP


El método FRCPipe.StopMonitor emitido por una aplicación de PC es equivalente a una
llamada a DAQ_STOP.

Ejemplo:Consulte el ejemplo de PIPONOFF en la función integrada DAQ_START.

NotaEste integrado solo está disponible cuando se cargan las opciones de DAQ o monitor de datos.

A.5.5 Procedimiento integrado DAQ_UNREG

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:

[en] pipe_num :INTEGER

[fuera] estado: ENTERO

Detalles:

• pipe_numes el número de la tubería (1 - 5) a desregistrar.


• estadoes el estado de la operación intentada. Si no es 0, entonces ocurrió un error y la canalización no se
eliminó del registro.

Ver también:DAQ_REGPIPE incorporado.

A–100
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

Procedimiento integrado DAQ_UNREG


Anular el registro de una tubería permite que la tubería se reconfigure para un tamaño de datos
diferente, tamaño de tubería, nombre de tubería, etc.
adelante. Debe anular el registro de la tubería antes de volver a registrar mediante
DAQ_REGPIPE.

Ejemplo:El siguiente ejemplo anula el registro de la tubería 1 de KAREL.

Procedimiento integrado DAQ_UNREG


PROGRAMA DAQUNREG
%AMBIENTE adquisición de datos

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.

A.5.6 Procedimiento integrado DAQ_WRITE

Objetivo:Para escribir datos en una tubería KAREL.

Sintaxis:DAQ_WRITE(núm_tubería, nombre_prog, nombre_var, estado)

Parámetros de entrada/salida:

[en] pipe_num :INTEGER

[en] nombre_del_programa :STRING

[en] nombre_var :CADENA

[fuera] estado: ENTERO

Detalles:

• pipe_numes el número de la tubería (1 - 5) en la que se escriben los datos.

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.

• nombre_vares el nombre de la variable a escribir.


• estadoes el estado de la operación intentada. Si no es 0, entonces ocurrió un error y no se
escribieron los datos.

Ver también:DAQ_REGPIPE y DAQ_CHECKP.

Procedimiento integrado DAQ_WRITE


No tiene que usar la misma variable para escribir datos en la tubería que se usó para
registrar la tubería. El único
El requisito es que el tipo de datos de la variable escrita coincida con el tipo de variable
utilizada para registrar la tubería.

Procedimiento integrado DAQ_WRITE


Si una aplicación de PC está monitoreando la tubería, cada llamada a DAQ_WRITE
resultará en un evento FRCPipe_Receive.

Ejemplo:El siguiente ejemplo registra la tubería KAREL 2 y escribe en ella cuando la tubería está activa.

Procedimiento integrado DAQ_WRITE


PROGRAMA DAQWRITE
%AMBIENTE adquisición de datos

%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

- - registre la tubería 2 de 10 KB en DRAM como kldaq.dat


DAQ_REGPIPE(2, DAQ_DRAM, 100, '', 'datavar', &
'kldaq.dat', 1, estado)
SI estado<>0 ENTONCES
POST_ERR(estado,' ',0,er_abortar) ENDIF

- - use DAQ_CHECKP para monitorear el estado de la tubería

A–102
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

DAQ_CHECKP(2, pipestat, números bytes)


datavar.recuento =0
MIENTRAS (pipestat Y DAQ_PIPREG) > 0 HACER - - hacer mientras está registrado
- - Actualizar variable de datos datavar.count
= datavar.count + 1 datavar.dataval =
$FAST_CLOCK
- - comprobar si la tubería está activa
SI (pipestat Y DAQ_ACTIVE) > 0 ENTONCES
- - escribir en la tubería
DAQ_WRITE(2, '', vardatos, estado) SI
estado<>0 ENTONCES
POST_ERR(estado,' ',0,er_abortar) ENDIF

TERMINARA SI

- - retrasar para reducir la carga DELAY(200)

DAQ_CHECKP(2, pipestat, numbytes)


ENDWHILE
FIN DE ESCRITURA DAQ

NotaEste integrado solo está disponible cuando se cargan las opciones de DAQ o monitor de datos.

A.5.7 Directiva de traductor %DEFGROUP

Objetivo:Especifica el grupo de movimiento predeterminado que utilizará el traductor

Sintaxis:%DEFGRUPO = n

Detalles:

• nortees el número del grupo de movimiento.

• El rango es de 1 al número de grupos en el controlador.

• Si no se especifica %DEFGROUP, se utiliza el grupo 1.

A.5.8 Procedimiento integrado DEF_SCREEN

Objetivo:Define una pantalla

Sintaxis:DEF_SCREEN(screen_name, disp_dev_name, estado)

Parámetros de entrada/salida:

A–103
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

[en] nombre_pantalla :STRING

[en] disp_dev_name :STRING

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :UIF

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:

'TP' Teach Pendant Device'CRT' Dispositivo CRT/KB

• estadoexplica el estado de la operación intentada. (Si no es igual a 0, entonces ocurrió un error).

Ver también:Procedimiento integrado ACT_SCREEN

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.5.9 Procedimiento integrado DEF_WINDOW

Objetivo:Definir una ventana

Sintaxis:DEF_WINDOW(nombre_ventana, n_filas, n_columnas, opciones, estado)

Parámetros de entrada/salida:

[en] nombre_ventana :STRING

[en] n_filas: ENTERO

[en] n_columnas :ENTERO

[en] opciones :ENTERO

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :PBCORE

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.

• n_filasyn_colsespecifique el tamaño de la ventana en caracteres de tamaño estándar. Cualquier línea que


contenga caracteres de doble ancho o doble ancho y doble alto contendrá solo la mitad de esta cantidad de
caracteres. La primera fila y columna comienzan en 1.

• opcionesdebe ser uno de los siguientes:

0 :Sin opción

wd_com_cursr :Cursor común

wd_scrolled: Desplazamiento vertical

wd_com_cursr + wd_scrolled: cursor común + desplazamiento vertical

• 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.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ver también:ATT _WINDOW_D, ATT_WINDOW_S Procedimientos integrados

A.5.10 Directiva de traductor %DELAY

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

• nortees el tiempo de retardo en milisegundos.

• El tiempo de retardo predeterminado es de 8 ms, si no se especifica DELAY

• 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.

A.5.11 Declaración DE DEMORA

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:

time_in_ms :una expresión INTEGER

Detalles:

• Si el movimiento está activo en el momento del retraso, el movimiento continúa.

• tiempo_en_mses el tiempo en milisegundos. El retraso real será de cero a $SCR.$cond_time milisegundos


menos que el tiempo redondeado.

• Una especificación de tiempo de cero no tiene ningún efecto.

• 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

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

A–106
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

Sección B.11, "Manipulación de valores de variables mostradas dinámicamente" (CHG_DATA.KL)

Sección B.1, "Configuración de puertos de salida digital para monitoreo" (DOUT_EX.KL)

A.5.12 Procedimiento integrado DELETE_FILE

Objetivo:Elimina el archivo especificado

Sintaxis:DELETE_FILE(file_spec, nowait_sw, estado)

Parámetros de entrada/salida:

[en] especificación_archivo :CADENA

[en] nowait_sw :BOOLEANO

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :FDEV

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.

Notanoesperar_swno está disponible en esta versión y debe establecerse en FALSO.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ver también:COPY_FILE, RENAME_FILE Procedimientos integrados

Ejemplo:Referirse aSección B.3, "Guardar datos en el dispositivo predeterminado" (SAVE_VRS.KL), para obtener un
ejemplo de programa detallado.

A.5.13 Procedimiento integrado DELETE_NODE

Objetivo:Elimina un nodo de ruta de una RUTA

Sintaxis:DELETE_NODE(ruta_var, nodo_num, estado)

A–107
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

Parámetros de entrada/salida:

[en] ruta_var :RUTA

[en] núm_nodo: ENTERO

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :PATHOP

Detalles:

• núm_nodoespecifica el nodo que se eliminará de la RUTA especificada porruta_var.

• Todos los nodos más allá del nodo eliminado se volverán a numerar.

• núm_nododebe estar en el rango de uno a PATH_LEN(path_var). Si está fuera de este rango, el


estado se devuelve con un error.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ver también:Procedimientos integrados APPEND_NODE, INSERT_NODE

Ejemplo:Referirse aSección B.2, "Copia de variables de ruta" (CPY_PTH.KL), para ver un ejemplo de programa
detallado.

A.5.14 Procedimiento integrado DELETE_QUEUE

Objetivo:Elimina una entrada de una cola

Sintaxis:DELETE_QUEUE(número_secuencia, cola, datos_cola, estado)

Parámetros de entrada/salida:

[en] secuencia_no :INTEGER

[entrada,salida] queue_t :QUEUE_TYPE

[entrada, salida] cola_datos :ARRAY OF INTEGER

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :PBQMGR

Detalles:

• Utilice COPY_QUEUE para obtener una lista de los números de secuencia.

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.

• cola_tespecifica la variable de cola para la cola.


• cola_datosespecifica la matriz utilizada para contener los datos en la cola. La longitud de esta matriz
determina el número máximo de entradas en la cola.

• estadodevuelve 61003, "Número de secuencia incorrecta", si el número de secuencia especificado no está en la cola.

Ver también:APPEND_QUEUE, COPY_QUEUE, INSERT_QUEUE Procedimientos integrados,Sección 16.8,


"Uso de colas para la comunicación de tareas"

A.5.15 Procedimiento integrado DEL_INST_TPE

Objetivo:Elimina la instrucción especificada en el programa del Teach Pendant especificado

Sintaxis:DEL_INST_TPE(open_id, lin_num, estado)

Parámetros de entrada/salida:

[en] id_abierto :INTEGER

[en] lin_num :INTEGER

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :TPE

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.

• lin_numespecifica el número de línea de la instrucción que se va a eliminar.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ha ocurrido un error.

Ver también:CREATE_TPE, CLOSE_TPE, COPY_TPE, OPEN_TPE, SELECT_TPE Procedimientos


integrados

A.5.16 Procedimiento integrado DET_WINDOW

Objetivo:Separar una ventana de una pantalla

Sintaxis:DET_WINDOW(nombre_ventana, nombre_pantalla, estado)

A–109
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

Parámetros de entrada/salida:

[en] nombre_ventana :STRING

[en] nombre_pantalla :STRING

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :PBCORE

Detalles:

• Elimina la ventana especificada de la pantalla especificada.

• nombre_ventanayNombre de pantalladebe ser válido y estar ya definido.

• 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.

• Se produce un error si la ventana no está adjunta a la pantalla.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ver también:DEF_WINDOW, ATT_WINDOW_S, ATT_WINDOW_D Procedimientos integrados

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.5.17 DESHABILITAR CONDICIÓN Acción

Objetivo:Se utiliza dentro de un controlador de condiciones para deshabilitar el controlador de condiciones especificado

Sintaxis:DESHABILITAR CONDICIÓN [cond_hand_no]

dónde:

cond_hand_no :una expresión INTEGER

Detalles:

• Si el manejador de condiciones no está definido, DISABLE CONDITION no tiene efecto.

• 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

• cond_hand_nodebe estar en el rango de 1-1000. De lo contrario, el programa se cancelará con un error.

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.

DESHABILITAR CONDICIÓN Acción


CONDICIÓN[1]:
CUANDO EVENTO[1] HACER

CONDICIÓN DE DESHABILITACIÓN[2]

CONDICIÓN FINAL

A.5.18 Declaración de CONDICIÓN DE DESHABILITACIÓN

Objetivo:Deshabilita el controlador de condiciones especificado

Sintaxis:DESHABILITAR CONDICIÓN [cond_hand_no]

dónde:

cond_hand_no :una expresión INTEGER

Detalles:

• Si el manejador de condiciones no está definido, DISABLE CONDITION no tiene efecto.

• 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.

• cond_hand_nodebe estar en el rango de 1-1000. De lo contrario, el programa se cancelará con un error.

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

Ejemplo:El siguiente ejemplo permite al operador elegir si desea ver o nocontar.

A–111
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

Declaración de CONDICIÓN DE DESHABILITACIÓN

PROGRAMA p_deshabilitar
VAR
contar : ENTERO
responder : CADENA[1]
RUTINA cuenta de espectáculos

EMPEZAR

ESCRIBIR ('cuenta = ', cuenta:: 10, CR) FIN


mostrar cuenta
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

A.5.19 Declaración del TEMPORIZADOR DE DESCONEXIÓN

Objetivo:Detiene la actualización de una variable de reloj previamente conectada como temporizador

Sintaxis:TEMPORIZADOR DE DESCONEXIÓN timer_var

dónde:

timer_var: una variable INTEGER estática definida por el usuario

Detalles:

• Sitemporizador_varno está actualmente conectado como un temporizador, la instrucción DISCONNECT TIMER no


tiene efecto.

• Sitemporizador_vares una variable del sistema o local, el programa no se traducirá.

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.

Declaración del TEMPORIZADOR DE DESCONEXIÓN


move_to_pr1 – Llame al programa TP para moverse a PR[1]
timevar = 0
CONECTAR TEMPORIZADOR A timevar

move_to_pr2 – Llame al programa TP para pasar a PR[2]


TIEMPO DE DESCONEXIÓN timevar

A.5.20 Procedimiento integrado DISCTRL_ALPH

Objetivo:Muestra y controla la entrada de cadenas alfanuméricas en una ventana específica.

Sintaxis:DISCTRL_ALPH(nombre_ventana, fila, columna, cadena, nombre_dict, ele_dict, char_término, estado)

Parámetros de entrada/salida:

[en] nombre_ventana :STRING

[en] fila: ENTERO

[en] col :ENTERO

[entrada,salida] str :CADENA

[en] dict_name :CADENA

[en] dict_ele :INTEGER

[fuera] term_char :INTEGER

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :UIF

Detalles:

• nombre_ventanaidentifica la ventana dondecallese muestra actualmente. Ver tambiénSección 7.10.1 oSección


7.10.2para obtener una lista de las ventanas que se pueden usar paranombre_ventana.

A–113
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

• filaespecifica el número de fila dondecallese visualiza.


• columnaespecifica el número de columna dondecallese visualiza.

• calleespecifica la cadena KAREL que se va a modificar, que se muestra actualmente en lanombre_ventana en la


posiciónfilaycolumna.

• 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.

'PROG': entrada del nombre del programa

'COMM': entrada de comentario

• 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.

• Si un valor predefinido paranombre_dictse usa, entoncesdict_elese ignora

• 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.

• estadoexplica el estado de un intento de operación. Si no es igual a 0, entonces ocurrió un error.

NotaDISCTRL_ALPH solo mostrará y controlará la entrada de cadenas si el menú USER o USER2 es el


menú seleccionado. Por lo tanto, use FORCE_SPMENU(device_stat, SPI_TPUSER, 1) antes de llamar a
DISCTRL_ALPH para forzar el menú USER.

Ver también:Procedimientos integrados ACT_SCREEN, DISCTRL_LIST

Ejemplo:Referirse aSección B.13, "Uso de DISCTRL_ALPHA incorporado" (DCLAP_EX.KL), para ver un ejemplo de
programa detallado.

A.5.21 Procedimiento integrado DISCTRL_FORM

Objetivo:Muestra y controla un formulario en la consola portátil o en la pantalla CRT/KB

A–114
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

Sintaxis:DISCTRL_FORM(dict_name, ele_number, value_array, inact_array, change_array,


term_mask, def_item, term_char, estado)

Parámetros de entrada/salida:

[en] dict_name : STRING

[en] ele_number : ENTERO

[en] value_array : ARRAY DE CADENA

[en] inactive_array : ARRAY DE BOOLEAN

[fuera] change_array : MATRIZ DE BOOLEAN

[en] term_mask : ENTERO

[entrada,salida] def_item : ENTERO

[fuera] term_char : ENTERO

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :PBcore

Detalles:

• nombre_dictes el nombre de cuatro caracteres del diccionario que contiene el formulario.

• ele_numberes el número de elemento del formulario.

• 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_del_programa]es el nombre del programa que contiene la variable especificada. Si no se especifica


[prog_name], se utiliza el programa actual que se está ejecutando. '[*SYSTEM*]' debe usarse para las
variables del sistema.

— nombre_vardebe hacer referencia a una variable de programa global estática.

— nombre_varpuede contener números de nodo, nombres de campo y/o subíndices.

— 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.

— Si no se utiliza un inactive_array, se puede utilizar un tamaño de matriz de 1. No es necesario


inicializar la matriz.

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.

— Si se establece el valor correspondiente, el booleano se establecerá en VERDADERO; de lo contrario, se


establecerá en FALSO. No necesita inicializar la matriz.

— El tamaño de la matriz puede ser mayor o menor que la cantidad de elementos de datos en el formulario.

— Si no se usa change_array, se puede usar un tamaño de matriz de 1.

• 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.

kc_func_key — Teclas de función

kc_enter_key — Teclas Intro y Retorno

kc_prev_key — Tecla ANTERIOR

Si se selecciona un elemento seleccionable o un nuevo menú, el formulario siempre terminará, independientemente de


term_mask.

• 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:

ky_undef — No se presionó ningún carácter de terminación

ky_select — Se seleccionó un elemento seleccionable

ky_new_menu — Se seleccionó un nuevo menú

ky_f1 — Se seleccionó la tecla de función 1

ky_f2 — Se seleccionó la tecla de función 2

ky_f3 — Se seleccionó la tecla de función 3

ky_f4 — Se seleccionó la tecla de función 4

ky_f5 — Se seleccionó la tecla de función 5

ky_f6 — Se seleccionó la tecla de función 6

A–116
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

ky_f7 — Se seleccionó la tecla de función 7

ky_f8 — Se seleccionó la tecla de función 8

ky_f9 — Se seleccionó la tecla de función 9

ky_f10 — Se seleccionó la tecla de función 10

• DISCTRL_FORM mostrará el formulario en el dispositivo colgante de enseñanza. Para mostrar el formulario en el


dispositivo CRT/KB, debe crear una variable INTEGER,dispositivo_stat,y configúralo encrt_panel.Para establecer el control
en el dispositivo colgante de enseñanza, configuredispositivo_statatp_panel.

• estadoexplica el estado de la operación intentada. Siestadodevuelve un valor distinto de 0, se ha


producido un error.

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.

Ver también:Capítulo 10DICCIONARIOS Y FORMULARIOS,para más detalles y ejemplos.

A.5.22 Procedimiento integrado DISCTRL_LIST

Objetivo:Muestra y controla el movimiento del cursor y la selección en una lista en una ventana específica

Sintaxis:DISCTRL_LIST(file_var, display_data, list_data, acción, estado)

Parámetros de entrada/salida:

[en] archivo_ var :ARCHIVO

[entrada, salida] mostrar_datos :DISP_DAT_T

[en] list_data: MATRIZ DE CADENA

[en] acción: ENTERO

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :PBCORE

Detalles:

• file_vardebe abrirse en la ventana donde aparecerán los datos de la lista.

• mostrar_datosse utiliza para mostrar la lista. Consulte el tipo de datos DISP_DAT_T para obtener más información.

• list_datacontiene la lista de datos a mostrar.

A–117
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

• accióndebe ser uno de los siguientes:

dc_disp : Posiciona el cursor como se define en display_data

dc_up : Mueve el cursor una fila hacia arriba

dc_dn : Mueve el cursor una fila hacia abajo

dc_lf : Mueve el cursor un campo a la izquierda

dc_rt : Mueve el cursor un campo a la derecha

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

• Usar DISCTRL_FORM es el método preferido para mostrar y controlar información en una


ventana.

Ver también:Procedimiento integrado DISCTRL_FORM,Sección 7.10.1, "Menú de usuario en el Teach Pendant",


Sección 7.10.2, "Menú de usuario en CRT/KB,"Capítulo 10DICCIONARIOS Y FORMULARIOS

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.

A.5.23 Procedimiento integrado DISCTRL_PLMN

Objetivo:Crea y controla el movimiento del cursor y la selección en un menú desplegable

Sintaxis:DISCTRL_PLMN(dict_name, element_no, ftn_key_no, def_item, term_char, estado)

Parámetros de entrada/salida:

[en] dict_name :CADENA

[en] número_elemento :INTEGER

[en] ftn_key_num :INTEGER

[entrada,salida] def_item :INTEGER

[fuera] term_char :INTEGER

[fuera] estado: ENTERO

A–118
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

%MEDIO AMBIENTE Grupo : UIF

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.

• ftn_key_numes la tecla de función donde se debe mostrar el menú desplegable.

• 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_enter — Se seleccionó un elemento del menú

ky_prev — No se seleccionó un elemento del menú

ky_new_menu — Se seleccionó un nuevo menú

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.

Ejemplo:En este ejemplo, el archivo de diccionario TPEXAMEG.TX se carga como'EXAMEN'en el controlador.


TPPLMN.KL llama a DISCTRL_PLMN para mostrar y procesar el menú desplegable arriba de la tecla de función 3.

Procedimiento integrado DISCTRL_PLMN


--------------------------------------------------
TPEXAMEG.TX
--------------------------------------------------

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

A.5.24 Procedimiento integrado DISCTRL_SBMN

Objetivo:Crea y controla el movimiento del cursor y la selección en un menú de subventana

Sintaxis:DISCTRL_SBMN(dict_name, element_no, def_item, term_char, estado)

Parámetros de entrada/salida:

[en] dict_name :CADENA

[en] número_elemento :INTEGER

[entrada,salida] def_item :INTEGER

[fuera] term_char :INTEGER

A–120
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo : UIF

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_enter — Se seleccionó un elemento del menú

ky_prev — No se seleccionó un elemento del menú

ky_new_menu — Se seleccionó un nuevo menú

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.

Ejemplo:En este ejemplo, el archivo de diccionario TPEXAMEG.TX se carga como'EXAMEN'en el controlador.


TPSBMN.KL llama a DISCTRL_SBMN para mostrar y procesar el menú de la subventana.

Procedimiento integrado DISCTRL_SBMN


--------------------------------------------------
TPEXAMEG.TX

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

A.5.25 Procedimiento integrado DISCTRL_TBL

Objetivo:Muestra y controla una tabla en el dispositivo de enseñanza

Sintaxis:DISCTRL_TBL(dict_name, ele_number, num_rows, num_columns, col_data, inact_array,


change_array, def_item, term_char, term_mask, value_array, added_wind, status)

Parámetros de entrada/salida:

[en] dict_name :CADENA

[en] ele_number :INTEGER

[en] núm_filas: ENTERO

[en] num_columns :INTEGER

[en] col_data :ARRAY OF COL_DESC_T

[en] inact_array :ARRAY DE BOOLEAN

[fuera] change_array :ARRAY OF BOOLEAN

[entrada,salida] def_item :INTEGER

[fuera] term_char :INTEGER

[en] term_mask :INTEGER

[en] value_array :ARRAY DE CADENA

[en] adjunto_viento :BOOLEANO

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo : UIF

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

• ele_numberes el número de elemento del encabezado de la tabla.

• núm_filases el número de filas en la tabla.


• num_columnases el número de columnas de la tabla.

• 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.

- Siinact_arrayno se utiliza, se puede utilizar un tamaño de matriz de 1 y no es necesario inicializar la


matriz.

• cambiar_matrizes una matriz bidimensional de BOOLEAN que corresponde a elementos de datos


formateados en la tabla.

— Si se establece el valor correspondiente, el booleano se establecerá en VERDADERO; de lo contrario, se


establecerá en FALSO. No necesita inicializar la matriz.

— El tamaño de la matriz puede ser menor o mayor que la cantidad de elementos de datos en la tabla.

- Sicambiar_matrizno se usa, entonces se puede usar un tamaño de matriz de 1.

• 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:

ky_undef — No se presionó ningún carácter de terminación

ky_select — Un elemento seleccionable como seleccionado

ky_new_menu — Se seleccionó un nuevo menú

ky_f1 — Se seleccionó la tecla de función 1

ky_f2 — Se seleccionó la tecla de función 2

ky_f3 — Se seleccionó la tecla de función 3

ky_f4 — Se seleccionó la tecla de función 4

ky_f5 — Se seleccionó la tecla de función 5

ky_f6 — Se seleccionó la tecla de función 6

A–124
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

ky_f7 — Se seleccionó la tecla de función 7

ky_f8 — Se seleccionó la tecla de función 8

ky_f9 — Se seleccionó la tecla de función 9

ky_f10 — Se seleccionó la tecla de función 10

• 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.

kc_display — Teclas visualizables

kc_func_key — Teclas de función

kc_keypad — Teclado y teclas de edición

kc_enter_key — Teclas Intro y Retorno

kc_delete — Teclas Supr y Retroceso

kc_lr_arw — Teclas de flecha izquierda y derecha

kc_ud_arw — Teclas de flecha arriba y abajo

kc_other — Otras claves (como Prev)

• 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'.

— [nombre_del_programa]especifica el nombre del programa que contiene la variable especificada. Si no


se especifica [prog_name], se utiliza el programa actual que se está ejecutando.

— nombre_vardebe hacer referencia a una variable de programa global estática.

— nombre_varpuede contener números de nodo, nombres de campo y/o subíndices.

• adjuntar_vientodebe establecerse en 1 si la ventana del administrador de tablas debe conectarse al dispositivo de


visualización. Si ya está conectado, este parámetro se puede establecer en 0.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

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.5.26 Procedimiento integrado DISMONT_DEV

Objetivo:Desmonta el dispositivo especificado.

Sintaxis:DISMONT_DEV (dispositivo, estado)

A–125
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

Parámetros de entrada/salida:

[en] dispositivo :STRING

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :FDEV

Detalles:

• dispositivoespecifica el dispositivo que se va a desmontar.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ver también:MOUNT_DEV, FORMAT_DEV Procedimientos integrados

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.5.27 DISP_DAT_T Tipo de datos

Objetivo:Define el tipo de datos para usar en DISCTRL_LIST incorporado

Sintaxis:

disp_dat_t = ESTRUCTURA

win_start: ARRAY [4] DE CORTO

win_end: ARRAY [4] DE CORTO

curr_win: CORTO

cursor_row : CORTO

lins_per_pg: CORTO

curs_st_col: ARRAY [10] DE CORTO

curs_en_col : ARRAY [10] DE 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.

• win_startes la fila inicial de cada ventana.


• ganar_finales la fila final de cada ventana.
• curr_windefine la ventana a mostrar. El conteo comienza en cero (0 mostrará la primera ventana).

• cursor_filaes la fila actual del cursor.

• lins_per_pges el número de líneas por página para avanzar y retroceder.

• 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).

• último_campoes el último campo de la lista.

• curr_it_numes el número de artículo sobre el que se encuentra el cursor.

• sob_it_numes el número de elemento del primer elemento de la matriz.

• eob_it_numes el número de elemento del último elemento de la matriz.

• last_it_numes el número de artículo del último artículo de la lista.

• menu_ides el identificador de menú actual. No se ha implementado. Puede dejarse sin inicializar.

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.5.28 Procedimiento integrado DOSFILE_INF

Objetivo:Devuelve información de un dispositivo como una cadena en el parámetro de valor.

Sintaxis:DOSFILE_INF(dispositivo, elemento, value_str, estado)

Parámetros de entrada/salida:

A–127
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

[en] dispositivo :STRING

[en] artículo: ENTERO

[fuera] value_str :CADENA

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :PBCORE

Detalles:

• DOSFILE_INF solo está disponible en el controlador R-30iB

• dispositivopuede ser UD1:

• artículoes la constante de los datos a devolver:

— DF_MANUFNAME (nombre del fabricante)

— DF_PRODNAME (Nombre del producto)

— DF_SERIALNO (Número de serie)


— DF_PRODID (Número de identificación del producto asignado por la autoridad USB)

— DF_VENDID (número de identificación del proveedor asignado por la autoridad USB)

• cadena_valores la cadena donde se devuelven los datos.

• estadoexplica el estado de un intento de operación. Si no es igual a 0, entonces ocurrió un error.

Ejemplo:El siguiente ejemplo obtiene información sobre el dispositivo UD1.

Procedimiento integrado DOSFILE_INF

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 = ''

DOSFILE_INF('UD1:', DF_PRODNAME, valor, estado) write (cr, '2:


', estado, ', ', valor, cr) valor = ''

DOSFILE_INF('UD1:', DF_SERIALNO, valor, estado) escritura (cr,


'3: ', estado, ', ', valor, cr) retardo (2000)

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 = ''

DOSFILE_INF('UD1:', DF_VENDID, valor, estado) escribir (cr,


'5: ', estado, ', ', valor, cr) end dfinfo

A.6 - E - KAREL IDIOMA DESCRIPCIÓN

A.6.1 HABILITAR CONDICIÓN Acción

Objetivo:Habilita el controlador de condiciones especificado

Sintaxis:HABILITAR CONDICIÓN [cond_hand_no]

dónde:

cond_hand_no :una expresión INTEGER

Detalles:

• ENABLE CONDITION no tiene efecto cuando

— El manejador de condiciones no está definido

— El manejador de condiciones está definido pero ya está habilitado

• cond_hand_nodebe estar en el rango de 1-1000. De lo contrario, el programa se cancelará con un error.

• 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.

Ver también:DESHABILITAR CONDICIÓN Acción,Capítulo 6MANEJADORES DE CONDICIONES

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

A.6.2 Declaración de CONDICIÓN DE HABILITACIÓN

Objetivo:Habilita el controlador de condiciones especificado

Sintaxis:HABILITAR CONDICIÓN [cond_hand_no]

dónde:

cond_hand_no :una expresión INTEGER

Detalles:

• ENABLE CONDITION no tiene efecto cuando

— El manejador de condiciones no está definido

— El manejador de condiciones está definido pero ya está habilitado

• cond_hand_nodebe estar en el rango de 1-1000. De lo contrario, el programa se cancelará con un error.

• 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.

Ver también:Declaración de CONDICIÓN DE DESHABILITACIÓN,Capítulo 6MANEJADORES DE CONDICIONES,Apéndice E, “Diagramas


de sintaxis”, para obtener información adicional sobre la sintaxis

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados.

Sección B.6, "Programa de manejadores de condiciones y variables de ruta" (PTH_MOV.KL)

Sección B.1, "Configuración de puertos de salida digital para monitoreo" (DOUT_EX.KL)

A.6.3 %ENVIRONMENT Directiva Traductor

Objetivo:Carga el archivo de entorno.

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.

• ruta_nombrepuede ser uno de los siguientes:

— 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.

• SYSTEM.EV y PBCORE.EV son cargados automáticamente por el traductor y no deben especificarse


en su programa KAREL. El traductor fuera de línea imprimirá el mensaje "Continuando

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.

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.3, "Guardar datos en el dispositivo predeterminado" (SAVE_VR.KL)

Sección B.6, "Programa de manejadores de condiciones y variables de ruta" (PTH_MOVE.KL)

Sección B.14, "Aplicación de compensaciones a un programa de Teach Pendant copiado" (CPY_TP.KL)

A.6.4 Procedimiento integrado ERR_DATA

Objetivo:Lee el error solicitado del historial de errores y devuelve el error

Sintaxis:ERR_DATA(seq_num, error_code, error_string, cause_code, cause_string, time_int,


severity, prog_nam)

Parámetros de entrada/salida:

[entrada,salida] seq_num :INTEGER

[fuera] código_error :INTEGER

[fuera] cadena_de_error :CADENA

[fuera] código_causa :INTEGER

[fuera] causa_cadena :CADENA

[fuera] time_int :INTEGER

[fuera] gravedad: ENTERO

[fuera] prog_nam :CADENA

%MEDIO AMBIENTE Grupo :ERRS

• seq_numes el número de secuencia del error anterior solicitado.seq_numdebe establecerse en 0 si se


desea el error más antiguo del historial.seq_numdebe establecerse en MAXINT si se desea el error más
reciente.

• seq_numse establece en el número de secuencia del error que se devuelve.

— 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.

• código de errordevuelve el código de error ycadena_de_errordevuelve el mensaje de error.cadena_de_errordebe


tener al menos 40 caracteres o el programa se cancelará con un error.

• código_causadevuelve el código de razón si existe ycausa_cadenadevuelve el mensaje.causa_cadena debe


tener al menos 40 caracteres o el programa se cancelará con un error.

• código de errorycódigo_causaestán en el siguiente formato:

ffccc (decimal)

donde ff representa el código de instalación del error.

ccc representa el código de error dentro de la instalación especificada.

Consulte el Capítulo 6, "Manejadores de condiciones", para conocer los códigos de función de error.

• tiempo_intdevuelve el tiempo quecódigo de errorfue posteado. La hora está en formato codificado y se


debe usar CNV_TIME_STR incorporado para obtener la cadena de fecha y hora.

• gravedaddevuelve uno de los siguientescódigos_de_error:0 :ADVERTENCIA1 :PAUSA2 :CANCELAR

• Si el error se produce en la ejecución de un programa,prog_namespecifica el nombre del programa en el


que se produjo el 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.

Ver también:Procedimiento integrado POST_ERR

A.6.5 Condición de ERROR

Objetivo:Especifica un error como condición

Sintaxis:ERROR[n]

dónde:

n :una expresión INTEGER o asterisco (*)

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.

A.6.6 Cláusula EVAL

Objetivo:Permite que las expresiones se evalúen en una definición de controlador de condiciones

Sintaxis:EVAL(expresión)

dónde:

expresión :una expresión KAREL válida

Detalles:

• expresiónse evalúa cuando se define el controlador de condiciones, en lugar de dinámicamente durante el


escaneo.

• 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)

A.6.7 EVENTO Condición

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:

event_no: es una expresión INTEGER

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.

• evento_nodebe estar en el rango de -32768 a 32767.

Ver también:Acción de EVENTO DE SEÑAL y declaración de CONDICIÓN o EVENTO DE SEÑAL

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.6.8 Función incorporada EXP

Objetivo:Devuelve un valor REAL igual a e (aproximadamente 2,71828) elevado a la potencia especificada por
un argumento REAL

Sintaxis:EXP(x)

Tipo de retorno de función: REAL

Parámetros de entrada/salida:

[en] x :REAL

%ENTORNO Grupo :SISTEMA

Detalles:

• EXP devuelve e (base del logaritmo natural) elevado a la potenciaX.

• Xdebe ser inferior a 80. De lo contrario, el programa se detendrá con un error.

Ejemplo:El siguiente ejemplo usa el EXP incorporado para evaluar el exponente de la expresión (-6.44 +
var.tiempo/(var.tiempo + 20)).

Función incorporada EXP


ESCRIBIR (CR, 'Ingrese el tiempo necesario para el movimiento:')
LEER (var de tiempo)
distancia = vartiempo *
EXP(-6.44 + var.tiempo/(var.tiempo + 20))

A-135
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

ESCRIBIR (CR, CR, 'Distancia para mover:', distancia::10::3)

A.7 - F - KAREL IDIOMA DESCRIPCIÓN

A.7.1 ARCHIVO Tipo de datos

Objetivo:Define una variable como tipo de datos FILE

Sintaxis:file

Detalles:

• FILE le permite declarar una variable estática como un archivo.

• Debe utilizar una variable de ARCHIVO en las instrucciones OPEN FILE, READ, WRITE, CANCEL FILE
y CLOSE FILE.

• Puede pasar una variable FILE como parámetro a una rutina.

• 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:

— Las variables FILE deben ser variables estáticas.

— Las variables de ARCHIVO nunca se guardan.

— Las variables de ARCHIVO no pueden ser valores de retorno de funciones.

— 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í.

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.2, "Copiar variables de ruta" (CPY_PTH.KL)

Sección B.12, "Visualización de una lista desde un archivo de diccionario" (DCLST_EX.KL)

A.7.2 Procedimiento integrado FILE_LIST

Objetivo:Genera una lista de archivos con el nombre y el tipo especificados en el dispositivo especificado.

Sintaxis:FILE_LIST(file_spec, n_skip, format, ary_nam, n_files, status)

Parámetros de entrada/salida:

A-136
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

[en] especificación_archivo :CADENA

[en] n_skip :ENTERO

[en] formato: ENTERO

[fuera] ary_nam :ARRAY de STRING

[fuera] n_archivos :INTEGER

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :BYNAM

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:

1file_namesolo, sin espacios en blanco 2fitipo_lesolo, sin espacios en blanco3finombre_archivo.tipo_archivo,sin espacios en


blanco4 nombre de archivo.ext tamaño fecha horaLa longitud total es de 40 caracteres.

- Losfile_namecomienza con el carácter 1.

- Losfitipo_le(extensión) comienza con el carácter 10.

- LosTallacomienza con el carácter 21.

- Losfechacomienza con el carácter 26.

- Lostiempocomienza con el carácter 36.

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.

• n_archivoses el número de archivos almacenados ennombre_ario.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ver también:VAR_LIST, PROG_LIST Procedimientos incorporados

A–137
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

Ejemplo:Referirse aSección B.7, "Listado de archivos y programas y manipulación de


cadenas" (LIST_EX.KL), para ver un ejemplo de programa detallado.

A.7.3 Declaración FOR...ENDFOR

Objetivo:Construcción de bucle basada en un contador INTEGER

Sintaxis:FOR cuenta = inicial || A | HACIA ABAJO || final

DO{stmnt} ENDFOR

dónde:

[en] cuenta: variable ENTERA

[in]expresión inicial :INTEGER

[en] final: expresión INTEGER

[in]stmnt: instrucción KAREL ejecutable

Detalles:

• Inicialmente,contarse fija al valor deinicialyfianalse evalúa. Para cada iteración,contar se


compara confinal

• Si se usa TO,contarse incrementa para cada iteración del bucle.

• Si se usa DOWNTO,contarse decrementa para cada iteración del bucle.

• Sicontares mayor quefianalusando TO,stmntnunca se ejecuta.

• Sicontares menos quefianalusando ABAJO,stmntnunca se ejecuta en la primera iteración.

• Si la comparación no falla en la primera iteración, el bucle FOR se ejecutará el número de veces


que sea igual a ABS(final - iniciall) + 1.

• Sifianal=inicial,el bucle se ejecuta una vez.


• inicialse evalúa antes de entrar en el bucle. Por lo tanto, cambiando los valores deinicialyfianal durante la
ejecución del bucle no tiene ningún efecto sobre el número de iteraciones realizadas.

• El valor decontaral salir del bucle no se inicializa.


• Nunca emita una sentencia GO TO en un bucle FOR. Si una declaración GO TO hace que el programa salga de un bucle FOR, el
programa podría cancelarse con un error de "Desbordamiento de pila de tiempo de ejecución".

• 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.

• El programa no se traducirá sicontares una variable de sistema o un elemento ARRAY.

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.

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.2, "Copiar variables de ruta" (CPY_PTH.KL)

Sección B.6, "Programa de manejadores de condiciones y variables de ruta" (PTH_MOVE.KL)

Sección B.7, "Listado de archivos y programas y manipulación de cadenas" (LIST_EX.KL)

Sección B.11, "Manipulación de valores de variables mostradas dinámicamente" (CHG_DATA.KL)

Sección B.12, "Visualización de una lista desde un archivo de diccionario" (DCLST_EX.KL)

Sección B.14, "Aplicación de compensaciones a un programa de Teach Pendant copiado" (CPY_TP.KL)

Sección B.1, "Configuración de puertos de salida digital para monitoreo" (DOUT_EX.KL)

A.7.4 Procedimiento integrado FORCE_SPMENU

Objetivo:Fuerza la visualización del menú especificado.

Sintaxis:FORCE_SPMENU(device_code, spmenu_id, screen_no)

Parámetros de entrada/salida:

[en] código_dispositivo :INTEGER

[en] spmenu_id :INTEGER

[en] screen_no :INTEGER

%MEDIO AMBIENTE Grupo :pbcore

Detalles:

• código_dispositivoespecifica el dispositivo y debe ser una de las siguientes constantes predefinidas:

tp_panel Dispositivo colgante de enseñanza

dispositivo CRT crt_panel

• 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.

SPI_TPHINTS — UTILIDADES Sugerencias

A–139
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

SPI_TPPRGADJ — UTILIDADES Prog Ajuste

SPI_TPMIRROR — Imagen reflejada de UTILIDADES

SPI_TPSHIFT — Cambio de programa de UTILIDADES

SPI_TPTSTRUN — CICLO DE PRUEBA

SPI_TPMANUAL, SCR_MACMAN — Macros MANUALES

SPI_TPOTREL — Liberación manual de OT

SPI_TPALARM, SCR_ALM_ALL — ALARMA Registro de alarmas

SPI_TPALARM, SCR_ALM_MOT — Registro de movimiento de ALARMA

SPI_TPALARM, SCR_ALM_SYS — Registro del sistema de ALARMA

SPI_TPALARM, SCR_ALM_APPL — Registro de aplicación de ALARMA

SPI_TPDIGIO — E/S digital

SPI_TPANAIO — E/S analógica

SPI_TPGRPIO — Grupo de E/S

SPI_TPROBIO — Robot de E/S

SPI_TPUOPIO — UOP de E/S

SPI_TPSOPIO — SOP de E/S

SPI_TPPLCIO — PLC de E/S

SPI_TPSETGEN — CONFIGURACIÓN General

SPI_TPFRAM — Marcos de configuración

SPI_TPPORT — Inicialización del puerto de CONFIGURACIÓN

SPI_TPMMACRO, SCR_MACSETUP — Macro de CONFIGURACIÓN

SPI_TPREFPOS — CONFIGURACIÓN Posición de referencia

SPI_TPPWORD — CONFIGURAR Contraseñas

SPI_TPHCCOMM — SETUP Host Comm

SPI_TPSYRSR — CONFIGURAR RSR/PNS

A–140
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

SPI_TPFILS — ARCHIVO

SPI_TPSTATUS, SCR_AXIS — Eje de ESTADO

SPI_TPMEMORY — Memoria de ESTADO

SPI_TPVERSN — ID de versión de ESTADO

SPI_TPPRGSTS — Programa ESTADO

SPI_TPSFTY — Señales de seguridad de ESTADO

SPI_TPUSER — USUARIO

SPI_TPSELECT — SELECCIONAR

SPI_TPTCH — EDITAR

SPI_TPREGIS, SCR_NUMREG — Registros de DATOS

SPI_SFMPREG, SCR_POSREG — Registro de posición de DATOS

SPI_TPSYSV, SCR_NUMVAR — DATOS KAREL Vars

SPI_TPSYSV, SCR_POSVAR — DATOS KAREL Pos.

SPI_TPPOSN — POSICIÓN

SPI_TPSYSV, SCR_CLOCK — Reloj del SISTEMA

SPI_TPSYSV, SCR_SYSVAR — Variables del SISTEMA

SPI_TPMASCAL — SISTEMA Maestro/Cal

SPI_TPBRKCTR — Control de freno del SISTEMA

SPI_TPAXLM — Límites del eje del SISTEMA

SPI_CRTKCL, SCR_KCL — KCL> (solo crt_panel)

SPI_CRTKCL, SCR_CRT — EDITOR KAREL (solo crt_panel)

SPI_TPUSER2 — Menú para administradores de formularios/tablas

Ver también:Procedimiento integrado ACT_SCREEN

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.4, "Rutinas estándar" (ROUT_EX.KL)

A-141
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

Sección B.5, "Uso de registros incorporados" (REG_EX.KL)

Sección B.12, "Archivos de diccionario" (DCLISTEG.UTX)

Sección B.13, "Uso de DISCTRL_ALPHA incorporado" (DCALP_EX.KL)

Sección B.1, "Configuración de puertos de salida digital para monitoreo" (DOUT_EX.KL)

A.7.5 Procedimiento integrado FORMAT_DEV

Objetivo:Elimina cualquier información existente y registra un directorio y otra información interna en el


dispositivo especificado.

Sintaxis:FORMAT_DEV(dispositivo, nombre_volumen, nowait_sw, estado)

Parámetros de entrada/salida:

[en] dispositivo :STRING

[en] nombre_volumen :STRING

[en] nowait_sw :BOOLEANO

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :FDEV

Detalles:

• dispositivoespecifica el dispositivo a inicializar.

• 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.

Notanoesperar_swno está disponible en esta versión y debe establecerse en FALSO.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ver también:MOUNT_DEV, DISMOUNT_DEV Procedimientos incorporados

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

A.7.6 MARCO función incorporada

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.

Sintaxis:CUADRO(pos1, pos2, pos3 <,pos4>)

Función Tipo de retorno: Posición

Parámetros de entrada/salida:

[en]pos1 :POSICIÓN

[en]pos2 :POSICIÓN

[en]pos3 :POSICIÓN

[en]pos4 :POSICIÓN

%ENTORNO Grupo :SISTEMA

Detalles:

• El valor devuelto se calcula de la siguiente manera:

— 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.

— El eje x es paralelo a una línea desdepos1apos2.

— El plano xy se define como el plano que contienepos1,pos2,ypos3,conpos3en la mitad


positiva del plano.
— El eje y es perpendicular al eje x y en el plano xy.
— El eje z pasa por pos1 y es perpendicular al plano xy. La dirección positiva está determinada
por la regla de la mano derecha.

— La configuración del resultado se establece en la depos1,opos4si es suministrado.

• 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.

Si alguna de las condiciones no se cumple, el programa se detiene con un error.

A–143
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

Figura A–2. MARCO función incorporada

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.

MARCO función incorporada


ESCRIBIR('Enseñar esquina_1, esquina_2, esquina_3',CR)
LIBERAR --Permite que el operador encienda el colgante de enseñanza
- - y enseñar posiciones
ADJUNTAR --Devuelve el control de movimiento al programa
$UFRAME = CUADRO (esquina_1, esquina_2, esquina_3)

A.7.7 Cláusula FROM

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:

prog_name : cualquier identificador de programa KAREL

Detalles:

• La cláusula FROM puede ser parte de una declaración de tipo, variable o rutina.

• El tipo, variable o rutina pertenece al programa especificado porprog_name.

• 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.

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.6, "Programa de manejadores de condiciones y variables de ruta" (PTH_MOVE.KL)

Sección B.7, "Listado de archivos y programas y manipulación de cadenas" (LIST_EX.KL)

Sección B.10, "Uso de pantallas dinámicas incorporadas" (DYN_DISP.KL)

Sección B.11, "Manipulación de valores de variables mostradas dinámicamente" (CHG_DATA.KL)

Sección B.12, "Visualización de una lista desde un archivo de diccionario" (DCLST_EX.KL)

Sección B.1, "Configuración de puertos de salida digital para monitoreo" (DOUT_EX.KL)

A.8 - G - KAREL IDIOMA DESCRIPCIÓN

A.8.1 Procedimiento integrado GET_ATTR_PRG

Objetivo:Obtiene datos de atributos de la consola de programación especificada o del programa KAREL

Sintaxis:GET_ATTR_PRG(nombre_programa, número_atributo, valor_int, valor_cadena, estado)

Parámetros de entrada/salida:

[en] nombre_del_programa :STRING

[en] número_atributo :INTEGER

[fuera] int_value :INTEGER

[fuera] valor_cadena :CADENA

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :PBCORE

Detalles:

• nombre_del_programaespecifica el programa del que obtener el atributo.

• 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_PROG_TYPE : Tipo de programa

AT_PROG_NAME : Nombre del programa (String[12])

AT_OWNER : Propietario (Cadena[8])

AT_COMMENT : Comentario (Cadena[16])

AT_PROG_SIZE : Tamaño del programa

AT_ALLC_SIZE: tamaño de la memoria asignada

AT_NUM_LINE : Número de líneas

AT_CRE_TIME : Hora de creación (carga)

AT_MDFY_TIME : Hora modificada

AT_SRC_NAME: nombre del archivo de origen (o archivo original) (String[128])

AT_SRC_VRSN : Versión A del archivo fuente

AT_DEF_GROUP: máscara de grupo de movimiento predeterminada (para atributo de tarea). VerTabla A–16.

AT_PROTECT : Código de protección; 1: Protección APAGADA; 2 :Protección ENCENDIDA

AT_STORAGE : Tipo de almacenamiento; TPSTOR_CMOS; TPSTOR_SOMBRA; TPSTOR_ARCHIVO;


TPSTOR_SHOD

AT_STK_SIZE: tamaño de pila (para atributo de tarea)

AT_TASK_PRI: Prioridad de la tarea (para el atributo de la tarea)

AT_DURATION: Duración del intervalo de tiempo (para el atributo de la tarea)

AT_BUSY_OFF: lámpara de ocupado apagada (para atributo de tarea)

AT_IGNR_ABRT: Ignorar solicitud de cancelación (para atributo de tarea)

AT_IGNR_PAUS: Ignorar solicitud de pausa (para atributo de tarea)

AT_CONTROL: Código de control (para atributo de tarea)

• El tipo de programa devuelto para AT_PROG_TYPE será una de las siguientes constantes:

PT_KRLPRG: programa Karel

PT_MNE_UNDEF: Programa colgante de enseñanza de subtipo indefinido

A–146
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

PT_MNE_JOB: Enseñar trabajo pendiente

PT_MNE_PROC: Proceso colgante de enseñanza

PT_MNE_MACRO : Macro del colgante de enseñanza

• 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.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ha ocurrido un


error. Algunos de los errores que pueden ocurrir son:

7073 El programa especificado ennombre_del_programano existe

17027valor de cadenano es lo suficientemente grande para contener la cadena de atributos. El valor se ha truncado para
que quepa.

17033número_atributotiene un valor ilegal

Ver también:SET_ATTR_PRG, GET_TSK_INFO, SET_TSK_ATTR Procedimientos incorporados

A.8.2 Función integrada GET_FILE_POS

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)

Tipo de retorno de función: ENTERO

Parámetros de entrada/salida:

[en] id_archivo :ARCHIVO

%MEDIO AMBIENTE Grupo :FLBT

Detalles:

• GET_FILE_POS devuelve el número de bytes antes del siguiente byte que se leerá o escribirá en el archivo.

• Los terminadores de línea se cuentan en el valor devuelto.

• 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

GET_FILE_POS solo se admite para archivos abiertos en el dispositivo de


disco RAM. No utilice GET_FILE_POS en otro dispositivo; de lo contrario,
podría lesionar al personal y dañar el equipo.

Ejemplo:El siguiente ejemplo abre elfilepos.dtarchivo de datos, almacena las posiciones enmi caminoen el
archivo y crea un directorio para acceder a ellos.

Función integrada GET_FILE_POS

ABRIR ARCHIVO file_id ('RW', 'filepos.dt')


FOR i = 1 TO PATH_LEN(my_path) DO
pos_temp = mi_ruta[i].node_pos
pos_dir[i] = GET_FILE_POS(file_id)
ESCRIBIR file_id (temp_pos)
ENDFOR

A.8.3 Función incorporada GET_JPOS_REG

Objetivo:Obtiene un valor JOINTPOS del registro especificado

Sintaxis:GET_JPOS_REG(registrar_no, estado <,grupo_no>)

Tipo de retorno de función: REGOPE

Parámetros de entrada/salida:

[en] número_de_registro :INTEGER

[fuera] estado: ENTERO

[en] grupo_no :INTEGER

%MEDIO AMBIENTE Grupo :REGOPE

Detalles:

• registro_noespecifica el registro de posición a obtener.

• Sigrupo_nose omite, se asume el grupo predeterminado para el programa.

• Sigrupo_nose especifica, debe estar en el rango de 1 al número total de grupos definidos en el


controlador.

• GET_JPOS_REG devuelve la posición en formato JOINTPOS. Utilice POS_REG_TYPE para determinar la


representación de la posición.

A–148
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ver también:GET_POS_REG, SET_JPOS_REG, SET_POS_REG Procedimientos integrados

Ejemplo:Referirse aSección B.5, "Uso de registros integrados" (REG_EX.KL) para ver un ejemplo de programa
detallado.

A.8.4 Función integrada GET_JPOS_TPE

Objetivo:Obtiene un valor JOINTPOS de la posición especificada en el programa del Teach Pendant especificado

Sintaxis:GET_JPOS_TPE(open_id, position_no, status <, group_no>)

Tipo de retorno de función: JOINTPOS

Parámetros de entrada/salida:

[en] id_abierto :INTEGER

[en] position_no :INTEGER

[fuera] estado: ENTERO

[en] grupo_no :INTEGER

%MEDIO AMBIENTE Grupo :PBCORE

Detalles:

• id_abiertoespecifica el programa del colgante de enseñanza. Se debe abrir un programa antes de llamar a este incorporado.

• position_noespecifica la posición en el programa a obtener.

• Sigrupo_nose omite, se asume el grupo predeterminado para el programa.

• Sigrupo_nose especifica, debe estar en el rango de 1 al número total de grupos definidos en el


controlador.

• 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.

• Si la posición especificada en el programa no está inicializada, el valor JOINTPOS devuelto no está


inicializado y el estado se establece en 17038, "Posición TPE no inicializada".

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ha ocurrido un error.

Ver también:SET_JPOS_TPE, GET_POS_TPE, SET_POS_TPE integrados

A–149
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

Ejemplo:Referirse aSección B.14, "Aplicación de compensaciones a un programa de Teach Pendant


copiado" (CPY_TPE.KL), para ver un ejemplo de programa detallado.

A.8.5 Procedimiento integrado GET_PORT_ASG

Objetivo:Permite que un programa KAREL determine los puertos físicos a los que se asigna un puerto lógico
específico.

Sintaxis:GET_PORT_ASG(tipo_puerto_registro, número_puerto_registro, número_rack, número_ranura, tipo_puerto_físico,


número_puerto_físico, n_puertos, estado)

Parámetros de entrada/salida:

[en] log_port_type :INTEGER

[en] log_port_no :INTEGER

[fuera] rack_no :INTEGER

[fuera] slot_no :INTEGER

[fuera] phy_port_type :INTEGER

[fuera] phy_port_no :INTEGER

[fuera] n_ports :INTEGER

[fuera] estado: ENTERO

%ENVIRONMENT Grupo :IOSETUP

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.

• log_port_noespecifica el número del puerto cuya asignación se está accediendo.

• 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.

Procedimiento integrado GET_PORT_ASG


PROGRAMA getasgprog
%CONFIGURACIÓN DE IO DEL MEDIO AMBIENTE

%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

GET_PORT_ASG(io_gpin, gin_port_no, rack_no, slot_no,


phy_port_typ, frst_port_no, n_ports, estado)
SI estado <> 0 ENTONCES
RETORNO (estado)
TERMINARA SI

asgd_to_din = (phy_port_typ = io_din) END


get_gin_asg
EMPEZAR

FIN getasgprog

A.8.6 Función incorporada GET_PORT_ATR

Objetivo:Obtiene un atributo del puerto especificado

Sintaxis:GET_PORT_ATR(port_id, atr_type, atr_value)

Tipo de retorno de función: ENTERO

Parámetros de entrada/salida:

A–151
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

[en] port_id :INTEGER

[en] tipo_atr :INTEGER

[fuera] atr_value :INTEGER

%MEDIO AMBIENTE Grupo :FLBT

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_readahd: búfer de lectura anticipada

atr_baud: Tasa de baudios

atr_parity :Paridad

atr_sbits: bit de parada

atr_dbits: longitud de datos

atr_xonoff :Xon/Xoff

atr_eol :Fin de línea

atr_modem: línea de módem

• valor_atrrecibe el valor actual para el atributo especificado.


• GET_PORT_ATR devuelve el estado de esta acción al puerto.

Ver también:Función integrada SET_PORT_ATR,Capítulo 7OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS

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

Función incorporada GET_PORT_ATR


PROGRAMA port_atr
%FLBT DEL MEDIO AMBIENTE
VAR
estadística:ENTERO
valor_atr: ENTERO
EMPEZAR

- - establece el búfer de lectura anticipada en el valor deseado, si aún no es correcto


stat=GET_PORT_ATR(port_2,atr_readahd,atr_value)
SI(valor_atr <> 2) ENTONCES
stat=SET_PORT_ATR(port_2,atr_readahd,2) --establecido en 256 bytes ENDIF

- - establece la tasa de baudios en 9600, si aún no se ha


establecido stat=GET_PORT_ATR(port_2,atr_baud,atr_value)
IF(atr_value <> BAUD_9600) THEN
stat=SET_PORT_ATR(puerto_2,atr_baudios,baudios_9600)
ENDIF
- - establece la paridad en par, si aún no se ha establecido
stat=GET_PORT_ATR(port_2,atr_parity,atr_value) IF(atr_value
<> PARITY_EVEN) THEN
stat=SET_PORT_ATR(puerto_2,atr_parity,PARITY_EVEN) ENDIF

- - establece el bit de parada en 1, si aún no se ha establecido


stat=GET_PORT_ATR(port_2,atr_sbits,atr_value) IF(atr_value
<> SBITS_1) THEN
stat=SET_PORT_ATR(puerto_2,atr_sbits,SBITS_1) ENDIF

- - establece el bit de datos en 5, si aún no se ha establecido


stat=GET_PORT_ATR(port_2,atr_dbits,atr_value) IF(atr_value
<> DBITS_5) THEN
stat=SET_PORT_ATR(puerto_2,atr_dbits,DBITS_5) ENDIF

- - establece xonoff como no utilizado, si aún no se ha


establecido stat=GET_PORT_ATR(port_2,atr_xonoff,atr_value)
IF(atr_value <> xf_not_used) THEN
stat=SET_PORT_ATR(puerto_2,atr_xonoff,xf_not_used) ENDIF

- - establece el marcador de final de línea, si aún no se ha


establecido stat=GET_PORT_ATR(port_2,atr_eol,atr_value)
IF(atr_value <> 65) THEN
stat=SET_PORT_ATR(puerto_2,atr_eol,65) ENDIF

FIN port_atr

A-153
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

A.8.7 Procedimiento integrado GET_PORT_CMT

Objetivo:Permite que un programa KAREL determine el comentario que se establece para un puerto lógico específico

Sintaxis:GET_PORT_CMT(tipo_puerto, número_puerto, cadena_comentario, estado)

Parámetros de entrada/salida:

[en] tipo_puerto :INTEGER

[en] port_no :INTEGER

[fuera] comment_str :STRING

[fuera] estado: ENTERO

%ENVIRONMENT Grupo :IOSETUP

Detalles:

• tipo_puertoespecifica el código para el tipo de puerto cuyo comentario se devuelve. Los códigos
se definen en FR:KLIOTYPS.KL.

• port_noespecifica el número de puerto cuyo comentario se está configurando.

• 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.

Ver también:GET_PORT_VAL, GET_PORT_MOD, SET_PORT_CMT, SET_PORT_VAL,


SET_PORT_MOD Procedimientos integrados.

A.8.8 Procedimiento integrado GET_PORT_MOD

Objetivo:Permite que un programa KAREL determine qué modos de puerto especiales se establecen para un puerto lógico
específico

Sintaxis:GET_PORT_MOD(tipo_puerto, número_puerto, máscara_modo, estado)

Parámetros de entrada/salida:

[en] tipo_puerto :INTEGER

[en] port_no :INTEGER

[fuera] mode_mask :INTEGER

A–154
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

[fuera] estado: ENTERO

%ENVIRONMENT Grupo :IOSETUP

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.

• port_noespecifica el número de puerto cuyo modo se está configurando.

• 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.

Ejemplo:El siguiente ejemplo obtiene los modos para un puerto específico.

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

GET_PORT_MOD(tipo_puerto, número_puerto, modo, estado) SI


(estado <>0) ENTONCES
RETORNO (estado)
TERMINARA SI

SI (modo Y 1) <> 0 ENTONCES

A-155
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

reverso = CIERTO

MÁS
reverso = FALSO
TERMINARA SI

SI (modo Y 2) <> 0 ENTONCES


complementario = CIERTO
MÁS
complementario = FALSO
TERMINARA SI

RETORNO (estado)
FIN get_mode
EMPEZAR
FIN getmodprog

A.8.9 Procedimiento integrado GET_PORT_SIM

Objetivo:Obtiene el estado de la simulación del puerto

Sintaxis:GET_PORT_SIM(port_type, port_no, simulado, estado)

Parámetros de entrada/salida:

[en] tipo_puerto :INTEGER

[en] port_no :INTEGER

[fuera] simulado :INTEGER

[fuera] estado: ENTERO

%ENVIRONMENT Grupo :IOSETUP

Detalles:

• tipo_puertoespecifica el código para el tipo de puerto a obtener. Los códigos se definen en FRS:KLIOTYPS.KL.

• port_noespecifica el número del puerto cuyo estado de simulación se devuelve.


• simuladodevuelve VERDADERO si el puerto está siendo simulado, FALSO de lo contrario.

• estadose devuelve con cero si el puerto es válido.

Ver también:GET_PORT_MOD, SET_PORT_SIM, SET_PORT_MOD Procedimientos integrados.

A–156
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

A.8.10 Procedimiento integrado GET_PORT_VAL

Objetivo:Permite que un programa KAREL determine el valor actual de un puerto lógico especificado

Sintaxis:GET_PORT_VAL(tipo_puerto, número_puerto, valor, estado)

Parámetros de entrada/salida:

[en] tipo_puerto :INTEGER

[en] port_no :INTEGER

[fuera] valor :CADENA

[fuera] estado: ENTERO

%ENVIRONMENT Grupo :IOSETUP

Detalles:

• tipo_puertoespecifica el código para el tipo de puerto cuyo comentario se devuelve. Los códigos
se definen en FR:KLIOTYPS.KL.

• port_noespecifica el número de puerto cuyo comentario se está configurando.

• 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.

Ver también:GET_PORT_CMT, GET_PORT_MOD, SET_PORT_CMT, SET_PORT_VAL,


SET_PORT_MOD Procedimientos integrados.

A.8.11 Procedimiento integrado GET_POS_FRM

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.

Sintaxis:GET_POS_FRM(open_id, position_no, gnum, ufram_no, utool_no, estado)

Parámetros de entrada/salida:

[en] id_abierto :INTEGER

[en] position_no :INTEGER

[en] gnum :ENTERO

A–157
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

[fuera] ufram_no :INTEGER

[fuera] utool_no :INTEGER

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :pbcore

Detalles:

• id_abiertoespecifica el programa del Teach Pendant abierto. Se debe abrir un programa antes de llamar a este
incorporado.

• position_noespecifica la posición en el programa de consola portátil.

• gnumespecifica el número de grupo de la posición.

• ufram_nose devuelve con el número de cuadro de position_no.

• utool_nose devuelve con el número de herramienta de position_no.

• Si la posición especificada,position_no,no está inicializado, elestadose establece en 17038, "Posición de TPE no


inicializada".

• estadoindica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ver también:GET_POS_TYP, CHECK_EPOS.

A.8.12 Función integrada GET_POS_REG

Objetivo:Obtiene un valor XYZWPR del registro especificado

Sintaxis:GET_POS_REG(registrar_no, estado <,grupo_no>)

Tipo de retorno de función: XYZWPREXT

Parámetros de entrada/salida:

[en] número_de_registro :INTEGER

[fuera] estado: ENTERO

[en] grupo_no :INTEGER

%MEDIO AMBIENTE Grupo :REGOPE

Detalles:

• registro_noespecifica el registro de posición a obtener.

A–158
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

• Sigrupo_nose omite, se asume el grupo predeterminado para el programa.

• Sigrupo_nose especifica, debe estar en el rango de 1 al número total de grupos definidos en el


controlador.

• GET_POS_REG devuelve la posición en formato XYZWPREXT. Utilice POS_REG_TYPE para determinar


la representación de la posición.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ver también:GET_JPOS_REG, SET_JPOS_REG, SET_POS_REG, GET_REG Procedimientos incorporados.

Ejemplo:Referirse aSección B.5, "Uso de registros integrados" (REG_EX.KL), para ver un ejemplo de programa
detallado.

A.8.13 Función integrada GET_POS_TPE

Objetivo:Obtiene un valor XYZWPREXT de la posición especificada en el programa de consola portátil


especificado

Sintaxis:GET_POS_TPE(open_id, position_no, status <, group_no>)

Tipo de retorno de función: XYZWPREXT

Parámetros de entrada/salida:

[en] open_id : ENTERO

[en] position_no : ENTERO

[fuera] estado: ENTERO

[en] group_no : INTEGER

%MEDIO AMBIENTE Grupo :PBCORE

Detalles:

• id_abiertoespecifica el programa del Teach Pendant abierto. Se debe abrir un programa antes de llamar a este
incorporado.

• position_noespecifica la posición en el programa a obtener.

• 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.

• Si la posición especificada en el programa no está inicializada, el valor XYZWPR devuelto no está


inicializado y el estado se establece en 17038, "Posición TPE no inicializada".

A–159
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

• Sigrupo_nose omite, se asume el grupo predeterminado para el programa.

• Sigrupo_nose especifica, debe estar en el rango de 1 al número total de grupos definidos en el


controlador.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ha ocurrido un error.

Ver también:GET_JPOS_TPE, SET_JPOS_TPE, SET_POS_TPE, GET_POS_TYP Procedimientos incorporados.

Ejemplo:Referirse aSección B.14, "Aplicación de compensaciones a un programa de Teach Pendant


copiado" (CPY_TP.KL), para ver un ejemplo de programa detallado.

A.8.14 Procedimiento integrado GET_POS_TYP

Objetivo:Obtiene la representación de posición de la posición especificada en el programa de consola portátil


especificado

Sintaxis:GET_POS_TYP(open_id, position_no, group_no, posn_typ, num_axs, estado)

Parámetros de entrada/salida:

[en] id_abierto :INTEGER

[en] position_no :INTEGER

[en] grupo_no :INTEGER

[fuera] posn_typ :INTEGER

[fuera] num_axs :INTEGER

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :PBCORE

Detalles:

• id_abiertoespecifica el programa del Teach Pendant abierto. Se debe abrir un programa antes de llamar a este
incorporado.

• position_noespecifica la posición en el programa.

• grupo_noespecifica el número de grupo.

• El tipo de posición es devuelto porposn_tipo. posn_tipose define de la siguiente


manera:2 :XYZWPR6 :XYZWPREXT9 :JOINTPOS

• Si está en posición conjunta, el número del eje en la representación es devuelto pornum_axs.

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".

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ha ocurrido un error.

Ejemplo:Referirse aSección B.14, "Aplicación de compensaciones a un programa de Teach Pendant


copiado" (CPY_T.KL), para ver un ejemplo de programa detallado.

A.8.15 Procedimiento integrado GET_PREG_CMT

Objetivo:Para recuperar la información de comentarios de un registro de posición KAREL en función de un número de


registro dado.

Sintaxis:GET_PREG_CMT (register_no, comment_string, estado)

Parámetros de entrada/salida:

[en] número_de_registro: ENTERO

[fuera] comentario_cadena: STRING

[fuera] estado: ENTERO

%MEDIO AMBIENTE grupo: REGOPE

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.

A.8.16 Procedimiento integrado GET_QUEUE

Objetivo:Recupera la entrada más antigua especificada de una cola

Sintaxis:GET_QUEUE(cola, cola_datos, valor, estado, secuencia_no)

Parámetros de entrada/salida:

[entrada,salida] queue_t :QUEUE_TYPE

[entrada, salida] cola_datos :ARRAY OF INTEGER

[fuera] valor: ENTERO

[fuera] secuencia_no :INTEGER

A–161
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :PBQMGR

Detalles:

• cola_tespecifica la variable de cola para la cola de la que se obtendrá el valor.


• cola_datosespecifica la variable de matriz con los datos de la cola.

• valorse devuelve con la entrada más antigua obtenida de la cola.

• secuencia_nose devuelve con el número de secuencia de la entrada devuelta.

• 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".

Ver también:Procedimiento integrado MODIFY_QUEUE,Sección 16.8, "Uso de colas para la


comunicación de tareas

Ejemplo:En el siguiente ejemplo, la rutinaget_nxt_errdevuelve la entrada más antigua de la cola de


errores o cero si la cola está vacía.

Procedimiento integrado GET_QUEUE


PROGRAMA get_queue_x
%ambiente PBQMGR
VAR
error_queue FROM global_vars: QUEUE_TYPE error_data FROM
global_vars: ARRAY[100] OF INTEGER

RUTINA get_nxt_err: ENTERO


VAR
estado: ENTERO
valor: ENTERO
secuencia_no: ENTERO

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

MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

A.8.17 Procedimiento integrado GET_REG

Objetivo:Obtiene un valor INTEGER o REAL del registro especificado

Sintaxis:GET_REG(register_no, real_flag, int_value, real_value, status)

Parámetros de entrada/salida:

[en] número_de_registro :INTEGER

[fuera] real_flag :BOOLEANO

[fuera] int_value :INTEGER

[fuera] real_value :REAL

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :REGOPE

Detalles:

• registro_noespecifica el registro a obtener.

• 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.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

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.

Sintaxis:GET_REG_CMT (register_no, comment_string, estado)

Parámetros de entrada/salida:

[en] número_de_registro: ENTERO

[fuera] comentario_cadena: STRING

[fuera] estado: ENTERO

%MEDIO AMBIENTE grupo: REGOPE

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.

A.8.19 Procedimiento integrado GET_SREG_CMT

Objetivo:Obtiene el comentario del registro de cadena especificado.

Sintaxis:GET_SREG_CMT(register_no, comentario, estado)

Parámetros de entrada/salida:

[en] número_de_registro :INTEGER

[fuera] comentario :STRING[254]

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :REGOPE

Detalles:

• registro_noespecifica el registro de cadena que se va a obtener.

• comentariocontiene el comentario del registro de cadena especificado.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ver también:GET_STR_REG, SET_STR_REG, SET_SREG_CMT Procedimientos integrados.

A.8.20 Procedimiento integrado GET_STR_REG

Objetivo:Obtiene el valor del registro de cadena especificado.

Sintaxis:GET_STR_REG(registrar_no, valor, estado)

Parámetros de entrada/salida:

[en] número_de_registro :INTEGER

[fuera] valor :CADENA[254]

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :REGOPE

A-164
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

Detalles:

• registro_noespecifica el registro de cadena que se va a obtener.

• valorcontiene el valor del registro de cadena especificado.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ver también:GET_SREG_CMT, SET_STR_REG, SET_SREG_CMT Procedimientos integrados.

A.8.21 Procedimiento integrado GET_TIME

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

%MEDIO AMBIENTE Grupo :TIM

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:

Tabla A–11. INTEGER Representación de la hora actual

31–25 24–21 20–16

año mes día


15–11 10–5 4–0
hora minuto segundo

• El contenido de los campos individuales es el siguiente:

- FECHA:

Bits 31-25 — Año desde 1980

Bits 24-21 — Mes (1-12)

Bits 20-16 — Día del mes


- TIEMPO:

Bits 15-11 — Número de horas (0-23)

A-165
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

Bits 10-5 — Número de minutos (0-59)

Bits 4-0: número de incrementos de 2 segundos (0-29)

• Los valores INTEGER se pueden comparar para determinar si una vez es más reciente que otra.

• Utilice el procedimiento incorporado CNV_TIME_STR para convertir el INTEGER al formato de CADENA


“DD-MMM-YYY HH:MM:SS”.

Ver también:Procedimiento integrado CNV_TIME_STR

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.8.22 Procedimiento integrado GET_TPE_CMT

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.

Sintaxis:GET_TPE_CMT(open_id, pos_no, comentario, estado)

Parámetros de entrada/salida:

[en] id_abierto :INTEGER

[en] pos_no :INTEGER

[fuera] comentario :STRING

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :TPE

Detalles:

• id_abiertoespecifica el open_id devuelto de una llamada anterior a OPEN_TPE.

• pos_noespecifica el número de la posición en el programa TPP para obtener un comentario.

• 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.

• estadoindica cero si la operación fue exitosa, de lo contrario se mostrará un código de error.

Ver también:SET_TPE_CMT y OPEN_TPE para obtener más procedimientos integrados.

A–166
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

A.8.23 Procedimiento integrado GET_TPE_PRM

Objetivo:Obtiene los valores de los parámetros cuando los parámetros se pasan en una instrucción TPE CALL o
MACRO.

Sintaxis:GET_TPE_PRM(param_no, data_type, int_value, real_value, str_value, status)

Parámetros de entrada/salida:

[en] param_no :INTEGER

[fuera] tipo_datos :INTEGER

[fuera] int_value :INTEGER

[fuera] real_value :REAL

[fuera] str_value :CADENA

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :PBCORE

Detalles:

• param_noindica el número del parámetro. Puede haber como máximo diez parámetros.

• tipo de datosindica el tipo de datos para el parámetro, de la siguiente manera:

— 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.

• Si el parámetro designado por param_no no existe, se devuelve un estado de 17042, que es el


mensaje de error: "Los parámetros ROUT-042 WARN TPE no existen". Si se devuelve este error,
confirme el param_no y el parámetro en el comando CALL o MACRO en el programa principal de TPE.

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

Procedimiento integrado GET_TPE_PRM

Entrada de la tabla de macros para la macro Enviar evento:


109 [Enviar evento ] [ENVIAR]--[ 0]
Programa colgante de enseñanza, TEST1.TP, que utiliza la macro Enviar
evento:
1: ! Enviar evento 7
2: ! ¡Espera la respuesta de la
3: PC! Respuesta en REG 5
4: Enviar evento (7,1,5)
5: SI R[5]<9999,JMP LBL[10] ! Error
6: en la macro
7: !
8: LBL[10]
Programa colgante de enseñanza SENDEVNT.TP, que implementa la macro
Enviar evento llamando al programa GESNDEVT KAREL y pasando los
parámetros CALL de Enviar evento:
1: !Enviar Macro de evento
2: LLAMAR DESV.GESN(AR[1],AR[2],AR[3])

Fragmento del programa KAREL GESNDEVT.KL, que obtiene la información


de los parámetros mediante GET_TPE_PRM
incorporado:
PROGRAMA GESNDEVT
.. .
EMPEZAR

-- Enviar evento (event_no [,wait_sw [,status_reg]] )


- - obtener el parámetro 1 (parámetro obligatorio)
Get_tpe_prm(1, data_type, event_no,real_value,string_value,status) IF status<>0 THEN --
17042 "ROUT-042 Los parámetros TPE no existen"
POST_ERR(estado, '', 0, er_abortar) OTRO
MODO
IF data_type <> PARM_INTEGER THEN -- asegúrese de que parm sea un número entero
POST_ERR(er_peventer, '1', 0, er_abortar) OTRA
OPCIÓN
SI (evento_n° < MIN_EVENTO) O (evento_n° > MAX_EVENTO) ENTONCES
POST_ERR(er_error, '', 0, er_abortar) ENDIF

TERMINARA SI

TERMINARA SI

- - obtener el segundo parámetro (opcional)


Get_tpe_prm(2, data_type, wait_sw,real_value,string_value,estado)
SI estado<>0 ENTONCES
SI estado = ER17042 ENTONCES - - "ROUT-142 Parámetro no existe"
wait_sw = 0 -- PREDETERMINADO sin esperar DE LO
CONTRARIO

POST_ERR(status, '', 0, er_warn) -- otro error

A–168
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

TERMINARA SI

...

A.8.24 Procedimiento integrado GET_TSK_INFO

Objetivo:Obtener el valor del atributo de tarea especificado

Sintaxis:GET_TSK_INFO(nombre_tarea, nº_tarea, atributo, int_valor, cadena_valor, estado)

Parámetros de entrada/salida:

[entrada,salida] nombre_tarea :STRING

[entrada,salida] task_no :INTEGER

[en] atributo: ENTERO

[fuera] value_int :INTEGER

[fuera] value_str :CADENA

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :PBCORE

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:

TSK_HOLDCOND: Condiciones de retención de tareas

TSK_LINENUM : Número de línea de ejecución actual

TSK_LOCKGRP : Grupo bloqueado

TSK_MCTL: Grupos controlados por movimiento

TSK_NOABORT: Ignorar solicitud de cancelación

TSK_NOBUSY: lámpara de ocupado apagada

A–169
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

TSK_NOPAUSE: Ignorar solicitud de pausa

TSK_NUMCLDS: Número de tareas secundarias

TSK_PARENT : Número de tarea principal

TSK_PAUSESFT: Pausa al liberar el turno

TSK_PRIORITY: Prioridad de la tarea

TSK_PROGNAME: Nombre del programa actual devuelto en value_str

TSK_PROGTYPE: Tipo de programa: consulte la descripción a continuación

TSK_ROUTNAME: nombre de rutina actual devuelto en value_str

TSK_STACK: Tamaño de la pila

TSK_STATUS: estado de la tarea: consulte la descripción a continuación

TSK_STEP: tarea de un solo paso

TSK_TIMESLIC: Duración del segmento de tiempo en ms

TSK_TPMOTION: Activar movimiento TP

TSK_TRACE: Habilitar seguimiento

TSK_TRACELEN: Longitud de la matriz de seguimiento

• TSK_STATUS es el estado de la tarea: Los valores devueltos son:

PG_RUNACCEPT: Se ha aceptado la solicitud de ejecución

PG_ABORTING: Se ha aceptado la cancelación

PG_RUNNING: la tarea se está ejecutando

PG_PAUSED: la tarea está en pausa

PG_ABORTED: la tarea se anula


• TSK_PROGTYPE es el tipo de programa. Los valores devueltos son:

PG_NOT_EXEC: el programa aún no se ha ejecutado

PG_MNEMONIC: El programa del Teach Pendant se está ejecutando o se estaba ejecutando

PG_AR_KAREL : El programa KAREL está o estaba ejecutándose

A–170
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ver también:capitulo 16MULTITAREA

Ejemplo:Ver ejemplos encapitulo 16MULTITAREA

A.8.25 Procedimiento integrado GET_USEC_SUB

Objetivo:Devuelve un valor INTEGER que indica el tiempo transcurrido en microsegundos (1/1.000.000).

Sintaxis:us_delta = GET_USEC_SUB(us2, us1)

Tipo de retorno de función: ENTERO

Parámetros de entrada/salida:

[en] us2: ENTERO

[en] us1: ENTERO

%MEDIO AMBIENTE Grupo: TIM

Detalles:

• us2 es la segunda vez que se devuelve desde GET_USEC_TIM.

• us1 es la primera vez que se devuelve desde GET_USEC_TIM.

• 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.

Ejemplo: El siguiente ejemplo mide la cantidad de tiempo en microsegundos para incrementar un


número.

Figura A–3. Función integrada GET_USEC_SUB

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

A.8.26 Función integrada GET_USEC_TIM

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

Tipo de retorno de función: ENTERO

Parámetros de entrada/salida:

Ninguna

%MEDIO AMBIENTE Grupo: TIM

Detalles:

• El valor devuelto es la representación INTEGER de la hora actual en microsegundos almacenada en el


sistema KAREL.

• Esta función se utiliza con la función integrada GET_USEC_SUB para determinar el tiempo transcurrido de
una operación.

A.8.27 Procedimiento integrado GET_VAR

Objetivo:Permite que un programa KAREL recupere el valor de una variable específica

Sintaxis:GET_VAR(entrada, prog_name, var_name, valor, estado)

Parámetros de entrada/salida:

[entrada,salida] entrada :INTEGER

[en] nombre_del_programa :STRING

[en] nombre_var :CADENA

[fuera] valor: cualquier tipo de datos KAREL válido excepto PATH

[fuera] estado: ENTERO

%ENTORNO Grupo :SISTEMA

Detalles:

• entradadevuelve el número de entrada en la tabla de datos variables denombre_varen el directorio del


dispositivo dondenombre_varse encuentra. Esta variable no debe modificarse.

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.

• nombre_vardebe hacer referencia a una variable de programa estática.

• nombre_varpuede contener números de nodo, nombres de campo y/o subíndices.

• Si ambosnombre_varyvalorson ARRAY, el número de elementos copiados será igual al tamaño del más
pequeño de los dos arreglos.

• Si ambosnombre_varyvalorson CADENA, el número de caracteres copiados será igual al tamaño de la


menor de las dos cadenas.

• Si ambosnombre_varyvalorson ESTRUCTURAS del mismo tipo,valorserá una copia exacta de


nombre_var.

• valores el valor denombre_var.


• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

• Si el valor denombre_varno está inicializado, entoncesvalorse establecerá en no inicializado yestadose


establecerá en 12311.

• 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

variables del sistema en un robot en un anillo.

Precaución

El uso de GET_VAR para modificar las variables del sistema podría generar resultados inesperados.

Ejemplo 1:Para acceder a $TP_DEFPROG en el robot MHROB03 en un anillo, consulteAccediendo a


$TP_DEFPROG en MHROB03.

Accediendo a $TP_DEFPROG en MHROB03

GET_VAR(entrada, '\\MHROB03\*sistema*', '$TP_DEFPROG', strvar, estado)

Ejemplo 2:Procedimiento integrado GET_VARmuestra dos programas,util_progytarea.El programa


util_progutiliza un bucle FOR para incrementar el valor de la variable INTEGERnum_of_parts.
util_progtambién asigna valores al ARRAYpart_array.El programatareautiliza dos sentencias
GET_VAR para recuperar los valores denum_of_partsypart_array[3].El valor denum_of_parts se
asigna a la variable INTEGERcontarypart_array[3]se asigna a la variable STRING parte_nombre.La
última instrucción GET_VAR coloca el valor decontaren otra variable INTEGERnuevo conteo.

A–173
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

Procedimiento integrado GET_VAR

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)

GET_VAR(entrada, 'util_prog', 'num_of_parts', cuenta, estado) WRITE('CONTAR


ahora es igual a....>', cuenta, cr)

GET_VAR(entrada, 'tarea', 'recuento', nuevo_recuento, estado)

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:

Procedimiento integrado GET_VAR SET_VAR

PARA idx = 1 A $PH_ROSIP.$NUM_MEMBERS HACER


SI idx = $PH_ROSIP.$MY_INDEX ENTONCES
- - Esto funcionará, pero este robot es ineficiente
MÁS
SELECCIONE $PH_MEMBERS[idx].$ESTADO DEL
CASO (0): -- Sin conexión

A–174
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

sstate = 'Fuera de línea'


CASO (1) : -- En línea
sstate = ' Online ' CASO (2) : --
Sincronizado
sstate = 'Sincronizar' CNV_INT_STR(idx,
1, 10, sidx)
prog_name = '\\' + $PH_MEMBERS[idx].$NAME + '\ipgetset' var_name = 'set_data['+
smy_index + ',' + sidx + ']' GET_VAR(entrada, prog_name, var_name,
set_data[$PH_ROSIP .$MI_ÍNDICE,
idx], estado[idx])
SI estado[idx] = 0 ENTONCES
SI uninit(set_data[$PH_ROSIP.$MY_INDEX, idx]) ENTONCES
set_data[$PH_ROSIP.$MY_INDEX, idx] = 0 DE LO
CONTRARIO
set_data[$PH_ROSIP.$MY_INDEX, idx] = set_data[$PH_ROSIP.$MY_INDEX,
idx] + 1
TERMINARA SI

SET_VAR(entrada, prog_name, var_name, set_data[$PH_ROSIP.$MY_INDEX, idx],


estado[idx])
TERMINARA SI

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.

Uso 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

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

GET_VAR(entrada, '\\mhrob01\*posreg*', '$POSREG[1, 10]', posext_data, estado) SET_VAR(entrada, '\


\mhrob01\*numreg*', '$NUMREG[20]', int_data, estado) SET_VAR(entrada, '\\mhrob01\*numreg*',
'$NUMREG[21]', real_data, estado) SET_VAR(entrada, '\\mhrob01\*posreg*', '$POSREG[1, 20]',
posext_data, estado) fin GETREG

A.8.28 IR A Declaración

Objetivo:Transfiere el control a una declaración específica

Sintaxis:||IR A | IR A || etiqueta_stmnt

dónde:

stmnt_label : Un identificador KAREL válido

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::

A.9 - H - KAREL IDIOMA DESCRIPCIÓN

A.9.1 ESPERA Acción

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.

• HOLD se libera usando la declaración o acción UNHOLD.

• 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.

• El movimiento no se puede retener para una tarea diferente.

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

A.9.2 Declaración de retención

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.

• HOLD se libera usando la declaración o acción UNHOLD.

• 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.

• El movimiento no se puede retener para una tarea diferente.

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

A.10 - I - DESCRIPCIÓN DEL LENGUAJE KAREL

A.10.1 SI ... Declaración ENDIF

Objetivo:Ejecuta una secuencia de sentencias si una expresión BOOLEAN es VERDADERA; se puede


ejecutar una secuencia alternativa si la condición es FALSA.

Sintaxis:SI bool_exp ENTONCES

{ true_stmnt } <OTRO

{ false_stmnt } >ENDIF

dónde:

bool_exp : BOOLEANO

true_stmnt : Una instrucción KAREL ejecutable

false_stmnt : Una instrucción KAREL ejecutable

A–178
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

Detalles:

• Sibool_expevalúa como VERDADERO, las declaraciones contenidas en eltrue_stmntson ejecutados. La


ejecución luego continúa con la primera declaración después de ENDIF.

• 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.

• Las sentencias IF se pueden anidar entrue_stmntofalse_stmnt.

Ver también:Apéndice E, “Diagramas de sintaxis”, para obtener información adicional sobre la sintaxis

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.3, "Guardar datos en el dispositivo predeterminado" (SAVE_VR.KL)

Sección B.5, "Uso de registros incorporados" (REG_EX.KL)

Sección B.6, "Programa de manejadores de condiciones y variables de ruta" (PTH_MOVE.KL)

Sección B.7, "Listado de archivos y programas y manipulación de cadenas" (LIST_EX.KL)

Sección B.9, "Uso de las funciones integradas de archivo y dispositivo" (FILE_EX.KL)

Sección B.10, "Uso de pantallas dinámicas incorporadas" (DYN_DISP.KL)

Sección B.12, "Visualización de una lista desde un archivo de diccionario" (DCLST_EX.KL)

Sección B.13, "Uso de DISCTRL_ALPHA incorporado" (DCALP_EX.KL)

Sección B.14, "Aplicación de compensaciones a un programa de Teach Pendant copiado" (CPY_TP.KL)

Sección B.1, "Configuración de puertos de salida digital para monitoreo" (DOUT_EX.KL)

A.10.2 Cláusula IN

Objetivo:Especifica dónde se creará una variable

Sintaxis:EN (CMOS | DRAM | SOMBRA)

Detalles:

• La cláusula IN puede ser parte de una declaración de variable. Debe especificarse antes de la cláusula FROM.

• ENCMOSespecifica que la variable se creará en la memoria permanente.

A–179
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

• ENDRACMAespecifica que la variable se creará en la memoria temporal.

• 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.

• ENUNINIT_DRAMespecifica que una variable DRAM no está INICIALIZADA al inicio.

• 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.

Ver también:Sección 1.4.1, Directiva de traductor %CMOSVARS, Directiva de traductor %SHADOW,


Directiva de traductor %SHADOWCMOS

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

en DRAM,Sección B.2, "Copiar variables de ruta" (CPY_PTH.KL)

En CMOS,Sección B.10, "Uso de pantallas dinámicas integradas" (DYN_DISP.KL) oSección B.11,


"Manipulación de valores de variables mostradas dinámicamente" (CHG_DATA.KL)

A.10.3 %INCLUDE Directiva de traductor

Objetivo:Inserta otros archivos en un programa en el momento de la traducción.

Sintaxis:%INCLUYE file_spec

Detalles:

• file_speces el nombre del archivo a incluir. Tiene los siguientes detalles:

— El nombre de archivo especificado no debe tener más de 12 caracteres.

— El tipo de archivo predeterminado es .KL, por lo que no aparece en la directiva.

• La directiva %INCLUDE debe aparecer sola en una línea.

• 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.

• Algunos ejemplos en el Apéndice A hacen referencia a los siguientes archivos de inclusión:

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.

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.2, "Copiar variables de ruta" (CPY_PTH.KL)

Sección B.12, "Visualización de una lista desde un archivo de diccionario" (DCLST_EX.KL)

Sección B.13, "Uso de DISCTRL_ALPHA incorporado" (DCALP_EX.KL)

Sección B.1, "Configuración de puertos de salida digital para monitoreo" (DOUT_EX.KL)

A.10.4 ÍNDICE Función integrada

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.

Sintaxis:ÍNDICE (principal, buscar)

Tipo de retorno de función: ENTERO

Parámetros de entrada/salida:

[en] principal :CADENA

[en] encuentra :STRING

%ENTORNO Grupo :SISTEMA

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.

ÍNDICE Función integrada


class_key = 'Antiguo'
part_desc = 'Parte antigua restaurada' IF
INDEX(part_desc, class_key) > 0 THEN
en_clase = VERDADERO
TERMINARA SI

A.10.5 Procedimiento integrado INI_DYN_DISB

Objetivo:Inicia la visualización dinámica de una variable BOOLEAN. Este procedimiento muestra


elementos de un STRING ARRAY dependiendo del valor actual de la variable BOOLEAN.

Sintaxis:INI_DYN_DISB (b_var, window_name, field_width, attr_mask, char_size, fila, columna,


intervalo, cadenas, estado)

Parámetros de entrada/salida:

[en] b_var :BOOLEANO

[en] nombre_ventana :STRING

[en] ancho_de_campo :INTEGER

[en] attr_mask :INTEGER

[en] char_size :INTEGER

[en] fila: ENTERO

[en] col :ENTERO

[en] intervalo: ENTERO

[en] cadenas :ARRAY OF STRING

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :UIF

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).

• nombre_ventanadebe ser un nombre de ventana previamente definido. VerSección 7.10.1. ySección


7.10.2para nombres de ventana predefinidos.

• 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

1 :Negrita (Solo compatible con CRT)

2: parpadeo (compatible solo con CRT)

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

1 :Doble ancho (Solo compatible con CRT)

2: doble alto, doble ancho


• filaycolumnaespecifique la ubicación en la ventana en la que se mostrarán los datos.

• intervaloindica el intervalo de tiempo mínimo, en milisegundos, entre actualizaciones de la pantalla.


Esto debe ser mayor que cero. El tiempo real puede ser mayor ya que la tarea que formatea la pantalla
se ejecuta con una prioridad baja.

• cuerdas[n]contiene el texto que se mostrará.


• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ver también:Procedimiento integrado CNC_DYN_DISB

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

A.10.6 Procedimiento integrado INI_DYN_DISE

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.

Sintaxis:INI_DYN_DISE (e_var, window_name, field_width, attr_mask, char_size, fila, columna,


intervalo, cadenas, estado)

Parámetros de entrada/salida:

[en] e_var :ENTERO

[en] nombre_ventana :STRING

[en] ancho_de_campo :INTEGER

[en] attr_mask :INTEGER

[en] char_size :INTEGER

[en] fila: ENTERO

[en] col :ENTERO

[en] intervalo: ENTERO

[en] cadenas :ARRAY OF STRING

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :UIF

Detalles:

• La visualización dinámica se inicia en función del valor dee_var.Sie_vartiene un valor de n, cadenas[n+1]


se visualiza; sie_vartiene un valor negativo, o un valor mayor o igual a la longitud de la matriz de
instrumentos de cuerda,se muestra una cadena de '?'. Ambas cosase_varycuerda sdeben ser variables
estáticas (no locales).

• Consulte el procedimiento incorporado INI_DYN_DISB para obtener una descripción de los otros parámetros enumerados anteriormente.

Ver también:Procedimiento integrado CNC_DYN_DISE

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

A.10.7 Procedimiento integrado INI_DYN_DISI

Objetivo:Inicia la visualización dinámica de una variable INTEGER en una ventana específica.

Sintaxis:INI_DYN_DISI(i_var, window_name, field_width, attr_mask, char_size, fila, columna, intervalo,


buffer_size, formato, estado)

Parámetros de entrada/salida:

[en] i_var :ENTERO

[en] nombre_ventana :STRING

[en] ancho_de_campo :INTEGER

[en] attr_mask :INTEGER

[en] char_size :INTEGER

[en] fila: ENTERO

[en] col :ENTERO

[en] intervalo: ENTERO

[en] buffer_size :INTEGER

[en] formato :CADENA

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :UIF

Detalles:

• i_vares el entero cuya visualización dinámica se va a iniciar.

• 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.

• tamaño del búferno está implementado.

• 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:

— Banderas (en cualquier orden), que modifican la especificación:

- : especifica el ajuste izquierdo de este campo.

A–185
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

+ : especifica que el número siempre se imprimirá con un signo.

0 especifica el relleno de un ancho de campo numérico con ceros a la izquierda.

— 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 punto, que separa el ancho del campo de la precisión.


— 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 enTabla A–12.

Tabla A–12. Caracteres de conversión

Personaje tipo de argumento; Impreso como

d ENTERO; número decimal

o ENTERO; notación octal sin signo (sin un cero inicial).

x, x ENTERO; notación hexadecimal sin signo (sin un 0x o 0X inicial), usando


abcdef o ABCDEF para 10, ..., 15.

tu ENTERO; notación decimal sin signo.

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 [-]m.dddddde+-xx o [-]m.ddddddE+-xx, 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.

g, g REAL; %eo %E se utiliza si el exponente es inferior a -4 o superior o igual a la precisión;


de lo contrario, se utiliza %f. Los ceros finales y un puntero decimal final no se
imprimen.

% no se convierte ningún argumento; imprime un %.

• Consulte el procedimiento incorporado INI_DYN_DISB para obtener una descripción de los otros parámetros enumerados anteriormente.

Ver también:CNC_DYN_DISI, DEF_WINDOW Procedimiento incorporado

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

A.10.8 Procedimiento integrado INI_DYN_DISP

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.

Sintaxis:INI_DYN_DISP (tipo_puerto, número_puerto, nombre_ventana, ancho_campo, máscara_atributo, tamaño_carácter, fila,


columna, intervalo, cadenas, estado)

Parámetros de entrada/salida:

[en] tipo_puerto :INTEGER

[en] port_no :INTEGER

[en] nombre_ventana :STRING

[en] ancho_de_campo :INTEGER

[en] attr_mask :INTEGER

[en] char_size :INTEGER

[en] fila: ENTERO

[en] col :ENTERO

[en] intervalo: ENTERO

[en] cadenas :ARRAY OF STRING

[fuera] estado: ENTERO

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 '?'.

• port_noespecifica el número de puerto que se mostrará.

• Consulte el procedimiento incorporado INI_DYN_DISB para obtener una descripción de otros parámetros enumerados anteriormente.

Ver también:Procedimiento integrado CNC_DYN_DISP

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.

A.10.9 Procedimiento integrado INI_DYN_DISR

Objetivo:Inicia la visualización dinámica de una variable REAL en una ventana específica.

Sintaxis:INI_DYN_DISR(r_var, window_name, field_width, attr_mask, char_size, fila, columna, intervalo,


buffer_size, formato, estado)

Parámetros de entrada/salida:

[en] r_var :REAL

[en] nombre_ventana :STRING

[en] ancho_de_campo :INTEGER

[en] attr_máscara :INTEGER

[en] char_size :INTEGER

[en] fila: ENTERO

[en] col :ENTERO

[en] intervalo: ENTERO

[en] buffer_size :INTEGER

[en] formato :CADENA

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :UIF

Detalles:

• r_vares la variable REAL cuya visualización dinámica se va a iniciar.


• Sifiancho_eldes distinto de cero, la pantalla se amplía con espacios en blanco sir_vares más corto que este ancho
especificado. El área se borra cuando se cancela la visualización dinámica.

• Consulte el procedimiento incorporado INI_DYN_DISI para obtener una descripción de otros parámetros enumerados anteriormente.

Ver también:Procedimiento integrado CNC_DYN_DISR

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.

A.10.10 Procedimiento integrado INI_DYN_DISS

Objetivo:Inicia la visualización dinámica de una variable STRING en una ventana específica.

Sintaxis:INI_DYN_DISS(s_var, window_name, field_width, attr_mask, char_size, fila, columna, intervalo,


buffer_size, formato, estado)

Parámetros de entrada/salida:

[en] s_var :CADENA

[en] nombre_ventana :STRING

[en] ancho_de_campo :INTEGER

[en] attr_máscara :INTEGER

[en] char_size :INTEGER

[en] fila: ENTERO

[en] col :ENTERO

[en] intervalo: ENTERO

[en] buffer_size :INTEGER

[en] formato :CADENA

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :UIF

Detalles:

• s_vares la variable STRING cuya visualización dinámica se va a iniciar.


• Sifiancho_eldes distinto de cero, la pantalla se amplía con espacios en blanco sis_vares más corto que este ancho
especificado. El área se borra cuando se cancela la visualización dinámica.

• Consulte el procedimiento incorporado INI_DYN_DISI para obtener una descripción de otros parámetros enumerados anteriormente.

Ver también:Procedimientos integrados CNC_DYN_DISS, INI_DYN_DISI

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.

A.10.11 Procedimiento integrado INIT_QUEUE

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:

[fuera] queue_t :QUEUE_TYPE

%MEDIO AMBIENTE Grupo : PBQMGR

Detalles:

• queue_t es la cola que se inicializará

Ver también:GET_QUEUE, MODIFY_QUEUE procedimientos integrados, tipo de datos QUEUE_TYPE,


Sección 16.8,"Uso de colas para la comunicación de tareas"

Ejemplo:El siguiente ejemplo inicializa una cola llamadacola de trabajos.

Procedimiento integrado INIT_QUEUE


PROGRAMA init_queue_x
%ambiente PBQMGR
VAR
job_queue DESDE globals: QUEUE_TYPE
BEGIN
INIT_QUEUE(trabajo_cola)
FIN init_queue_x

A.10.12 Procedimiento integrado INIT_TBL

Objetivo:Inicializa una tabla en el Teach Pendant

Sintaxis:INIT_TBL(dict_name, ele_number, num_rows, num_columns, col_data, inact_array,


change_array, value_array, vptr_array, table_data, status)

Parámetros de entrada/salida:

[en] dict_name :CADENA

A–190
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

[en] ele_number :INTEGER

[en] núm_filas: ENTERO

[en] num_columns :INTEGER

[en] col_data :ARRAY OF COL_DESC_T

[en] inact_array :ARRAY DE BOOLEAN

[en] change_array :ARRAY OF ARRAY OF BOOLEAN

[en] value_array :ARRAY DE CADENA

[fuera] vptr_array :ARRAY DE ARRAY DE ENTERO

[entrada,salida] table_data :XWORK_T

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :UIF

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.

• Se debe llamar a INIT_TBL antes de usar el ACT_TBL incorporado. No es necesario llamar a


INIT_TBL si se usa el incorporado DISCTRL_TBL.

• nombre_dictes el nombre de cuatro caracteres del diccionario que contiene el encabezado de la tabla.

• ele_numberes el número de elemento del encabezado de la tabla.

• núm_filases el número de filas en la tabla.


• num_columnases el número de columnas 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:

TPX_INT_ITEM — Tipo entero

TPX_REL_ITEM — Tipo real

TPX_FKY_ITEM — Tipo de enumeración de tecla de función

TPX_SUB_ITEM — Tipo de enumeración de subventana

A–191
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

TPX_KST_ITEM — Tipo de cadena KAREL

TPX_KSL_ITEM — Tipo de etiqueta de cadena KAREL (se puede seleccionar, no editar)

TPX_KBL_ITEM — Tipo booleano KAREL

TPX_BYT_ITEM — Tipo de byte

TPX_SHT_ITEM — Tipo corto

TPX_PBL_ITEM — Tipo booleano de puerto

TPX_PIN_ITEM — Tipo de puerto entero

— inicio_col:Columna de caracteres inicial (1..40) del campo de visualización para esta columna de datos.

— fiancho_eld:Ancho 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
" >"

– – TPX_SUB_ITEM: los valores enumerados se seleccionan desde una subventana en el dispositivo de


visualización. Puede haber hasta 5 páginas de subventana, para un máximo de 35 valores. Cada
valor es una cadena de hasta 16 caracteres.

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"

— enum_dict:Nombre de diccionario utilizado para mostrar los tipos de datos


TPX_FKY_ITEM, TPX_SUB_ITEM, TPX_KBL_ITEM o TPX_PBL_ITEM

— 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:

– Banderas (en cualquier orden), que modifican la especificación:

- : especifica el ajuste izquierdo de este campo.

+ : especifica que el número siempre se imprimirá con un signo.

espacio:si el primer carácter no es un signo, se antepondrá un espacio.

0: especifica el relleno de un ancho de campo numérico con ceros a la izquierda.

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 punto, que separa el ancho del campo de la precisión.

– 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:

Cuadro A–13. Caracteres de conversión

Personaje tipo de argumento; Impreso como

d ENTERO; número decimal.

o ENTERO; notación octal sin signo (sin un cero inicial).

x, x ENTERO; notación hexadecimal sin signo (sin un 0x o 0X inicial), usando abcdef o


ABCDEF para 10, ..., 15.

tu ENTERO; notación decimal sin signo.

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 [-]m.dddddde+-xx o [-]m.ddddddE+-xx, donde el número de


d viene dado por la precisión. La precisión predeterminada es 6; una precisión de 0

g, g REAL; %eo %E se utiliza si el exponente es inferior a -4 o superior o igual a la precisión;


de lo contrario, se utiliza %f. Los ceros finales y un puntero decimal final no se
imprimen.

% no se convierte ningún argumento; imprime un %.

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_INT_ITEM %d, %o, %x, %X, %u

TPX_REL_ITEM %f, %e, %E, %g, %G

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_BYT_ITEM %d, %o, %x, %X, %u, %c

TPX_SHT_ITEM %d, %o, %x, %X, %u

TPX_PBL_ITEM %s

TPX_PIN_ITEM %d, %o, %x, %X, %u


— max_entero:Valor máximo si el tipo de datos es TPX_INT_ITEM, TPX_BYT_ITEM o
TPX_SHT_ITEM.
— min_entero:Valor mínimo si el tipo de datos es TPX_INT_ITEM, TPX_BYT_ITEM o
TPX_SHT_ITEM.
— max_real:Valor máximo por reales.
— min_real:Valor mínimo para reales.
— borrar_bandera:Si el tipo de datos es TPX_KST_ITEM, 1 hace que el campo se borre antes de
ingresar caracteres y 0 hace que no se borre.

— 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.

- Siinact_arrayno se utiliza, se puede utilizar un tamaño de matriz de 1 y no es necesario inicializar la


matriz.

• cambiar_matrizes una matriz bidimensional de valores booleanos que corresponde al elemento de datos formateado en
la tabla.

— Si se establece el valor correspondiente, el booleano se establecerá en VERDADERO; de lo contrario, se


establecerá en FALSO. No necesita inicializar la matriz.

— El tamaño de la matriz puede ser menor o mayor que la cantidad de elementos de datos en la tabla.

- Sicambiar_matrizno se usa, entonces se puede usar un tamaño de matriz de 1.

• 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'.

— [nombre_del_programa]especifica el nombre del programa que contiene la variable especificada. Si no


se especifica [prog_name], se utiliza el programa actual que se está ejecutando.

— nombre_vardebe hacer referencia a una variable de programa global estática.

A–195
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

— nombre_varpuede contener números de nodo, nombres de campo y/o subíndices.

— 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_INT_ITEM: ARRAY OF INTEGER que contiene los valores deseados.

– TPX_REL_ITEM: ARRAY OF REAL que contiene los valores deseados.


– TPX_FKY_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 2 páginas de
teclas de función o 10 posibles valores de enumeración de teclas de función.

– 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_KST_ITEM: ARRAY OF STRING que contiene los valores deseados.

– TPX_KST_ITEM: ARRAY OF STRING que contiene los valores deseados.

– 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_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]”.

• 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.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

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.

Procedimiento integrado INIT_TBL


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

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

ESCRIBIR('INIT_TBL estado = ', estado, CR); MÁS

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

ESCRIBIR TPERROR ('F6 presionado')


(ky_f7):
CASO
- - Ejecutar F7
SET_CURSOR(TPERROR, 1, 1, estado) WRITE
TPERROR ('F7 presionado')
CASO (ky_f8):
- - Ejecutar F8
SET_CURSOR(TPERROR, 1, 1, estado)
ESCRIBIR TPERROR ('F8 presionado') (ky_f9):
CASO
- - Ejecutar F9
SET_CURSOR(TPERROR, 1, 1, estado) WRITE
TPERROR ('F9 presionado')
CASO (ky_f10):
- - Ejecutar F10
SET_CURSOR(TPERROR, 1, 1, estado) WRITE
TPERROR ('F10 presionado') CASO
(ky_undef):
- - Teclas especiales de proceso.
(guardar_acción) DE
SELECCIONE
CASO (ky_f1_s):
- - Ejecutar Shift F1 SET_CURSOR(TPERROR, 1, 1,
status) WRITE TPERROR ('F1 shifted pressed')
ELSE:

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

A.10.13 Función integrada IN_RANGE

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

Tipo de retorno de función: BOOLEAN

Parámetros de entrada/salida:

[en] posición: XYZWPREXT

%ENTORNO Grupo :SISTEMA

Detalles:

• El valor devuelto es VERDADERO siposiciónestá dentro de la envolvente de trabajo del grupo de ejes; de lo contrario, se
devuelve FALSO.

• Los $UFRAME y $UTOOL actuales se aplican aposición.

Ver también:CHECK_EPROS Procedimiento incorporado

Ejemplo:El siguiente ejemplo verifica si la nueva posición está en el área de trabajo antes de
mover el TCP a ella.

Función integrada IN_RANGE


SI EN_RANGO(ranura_parte) ENTONCES
SET_POS_REG(1, part_slot, estado)
move_to_pr —— Llame al programa TP para moverse a PR[1]
ELSE WRITE('¡No puedo llegar allí!',CR)
TERMINARA SI

A.10.14 Procedimiento integrado INSERT_NODE

Objetivo:Inserta un nodo no inicializado en el argumento PATH especificado que precede al número de nodo de
ruta especificado

Sintaxis:INSERT_NODE(ruta_var, nodo_num, estado)

Parámetros de entrada/salida:

[en] ruta_var :RUTA

[en] núm_nodo: ENTERO

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :PATHOP

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.

• Todos los nodos que siguen al nodo insertado se vuelven a numerar.

• Válidonúm_nodolos valores están en el rangonúm_nodo=>1 ynúm_nodo<=RUTA_LARGO(ruta_va r).

• Sinúm_nodono es un número de nodo válido, el estado se devuelve con un error.

• Si el programa no tiene suficiente RAM para una solicitud INSERT_NODE, se producirá un error.

• Si el programa está en pausa, la solicitud INSERT_NODE esNOreintentado

Ver también:DELETE_NODE, APPEND_NODE Procedimientos integrados

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.

Procedimiento integrado INSERT_NODE

longitud = PATH_LEN(ruta_var)
INSERT_NODE(ruta_var, longitud, estado)

A.10.15 Procedimiento integrado INSERT_QUEUE

Objetivo:Inserta una entrada en una cola si la cola no está llena

Sintaxis:INSERT_QUEUE(valor, número_secuencia, cola, datos_cola, estado)

Parámetros de entrada/salida:

[en] valor: ENTERO

[en] secuencia_no :INTEGER

[entrada,salida] queue_t :QUEUE_TYPE

[entrada, salida] cola_datos :ARRAY OF INTEGER

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :PBQMGR

Detalles:

A–203
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

• valorespecifica el valor que se insertará en la cola, queue_t.


• secuencia_noespecifica el número de secuencia de la entrada antes de la cual se insertará la nueva
entrada.

• cola_tespecifica la variable de cola para la cola.


• cola_datosespecifica la matriz utilizada para contener los datos en la cola. La longitud de esta matriz
determina el número máximo de entradas en la cola.

• 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.

Ver también:MODIFY_QUEUE, APPEND_QUEUE, DELETE_QUEUE Procedimientos incorporados,Sección 16.8,


"Uso de colas para la comunicación de tareas"

Ejemplo:En el siguiente ejemplo, la rutinains_en_colaagrega una entradavalor)a una cola ( cola_ty


cola_datos)siguiendo la entrada especificadasecuencia_no);devuelve VERDADERO si esto fue exitoso; de
lo contrario, devuelve FALSO.

Procedimiento integrado INSERT_QUEUE


PROGRAMA ins_queue_x
%ambiente PBQMGR
RUTINA ins_in_queue(valor: ENTERO;
secuencia_no: ENTERO;
cola_t: TIPO DE COLA;
queue_data: MATRIZ DE ENTEROS): BOOLEAN
VAR
estado: ENTERO
EMPEZAR

INSERT_QUEUE(valor, número_secuencia, cola_t, datos_cola, estado) retorno


(estado = 0)
FIN ins_in_queue
EMPEZAR
FIN ins_queue_x

A.10.16 Tipo de datos ENTERO

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)

Tabla A–14. Literales INTEGER válidos y no válidos

Válido Inválido Razón

1 1.5 Punto decimal no permitido (debe ser un número entero)

– 2500450 – 2.500.450 Comas no permitidas

+ 65 +65 Espacios no permitidos

• Si se pasa un argumento INTEGER a una rutina donde se espera un parámetro REAL, se


trata como REAL y se pasa por valor.

• Solo las expresiones INTEGER pueden asignarse a variables INTEGER, devolverse desde rutinas de
función INTEGER o pasarse como argumentos a parámetros INTEGER.

• Los operadores INTEGER válidos son:

— Operadores aritméticos (+, -, *, /, DIV, MOD)


— Operadores relacionales (>, >=, =, <>, <, <=)

— Operaciones bit a bit (Y, O, NO)

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

Ejemplo:Referirse aapéndice Bpara obtener ejemplos de programas detallados.

A.10.17 Función integrada INV

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

Sintaxis:Función INV(pos) Tipo de valor devuelto:POSICIÓN

Parámetros de entrada/salida:

[en] pos :POSICIÓN

%ENTORNO Grupo :SISTEMA

Detalles:

• El valor devuelto es el inverso delposiciónargumento.

A–205
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

• La configuración de la POSICIÓN devuelta será la delposiciónargumento.

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.

Función integrada INV


PROGRAMA p_inv
VAR
rack_pos, part_pos, p1 : POSICIÓN INICIO

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

A.10.18 Procedimiento integrado IO_MOD_TYPE

Objetivo:Permite que un programa KAREL determine el tipo de módulo en un rack/slot específico

Sintaxis:IO_MOD_TYPE(rack_no, slot_no, mod_type, status)

Parámetros de entrada/salida:

[en] rack_no :INTEGER

[en] slot_no :INTEGER

[fuera] mod_type :INTEGER

[fuera] estado: ENTERO

%ENVIRONMENT Grupo :IOSETUP

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.

• tipo_modes el tipo de módulo.

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.

Procedimiento integrado IO_MOD_TYPE


PROGRAMA iomodtipo
%CONFIGURACIÓN DE IO DEL MEDIO AMBIENTE

RUTINA get_mod_type(rack_no: ENTERO;


slot_no: ENTERO;
tipo_mod: ENTERO): ENTERO
VAR
estado: ENTERO
EMPEZAR
IO_MOD_TYPE(rack_no, slot_no, mod_type, status) RETURN
(estado)
FIN get_mod_type
EMPEZAR

FIN iomodtipo

A.10.19 Función integrada IO_STATUS

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)

Tipo de retorno de función: ENTERO

Parámetros de entrada/salida:

[en] id_archivo :ARCHIVO

%MEDIO AMBIENTE Grupo :PBCORE

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

Tabla A–15. Errores de IO_STATUS

0 La última operación en el archivo especificado fue exitosa

2021 Fin de archivo para dispositivo de disco RAM

10006 Fin de archivo para dispositivo de disquete

12311 Variable no inicializada

12324 Cadena de modo abierto ilegal

12325 Cadena de archivo ilegal

12326 El archivo var ya está en uso

12327 No se pudo abrir el archivo

12328 El archivo no se abre

12329 No se puede escribir la variable

12330 No se pudo escribir el archivo

12331 No se puede leer la variable

12332 Los datos de lectura son demasiado cortos

12333 Cadena ASCII ilegal para leer

12334 No se pudo leer el archivo

12335 No se puede abrir el archivo pre_definido

12336 No se puede cerrar el archivo pre_definido

12338 Error al cerrar el archivo

12347 No se pudo leer el valor de E/S

12348 Escribir valor de E/S falló

12358 Tiempo de espera en la solicitud de lectura

12359 La solicitud de lectura está anidada

12367 Mala base en formato

• Use READ file_id(cr) para borrar cualquier error de IO_STATUS.

• 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

A.11 - J - KAREL IDIOMA DESCRIPCIÓN

A.11.1 Función integrada J_IN_RANGE

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)

Tipo de retorno de función: BOOLEAN

Parámetros de entrada/salida:

[en] posición :JOINTPOS

%ENTORNO Grupo :SISTEMA

Detalles:

• El valor devuelto es VERDADERO siposiciónestá dentro del sobre de trabajo; de lo contrario, se devuelve FALSO.

Ver también:Función incorporada IN_RANGE, procedimiento incorporado CHECK_EPROS

A.11.2 Tipo de datos JOINTPOS

Objetivo:Define una variable, tipo de devolución de función o parámetro de rutina como tipo de datos JOINTPOS.

Sintaxis:JOINTPOS<n> <EN GRUPO[m]>

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).

• norteespecifica el número de ejes, con 9 como valor predeterminado. El tamaño en bytes es 4 + 4 * n.

• 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.

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

A–209
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

Sección B.5, "Uso de registros integrados" (REG_EX.KL)

Sección B.6, "Programa de manejadores de condiciones y variables de ruta" (PTH_MOVE.KL)

Sección B.8, "Generación y movimiento a lo largo de una ruta hexagonal" (GEN_HEX.KL)

Sección B.14, "Aplicación de compensaciones a un programa de Teach Pendant copiado" (CPY_TP.KL)

A.11.3 Función integrada JOINT2POS

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:

[en] in_jnt :Jointpos

[en] uframe :POSICIÓN

[en] utool :POSICIÓN

[en] config_ref :INTEGER

[fuera] out_pos :POSICIÓN

[fuera] wjnt_cfg :CONFIG

[fuera] ext_ang :ARRAY OF REAL

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :MOTN

Detalles:

• la entradaen_jntse define como los ángulos de articulación a convertir a la posición cartesiana.

• la entradauframees el marco de usuario para la posición cartesiana.

• la entradautoolse define como el marco de herramienta correspondiente.

• 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

— 1 : (HALF_SOLN) = Articulación de la muñeca (xyz456). Este valor no calcula/usa wpr.

— 2 :(CONFIG_TCP) = La configuración de la articulación de la muñeca (arriba/abajo) se basa en la muñeca fija.

— 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 salidaout_poses la posición cartesiana correspondiente a los ángulos de articulación de entrada.

• La salidawjnt_cfges la configuración de la articulación de la muñeca. El valor se emitirá cuandoconfig_ref


corresponde a HALF_SOLN.

• La salidaext_angcontiene los valores de los ángulos de articulación para los ejes extendidos, si existen.

• La salidaestadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ha


ocurrido un error.

A.12 - K - KAREL IDIOMA DESCRIPCIÓN

A.12.1 Procedimiento incorporado de KCL

Objetivo:Envía el comando KCL especificado por el argumento STRING a KCL para su ejecución.

Sintaxis:KCL (comando, estado)

Parámetros de entrada/salida:

[en] comando :STRING

[fuera] estado: ENTERO

%ENVIRONMENT Grupo :kclop

Detalles:

• dominiodebe contener un comando KCL válido.

• dominiono puede exceder los 126 caracteres.

• 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.

• estadoindica si el comando se ejecutó con éxito.

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.

Ver también:Procedimientos integrados KCL_NO_WAIT, KCL_STATUS

Ejemplo:El siguiente ejemplo mostrará programas y esperará hasta que termine. El estado será el resultado
de esta operación.

Procedimiento incorporado de KCL


PROGRAMA prueba_kcl
VAR
dominio :CADENA[20]
estado :ENTERO
EMPEZAR

comando = 'MOSTRAR PROGRAMAS'


KCL (comando, estado)
FINAL prueba_kcl

Ejemplo:Referirse aPrograma de ejemplo para mostrar solo elementos de datospara otro ejemplo.

A.12.2 Procedimiento integrado KCL_NO_WAIT

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.

Sintaxis:KCL_NO_WAIT (comando, estado)

Parámetros de entrada/salida:

[en] comando :STRING

[fuera] estado: ENTERO

%ENVIRONMENT Grupo :kclop

Detalles:

• dominiodebe contener un comando KCL válido.

• estadoindica si KCL aceptó el comando.


• La ejecución del programa espera hasta que KCL acepta el comando o se detecta un error.

Ver también:Procedimientos integrados KCL, KCL_STATUS

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.

Procedimiento integrado KCL_NO_WAIT


PROGRAMA prueba_kcl
VAR
dominio :CADENA[20]
estado :ENTERO
EMPEZAR

comando = 'Cargar prueba de programa_1'


KCL_NO_WAIT (comando, estado)
demora 5000
estado = KCL_ESTADO
FIN kcl_test

A.12.3 Procedimiento integrado KCL_STATUS

Objetivo:Devuelve el estado del último comando ejecutado desde los procedimientos integrados KCL
o KCL_NO_WAIT.

Sintaxis:KCL_STATUS

Tipo de retorno de función: ENTERO

%ENVIRONMENT Grupo :kclop

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.

Ver también:KCL_NO_WAIT, Procedimientos incorporados de KCL

A.13 - L - KAREL IDIOMA DESCRIPCIÓN

A.13.1 Función incorporada de LN

Objetivo:Devuelve el logaritmo natural de un argumento REAL especificado

Sintaxis:LN(x)

Tipo de retorno de función: REAL

A–213
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

Parámetros de entrada/salida:

[en] x : REAL

%ENTORNO Grupo :SISTEMA

Detalles:

• El valor devuelto es el logaritmo natural deX.


• XDebe ser mayor que cero. De lo contrario, el programa se cancelará con un error.

Ejemplo:El siguiente ejemplo devuelve el logaritmo natural de la variable de entradaay lo asigna


a la variableb.

Función incorporada de LN
ESCRIBIR(CR, CR, 'ingrese un número =')
LEER(a,CR)
b = LN(a)

A.13.2 Procedimiento integrado LOAD

Objetivo:Carga el archivo especificado

Sintaxis:LOAD (file_spec, option_sw, estado)

Parámetros de entrada/salida:

[en] especificación_archivo :CADENA

[en] option_sw :INTEGER

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :PBCORE

Detalles:

• file_specespecifica el dispositivo, el nombre y el tipo de archivo que se va a cargar. Son válidos los siguientes tipos:

. Programa colgante TP Teach

. Programa PC KAREL

. Variables VR KAREL

A–214
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

. Variables del sistema SV KAREL

. E/S Datos de configuración de E/S

no ext KAREL programa y variables


• opción_swespecifica el tipo de opciones a realizar durante la carga.

El siguiente valor es válido para archivos .TP:

— 1 Si el programa ya existe, sobrescribe el programa. Si option_sw no es 1 y el


programa existe, se devolverá un error.

El siguiente valor es válido para archivos .SV:

— 1 Convierte variables del sistema.

• opción_swse ignora para todos los demás tipos.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

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.

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.2, "Copiar variables de ruta" (CPY_PTH.KL)

Sección B.7, "Listado de archivos y programas y manipulación de cadenas" (LIST_EX.KL)

Sección B.10, "Uso de pantallas dinámicas incorporadas" (DYN_DISP.KL)

A.13.3 Procedimiento integrado LOAD_STATUS

Objetivo:Determina si el programa KAREL especificado y sus variables se cargan en la memoria

Sintaxis:LOAD_STATUS(prog_name, cargado, inicializado)

Parámetros de entrada/salida:

[en] nombre_del_programa :STRING

[fuera] cargado :BOOLEANO

[fuera] inicializado: BOOLEAN

A–215
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

%MEDIO AMBIENTE Grupo :PBCORE

Detalles:

• prog_namedebe ser un programa y no puede ser una rutina.

• cargadodevuelve un valor de VERDADERO siprog_nameestá actualmente cargado en la memoria. Se


devuelve FALSO siprog_nameno está cargado.

• inicializadodevuelve un valor de VERDADERO si alguna variable dentroprog_nameha sido inicializado. Se devuelve


FALSO si todas las variables dentroprog_nameno están inicializados.

• Si algunocargadooinicializadoes FALSO, utilice el procedimiento integrado LOAD para cargar


prog_name y sus variables.

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.7, "Listado de archivos y programas y manipulación de cadenas" (LIST_EX.KL)

Sección B.10, "Uso de pantallas dinámicas incorporadas" (DYN_DISP.KL)

A.13.4 Procedimiento integrado LOCK_GROUP

Objetivo:Bloquea el control de movimiento para el grupo de ejes especificado

Sintaxis:LOCK_GROUP(máscara_de_grupo, estado)

Parámetros de entrada/salida:

[en] máscara_de_grupo : ENTERO

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :MULTI

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.

• losmáscara_de_grupose especifica configurando los bits para los grupos deseados.

Tabla A–16. Configuración de máscara de grupo

GRUPO DECIMAL UN POCO

Grupo 1 1 1

A–216
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

Cuadro A–16. Configuración de Group_mask (continuación)

GRUPO DECIMAL UN POCO

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".

• El control de movimiento se obtiene para los grupos de movimiento especificados.

• 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á.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, ocurrió un error.

Ejemplo:El siguiente ejemplo desbloquea los grupos 1, 2 y 3 y luego bloquea el grupo 3. Consultecapitulo
16MULTITAREA,para más ejemplos.

Procedimiento integrado LOCK_GROUP


%AMBIENTE MOTN
%AMBIENTE MULTI
VAR
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
ENDIF
DEMORA 500
HASTA estado = 0
- - Bloquear solo el grupo 3
LOCK_GROUP(4, estado)
FIN lock_grp_ex

A.13.5 Directiva de traductor %LOCKGROUP

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

Sintaxis:%GRUPO DE BLOQUEO = n, n,...

Detalles:

• nortees el número del grupo de movimiento que se bloqueará.

• El rango denortees 1 al número de grupos en el controlador.

• 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.

• Si no se especifica %LOCKGROUP, se bloquearán todos los grupos.

• La directiva %NOLOCKGROUP se puede especificar si no se debe bloquear ningún grupo.

Ver también:%Directiva NOLOCKGROUP, LOCK_GROUP, Procedimientos incorporados UNLOCK_GROUP

A.14 - M - KAREL IDIOMA DESCRIPCIÓN

A.14.1 ESPEJO función incorporada

Objetivo:Determina la imagen especular de una variable de posición especificada.

Sintaxis:ESPEJO (antiguo_pos, espejo_marco, orientación_bandera)

Tipo de retorno de función: XYZWPREXT

Parámetros de entrada/salida:

[en] old_pos :POSICIÓN

[en] mirror_frame :POSICIÓN

[en] orient_flag :BOOLEANO

%MEDIO AMBIENTE Grupo :MIR

Detalles:

• viejo_posyespejo_marcoambos deben definirse en relación con el mismo marco de usuario.

• viejo_posespecifica el valor cuya imagen especular se va a generar.

• espejo_marcoespecifica el valor a través del cual xz_plane se generará la imagen.


• Sibandera_orientees VERDADERO, tanto el componente de orientación como el de ubicación deviejo_posserá
reflejado. Si es FALSO, solo se refleja la ubicación y la orientación de la nueva posición de imagen especular es la
misma que la deviejo_pos.

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.

Ver también:La aplicación específica apropiadaManual de operaciones y configuración de FANUC America


Corporation,capítulo sobre "Funciones avanzadas"

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.

ESPEJO función incorporada

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

orient_flag = VERDADERO - - La posición de espejo incluye el reflejo de


- - la orientación de la herramienta.
mir_posa = mirror(org_pos,frame,orient_flag)
- - mir_posa es la posición reflejada donde Normal
- - Se han reflejado los vectores de orientación y aproximación.
final mir_examen

A.14.2 Procedimiento integrado MODIFY_QUEUE

Objetivo:Reemplaza el valor de una entrada de una cola.

Sintaxis:MODIFY_QUEUE(valor, número_secuencia, cola_t, datos_cola, estado)

Parámetros de entrada/salida:

[en] valor: ENTERO

[en] secuencia_no :INTEGER

[entrada,salida] queue_t :QUEUE_TYPE

[entrada, salida] cola_datos :ARRAY OF INTEGER

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :PBQMGR

Detalles:

• valorespecifica el valor que se insertará en la cola.


• secuencia_noespecifica el número de secuencia de la entrada cuyo valor se va a modificar

• cola_tespecifica la variable de cola para la cola


• cola_datosespecifica la matriz utilizada para contener los datos en la cola. La longitud de esta matriz
determina el número máximo de entradas en la cola.

• estadose devuelve con 61003, "Número de secuencia incorrecta", si el número de secuencia especificado no está en
la cola.

Ver también:Procedimientos incorporados COPY_QUEUE, GET_QUEUE, DELETE_QUEUESección 16.8, "Uso de


colas para la comunicación de tareas"

Ejemplo:En el siguiente ejemplo, la rutina update_queue reemplaza el valor de la entrada


especificada (secuencia_no);de una cola (colaycola_datoscon un nuevo valor (valor).

A–220
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

Procedimiento integrado MODIFY_QUEUE


PROGRAMA mod_queue_x
%ENTORNO PBQMGR
RUTINA update_queue(valor: ENTERO;
secuencia_no: ENTERO;
cola_t: TIPO DE COLA;
queue_data: MATRIZ DE ENTEROS)
VAR
estado: ENTERO
EMPEZAR

MODIFY_QUEUE(valor, número_secuencia, cola_t, datos_cola, estado) volver

END update_queue
EMPEZAR

FIN mod_queue_x

A.14.3 Función integrada MOTION_CTL

Objetivo:Determina si el programa KAREL tiene control de movimiento para el grupo de ejes especificado

Sintaxis:MOTION_CTL<(grupo_máscara)>

Tipo de retorno de función: BOOLEAN

Parámetros de entrada/salida:

[en] máscara_de_grupo :INTEGER

%MEDIO AMBIENTE Grupo :MOTN

Detalles:

• Simáscara_de_grupose omite, se asume la máscara de grupo predeterminada para el programa.

• El valor por defectomáscara_de_grupoestá determinado por las directivas %LOCKGROUP y


%NOLOCKGROUP.

• losmáscara_de_grupose especifica configurando los bits para los grupos deseados.

Tabla A–17. Configuración de máscara de grupo

GRUPO DECIMAL UN POCO

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.

A.14.4 Procedimiento integrado MOUNT_DEV

Objetivo:Monta el dispositivo especificado

Sintaxis:MOUNT_DEV (dispositivo, estado)

Parámetros de entrada/salida:

[en] dispositivo: STRING

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :FDEV

Detalles:

• dispositivoespecifica el dispositivo que se va a montar.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ver también:DISMONT_DEV y FORMAT_DEV

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.14.5 Procedimiento integrado MOVE_FILE

Objetivo:Mueve el archivo especificado de un dispositivo de archivo de memoria a otro

Sintaxis:MOVE_FILE (file_spec, estado)

Parámetros de entrada/salida:

[en] file_spec: cadena

[fuera] estado: entero

%MEDIO AMBIENTE Grupo :FDEV

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.

• Sifile_speces 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.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ejemplo:En el siguiente ejemplo, todos los archivos .KL se mueven del disco RAM al disco FROM.

Procedimiento integrado MOVE_FILE


PROGRAMA move_files
%NOLOCKGROUP
%AMBIENTE FDEV
VAR
estado: ENTERO
EMPEZAR

MOVER_ARCHIVO('RD:\*.KL', estado)
SI estado <> 0 ENTONCES
POST_ERR(estado, '', 0, 0) ENDIF

FIN move_files

A.14.6 Procedimiento integrado MSG_CONNECT

Objetivo:Conecte un puerto de cliente o servidor a otra computadora para usar en Socket Messaging.

Sintaxis:MSG_CONNECT (etiqueta, estado)

Parámetros de entrada/salida:

[en] etiqueta :CADENA

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :FLBT

Detalles:

• La etiqueta es el nombre de un puerto de cliente (C1:-C8) o un puerto de servidor (S1:S8).

• Estado explica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

A-223
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

Ver también:Mensajería de socket en elManual de operaciones y configuración de opciones de Internet de FANUC


America Corporation.

Ejemplo:El siguiente ejemplo se conecta a S8: y lee mensajes. Los mensajes se muestran en la pantalla
de la consola portátil.

Procedimiento integrado MSG_CONNECT

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

SET_FILE_ATR (archivo_var, ATR_IA)


- - Configurar la etiqueta del servidor
S8 DISMOUNT_DEV('S8:',status)
MOUNT_DEV('S8:',status) escribir
(' Estado de montaje = ', estado, cr) = 0
estado
SI estado = 0 ENTONCES
- - Conectar la etiqueta de
escritura ('Conectando . . ',cr)
MSG_CONNECT ('S8:', estado)
escribir ('Estado de conexión = ', estado, cr) SI
estado < > 0 ENTONCES
MSG_DISCO('S8:',estado) escritura
('Conectando...',cr)
MSG_CONNECT('S8:',estado)
escritura (' Estado de conexión = ', estado, cr)
TERMINARA SI

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

A.14.7 Procedimiento integrado MSG_DISCO

Objetivo:Desconecte un puerto de cliente o servidor de otra computadora.

Sintaxis:MSG_DISCO (etiqueta, estado)

Parámetros de entrada/salida:

[en] etiqueta :CADENA

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :FLBT

Detalles:

• La etiqueta es el nombre de un puerto de cliente (C1:-C8) o un puerto de servidor (S1:S8).

• Estado explica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ver también:Mensajería de socket en elManual de operaciones y configuración de opciones de Internet de FANUC


America Corporation.

Ejemplo:Consulte el procedimiento integrado MSG_CONNECT para obtener más ejemplos.

A.14.8 MSG_PING

Sintaxis:MSG_PING (nombre de host, estado)

Parámetros de entrada/salida:

[en] nombre de host :STRING

A–225
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :FLBT

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).

• Estado explica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

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.

Procedimiento integrado MSG_PING

PROGRAMA prueba de ping


VAR
Tmp_int : ENTERO
Estado : entero
EMPEZAR

ESCRIBIR('hacer ping...',cr)
MSG_PING('fido',status) WRITE('ping Status =
',status,cr) END prueba de ping

A.15 - N - KAREL IDIOMA DESCRIPCIÓN

A.15.1 Acción NO ABORTAR

Objetivo:Evita que se cancele la ejecución del programa cuando se produce un error externo

Detalles:

• La acción NOABORT suele corresponder a un ERROR[n].


• Si el programa se aborta por sí mismo (es decir, al ejecutar una declaración ABORT, error de tiempo de
ejecución), la acción NOABORT se ignorará y la ejecución del programa se abortará.

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

- - Manejador de condición de discrepancia de


pulso CONDICIÓN[801]:
CUANDO ERROR[11038] HACER
NO ABORTAR

CONDICIÓN FINAL
HABILITAR CONDICIÓN[801]
FIN noabort_ex

A.15.2 Directiva de traductor %NOABORT

Objetivo:Especifica una máscara para abortar

Sintaxis:%NOABORTAR = ERROR + COMANDO

Detalles:

• ERROR y COMMAND se definen de la siguiente manera:


ERROR: ignorar la gravedad del error de cancelación
COMANDO: ignorar el comando de cancelación

• Se puede especificar cualquier combinación de ERROR y COMMAND.

• 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.

A.15.3 Directiva de traductor %NOBUSYLAMP

Objetivo:Especifica que la lámpara de ocupado estará APAGADA durante la ejecución.

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

A.15.4 Función integrada NODE_SIZE

Objetivo:Devuelve el tamaño (en bytes) de un nodo PATH

Sintaxis:NODE_SIZE(ruta_var)

Tipo de retorno de función: ENTERO

Parámetros de entrada/salida:

[en] ruta_var: RUTA

%MEDIO AMBIENTE Grupo :PATHOP

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.

Función integrada NODE_SIZE


PROGRAMA leer_y_mov
VAR mi camino: SENDERO

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

Estado VAR: ENTERO


EMPEZAR

SET_FILE_POS(file_var, path_base+(node_no-1)*node_size, READ estado)


file_var(my_path[node_no])
FIN leer_nodo
--
EMPEZAR

SET_FILE_ATR(file_var, atr_uf) OPEN FILE


F1('RO','PATHFILE.DT') read_header

PARA i = 1 PARA max_node_no HACER


leer_nodo(i)
xyz_pos = mi_ruta[i]
SET_POS_REG(1 xyz_pos, estado)
move_to_pr1 —— Llamar al programa TP para moverse al nodo
ENDFOR
CERRAR ARCHIVO file_var
FIN leer_y_mov

A.15.5 Directiva de traductor %NOLOCKGROUP

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:

• Cuando se llama al programa o la rutina, la tarea no intentará obtener el control de movimiento.

• 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.

• La rutina integrada UNLOCK_GROUP se puede utilizar para liberar el control.

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.

Ver también:%Directiva de traductor LOCKGROUP, LOCK_GROUP, UNLOCK_GROUP Procedimientos


incorporados

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.3, "Guardar datos en el dispositivo predeterminado" (SAVE_VR.KL)

Sección B.5, "Uso de registros integrados" (REG_EX.KL)

Sección B.10, "Uso de pantallas dinámicas incorporadas" (DYN_DISP.KL)

Sección B.11, "Manipulación de valores de variables mostradas dinámicamente" (CHG_DATA.KL)

Sección B.12, "Visualización de una lista desde un archivo de diccionario" (DCLST_EX.KL)

Sección B.13, "Uso de DISCTRL_ALPHA incorporado" (DCALP_EX.KL)

A.15.6 Acción SIN MENSAJE

Objetivo:Suprime la visualización y el registro de mensajes de error.

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.

• Utilice un comodín (*) para suprimir todos los mensajes.

• 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.

A.15.7 Acción SIN PAUSA

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:

• La acción SIN PAUSA normalmente corresponde a una condición de ERROR[n] o PAUSA.

• El programa se reanudará, incluso si estaba en pausa antes del error.

• Si el programa se detiene solo, la acción NO PAUSA se ignorará y la ejecución del programa se


detendrá.

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.

Acción SIN PAUSA


RUTINA uninit_error
EMPEZAR
ESCRIBE ('No inicializado operando',CR)
ESCRIBIR ('Use KCL> SET VAR para inicializar el operando',CR) ESCRIBIR
('Presione Reanudar en la pantalla Prueba/Ejecutar para ',cr) ESCRIBIR
('continuar programa',cr)
PAUSA - - pausa el programa (deshace la acción NO PAUSA)
FIN uninit_error
CONDICIÓN[1]:
CUANDO ERROR[12311] HACER

NO PAUSA, SIN MENSAJE, uninit_error


CONDICIÓN FINAL

A.15.8 Directiva de traductor %NOPAUSE

Objetivo:Especifica una máscara para pausar

Sintaxis:%SIN PAUSA = ERROR + COMANDO + TPENABLE

Detalles:

• Los bits para la máscara son los siguientes:


ERROR: ignorar la gravedad del error de pausa
COMANDO: ignorar el comando de pausa
TPENABLE: ignorar la solicitud en pausa cuando TP está habilitado

• Se puede especificar cualquier combinación de ERROR, COMMAND y TPENABLE.

• Si el programa se pausa solo, la directiva %NOPAUSE se ignorará y la ejecución del


programa se pausará.

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.

A.15.9 Directiva de traductor %NOPAUSESHFT

Objetivo:Especifica que la tarea no se detiene si se suelta la tecla Mayús.

Sintaxis:%NOPAUSESHFT

Detalles:

• Este atributo se puede establecer durante la ejecución de la tarea mediante la rutina integrada SET_TSK_ATTR.

A.16 - O - KAREL IDIOMA DESCRIPCIÓN

A.16.1 Declaración de ARCHIVO ABIERTO

Objetivo:Asocia un archivo de datos o puerto de comunicación con una variable de archivo

Sintaxis:ABRIR ARCHIVO file_var (uso_cadena, archivo_cadena)

dónde:

file_var : ARCHIVO

use_string : una CADENA

file_string : una CADENA

Detalles:

• file_vardebe ser una variable estática que no esté siendo utilizada por otra instrucción OPEN FILE.

• loscadena_usose compone de lo siguiente:

'RO': solo lectura

'RW' :Leer escribir

'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

MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

• 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.

Ver también:Función incorporada IO_STATUS, procedimiento incorporado SET_FILE_ATR,Capítulo 7OPERACIONES DE


ENTRADA/SALIDA DE ARCHIVOS,Capítulo 9SISTEMA DE ARCHIVOS,Apéndice E, "Diagramas de sintaxis" para obtener más
información sobre la sintaxis

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.2, "Copiar variables de ruta" (CPY_PTH.KL)

Sección B.12, "Visualización de una lista desde un archivo de diccionario" (DCLST_EX.KL)

A.16.2 Declaración MANO ABIERTA

Objetivo:Abre una mano en el robot

Sintaxis:MANO ABIERTA hand_num

dónde:

hand_num : una expresión INTEGER

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.

Declaración MANO ABIERTA


mover_a_pr2 — — Llame al programa TP para pasar a PR[2]
MANO ABIERTA hand_num

A–233
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

A.16.3 Procedimiento integrado OPEN_TPE

Objetivo:Abre el programa del Teach Pendant especificado

Sintaxis:OPEN_TPE(nombre_prog, modo_abierto, modo_rechazo, id_abierto, estado)

Parámetros de entrada/salida:

[en] nombre_del_programa :STRING

[en] modo_abierto :INTEGER

[en] modo_rechazo :INTEGER

[fuera] open_id :INTEGER

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :PBCORE

Detalles:

• prog_nameespecifica el nombre del programa del colgante de enseñanza que se abrirá.prog_namedebe estar en todas
las letras mayúsculas.

• prog_namedebe estar cerrado, usando CLOSE_TPE, antesprog_namese puede ejecutar

• modo_abiertodetermina el código de acceso al programa. Los códigos de acceso se definen de la siguiente manera:

0 : ninguno

TPE_RDACC: acceso de lectura

TPE_RWACC: acceso de lectura/escritura

• 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

TPE_RDREJ: Rechazo de lectura

TPE_WRTREJ: Rechazo de escritura

TPE_RWREJ: Rechazo de lectura/escritura

TPE_ALLREJ: Rechazo total

• id_abiertoindica el número de identificación del programa abierto.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ha ocurrido un error.

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.

Ver también:Procedimiento integrado CREATE_TPE, procedimiento integrado COPY_TPE, procedimiento integrado


AVL_POS_NUM

Ejemplo:Referirse aSección B.14, "Aplicación de compensaciones a un programa de Teach Pendant


copiado" (CPY_TP.KL), para ver un ejemplo de programa detallado.

A.16.4 Función integrada ORD

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)

Tipo de retorno de función: ENTERO

Parámetros de entrada/salida:

[en] cadena :CADENA

[en] str_index :ENTERO

%ENTORNO Grupo :SISTEMA

Detalles:

• El valor devuelto representa el código numérico ASCII del carácter especificado.

• str_indexespecifica la posición indexada de un carácter en el argumentocalle.Un valor de 1 indica el


primer carácter.

• Sistr_indexes menor que uno o mayor que la longitud actual decalle,el programa está en pausa con
un error.

Ver también:Apéndice D, “Códigos de caracteres”

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.16.5 Función integrada ORIENTAR

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)

Tipo de retorno de función: VECTOR

Parámetros de entrada/salida:

[en] posición: POSICIÓN

%MEDIO AMBIENTE Grupo :VECTR

Detalles:

• En lugar de usar este incorporado,puede acceder directamente al Vector de Orientación de una POSICIÓN.

• El valor devuelto es el vector de orientación deposición.

• El vector de orientación es la dirección y positiva en el marco de coordenadas de la herramienta.

A.17 - P - KAREL IDIOMA DESCRIPCIÓN

A.17.1 Tipo de datos de RUTA

Objetivo:Define una variable o parámetro de rutina como tipo de datos PATH

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.

• No se definen operadores válidos para su uso con variables PATH.

• 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.

• Un PATH no inicializado tiene una longitud de cero.

• 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:

— NODEDATA = node_struct_name, especificando la estructura de datos que constituye un nodo de ruta.

— PATHHEADER = header_struct_name, especificando la estructura que constituye el encabezado de la 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.

• Si no se especifica NODEDATA, el valor predeterminado es la estructura STD_PTH_NODE descrita en el


Apéndice A.

• Si no se especifica PATHHEADER, no hay encabezado de ruta (accesible por el usuario).

• Se puede hacer referencia a un elemento de la estructura PATHHEADER con la sintaxis


path_var_name.header_field_name.

• Se puede hacer referencia a un elemento de una estructura NODEDATA con la sintaxis


path_var_name[node_no].node_field_name.

• 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.

Ver también:APPEND_NODE, DELETE_NODE, INSERT_NODE Procedimientos integrados, PATH_LEN,


NODE_SIZE Funciones integradas

Ejemplo:El siguiente ejemplo muestra diferentes declaraciones de variables PATH.

Tipo de datos de RUTA

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.

Tipo de datos de RUTA

- - Uso de declaraciones para path_1a:


- - Uso de campos NODEDATA: ruta_1a[1].nodo_posn =
CURPOS(0, 0) cnt_dn_time =
ruta_1a[nodo_no].weld_time
- - Uso de campos PATHHEADER:
path_1a.utool = tool_1

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.2, "Copiar variables de ruta" (CPY_PTH.KL)

Sección B.6, "Programa de manejadores de condiciones y variables de ruta" (PTH_MOVE.KL)

A.17.2 Función integrada PATH_LEN

Objetivo:Devuelve el número de nodos en el argumento PATH

Sintaxis:RUTA_LEN(ruta_nombre)

Tipo de retorno de función: ENTERO

Parámetros de entrada/salida:

[en] nombre_ruta : RUTA

%MEDIO AMBIENTE Grupo :PBCORE

Detalles:

• El valor devuelto corresponde al número de nodos en el argumento de la variable PATH.

A–238
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

• Llamar a PATH_LEN con un PATH no inicializado devuelve un valor de cero.

Ver también:COPY_PATH integrado

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.2, "Copiar variables de ruta" (CPY_PTH.KL)

Sección B.6, "Programa de manejadores de condiciones y variables de ruta" (PTH_MOVE.KL)

Sección B.1, "Configuración de puertos de salida digital para monitoreo" (DOUT_EX.KL)

A.17.3 PAUSA Acción

Objetivo:Suspende la ejecución de una tarea en ejecución

Sintaxis:PAUSAR <PROGRAMA[n]>

Detalles:

• La acción PAUSA pausa la ejecución de la tarea de la siguiente manera:

— Cualquier moción ya iniciada continúa hasta que se complete.

— Los archivos se dejan abiertos.

— Todos los temporizadores conectados continúan incrementándose.

— Todas las sentencias PULSE en ejecución continúan ejecutándose.

— Continúa la detección de las condiciones especificadas en los controladores de condiciones.

— 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á.

• Utilice GET_TSK_INFO para encontrar un número de tarea.

Ver también:Acción DE PAUSA

A.17.4 PAUSA Condición

Objetivo:Supervisa la pausa de la ejecución del programa.

Sintaxis:PAUSA < PROGRAMA [n] >

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á.

• Utilice GET_TSK_INFO para encontrar un número de tarea.

Ejemplo:El siguiente ejemplo busca la condición de PAUSA en un controlador de condición global. Si se


cumple esta condición, se activará DOUT[1]. La acción CONTINUAR continúa la ejecución del programa;
ENABLE vuelve a habilitar el controlador de condiciones.

PAUSA Condición
CONDICIÓN[1]:
CUANDO PAUSA HACER

SALIDA[1] = CIERTO

SEGUIR
HABILITAR CONDICIÓN[1]
CONDICIÓN FINAL

A.17.5 Declaración de PAUSA

Objetivo:Suspende la ejecución de un programa KAREL

Sintaxis:PAUSA < PROGRAMA [n] >

Detalles:

• La instrucción PAUSE detiene la ejecución del programa de la siguiente manera:

— Cualquier moción ya iniciada continúa hasta que se complete.

— Los archivos se dejan abiertos.

— Todos los temporizadores conectados continúan incrementándose.

— Todas las sentencias PULSE en ejecución continúan ejecutándose.

— Continúa la detección de las condiciones especificadas en los controladores de condiciones.

— 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á.

• Utilice GET_TSK_INFO para encontrar un número de tarea.

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

A.17.6 Procedimiento integrado PAUSE_TASK

Objetivo:Pausa la tarea en ejecución especificada

Sintaxis:PAUSE_TASK(tarea_nombre, force_sw, stop_mtn_sw, estado)

Parámetros de entrada/salida:

[en] nombre_tarea :STRING

[en] force_sw :BOOLEANO

[en] stop_mtn_sw :BOOLEANO

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :MULTI

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.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ver también:RUN_TASK, CONT_TASK, ABORT_TASK Procedimientos incorporados,capitulo 16


MULTITAREA

Ejemplo:El siguiente ejemplo pausa la tarea especificada por el usuario y detiene cualquier movimiento.
Referirse a capitulo 16MULTITAREA,para más ejemplos.

Procedimiento integrado PAUSE_TASK


PROGRAMA pausa_ex
%AMBIENTE MULTI
VAR
task_str: CADENA[12]
estado : ENTERO
EMPEZAR

WRITE('Ingrese el nombre de la tarea para


pausar:') READ(task_str)
PAUSE_TASK(tarea_str, VERDADERO, VERDADERO,
estado) FIN pausa_ex

A.17.7 Procedimiento integrado PEND_SEMA

Objetivo:Suspende la ejecución de la tarea hasta que el valor del semáforo sea mayor que cero o
expire max_time

Sintaxis:PEND_SEMA(semaphore_no, max_time, time_out)

Parámetros de entrada/salida:

[en] semaphore_no :INTEGER

[en] max_time :INTEGER

[out] time_out :BOOLEANO

%MEDIO AMBIENTE Grupo :MULTI

Detalles:

• PEND_SEMA decrementa el valor del semáforo.


• semáforo_noespecifica el número de semáforo a utilizar.

• semáforo_nodebe estar en el rango de 1 al número de semáforos definidos en el controlador.

A-242
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

• max_timeespecifica el tiempo de caducidad, en milisegundos. Un valor max_time de -1 indica esperar para


siempre, si es necesario.

• 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.

Ver también:POST_SEMA, procedimientos integrados CLEAR_SEMA, función integrada SEMA_COUNT,


capitulo 16MULTITAREA

Ejemplo:Ver ejemplos encapitulo 16MULTITAREA

A.17.8 Procedimiento integrado PIPE_CONFIG

Objetivo:Configurar una tubería para uso especial.

Sintaxis:pipe_config(pipe_name, cmos_flag, n_sectors, record_size, form_dict, form_ele, estado)

Parámetros de entrada/salida:

[en] nombre_tubería :STRING

[en] cmos_flag :BOOLEANO

[en] n_sectores :INTEGER

[en] tamaño_registro :INTEGER

[en] form_dict :CADENA

[en] form_ele :INTEGER

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :FLBT

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.

• form_dict es el nombre del diccionario que contiene información de formato.

• form_ele es el número de elemento en form_dict que contiene la información de formato.

A–243
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

• estado explica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ver también:Para obtener más información, consulte "PIP: Dispositivo" enSección 9.3.4.

A.17.9 Procedimiento integrado POP_KEY_RD

Objetivo:Reanuda la entrada de teclas desde un dispositivo de teclado

Sintaxis:POP_KEY_RD(key_dev_name, pop_index, estado)

Parámetros de entrada/salida:

[en] nombre_dispositivo_clave :STRING

[en] pop_index :INTEGER

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :PBCORE

Detalles:

• Reanuda todas las solicitudes de lectura suspendidas en el dispositivo de teclado especificado.

• Si no había solicitudes de lectura activas cuando se suspendió, esta operación no reanudará ninguna entrada.
Esto no es un error.

• nombre_dispositivo_clavedebe ser uno de los dispositivos de teclado ya definidos:

'TPKB': dispositivo de teclado colgante de enseñanza

'CRKB': dispositivo de teclado CRT

• pop_idse devuelve desde PUSH_KEY_RD y debe usarse para reactivar las solicitudes de lectura.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ver también:PUSH_KEY_RD, READ_KB Procedimientos integrados

Ejemplo:Consulte el ejemplo de la rutina integrada READ_KB.

A.17.10 Acción Port_Id

Objetivo:Establece el valor de un elemento de matriz de puertos en el resultado de una expresión

Sintaxis:port_id[n] = expresión

A–244
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

dónde:

port_id: una matriz de puertos de salida

n : un ENTERO

expresión: una cláusula variable, constante o EVAL

Detalles:

• El valor deexpresiónse asigna al elemento de la matriz de puertos al que hace referencianorte.

• 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.

• La expresión debe ser del mismo tipo queport_id.


• No puede asignar un elemento de matriz de puertos a un elemento de matriz de puertos directamente.

• 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.

Ver también:Capítulo 6MANEJADORES DE CONDICIONES,Capítulo 7OPERACIONES DE ENTRADA/SALIDA DE


ARCHIVOS, Condiciones relacionales, Apéndice 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.

A.17.11 Condición Port_Id

Objetivo:Supervisa una señal de puerto digital

Sintaxis:<NOT> port_id[n] < + | - >

dónde:

port_id: una matriz de puertos

n : un ENTERO

Detalles:

A-245
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

• norteespecifica la señal del conjunto de puertos que se va a monitorear.

• 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”.

• Para condiciones de evento, solo se utilizan las alternativas + o -.

• Para condiciones de estado, solo se utiliza la alternativa NOT.

Ver también:Capítulo 6MANEJADORES DE CONDICIONES,Capítulo 7OPERACIONES DE ENTRADA/SALIDA DE


ARCHIVOS, Condiciones relacionales, Apéndice 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.

A.17.12 Función incorporada de POS

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)

Tipo de retorno de función: XYZWPR

Parámetros de entrada/salida:

[en] x, y, z, w, p y r :REAL

[en] c :CONFIG

%ENTORNO Grupo :SISTEMA

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.

Ver también:Capítulo 8DATOS DE POSICIÓN

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

Función incorporada de POS


CNV_STR_CONF('n', var_config, estado)
next_pos = POS(100,-400.25,0.5,10,-45,30,config_var)

A.17.13 Función incorporada POS2JOINT

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.

Sintaxis:POS2JOINT (ref_jnt, in_pos, uframe, utool, config_ref, wjnt_cfg, ext_ang, out_jnt y


estado).

Parámetros de entrada/salida:

[en] ref_jnt :JOINTPOS

[en] in_pos :POSICIÓN

[en] uframe :POSICIÓN

[en] utool :POSICIÓN

[en] config_ref :INTEGER

[en] wjnt_cfg :CONFIG

[en] ext_ang: ARRAY DE REAL

[fuera] out_jnt: JOINTPOS

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :MOTN

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 entradaen_poses la posición cartesiana del robot que se va a convertir en ángulos de articulación.

• la entradauframees el marco de usuario para la posición cartesiana.

• la entradautooles el cuadro de herramienta correspondiente.

• 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

— 1 : (HALF_SOLN) = Articulación de muñeca (XYZ456). Esto no calcula/usa WPR.

— 2 :(CONFIG_TCP) = La configuración de la articulación de la muñeca (arriba/abajo) se basa en la muñeca fija.

— 4 :(APPROX_SOLN) = Solución aproximada. Reducir el tiempo de cálculo de 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 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.

• La salidafuera_jntson los ángulos articulares que corresponden a la posición cartesiana

• La salidaestadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ha


ocurrido un error.

A.17.14 Procedimiento integrado POS_REG_TYPE

Objetivo:Devuelve la representación de posición del registro de posición especificado

Sintaxis:POS_REG_TYPE (register_no, group_no, posn_type, num_axes, status)

Parámetros de entrada/salida:

[en] registro: ENTERO

[en] group_no : INTEGER

[fuera] posn_type : INTEGER

[fuera] num_axes : ENTERO

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :REGOPE

Detalles:

• registro_noespecifica el registro de posición.

• Sigrupo_nose omite, se asume el grupo predeterminado para el programa.

• Sigrupo_nose especifica, debe estar en el rango de 1 al número total de grupos definidos en el


controlador.

• posn_tipodevuelve el tipo de posición. posn_type se define de la siguiente manera:

A–248
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

— 1 :POSICIÓN
— 2 :XYZWPR
— 6 :XYZWPREXT
— 9 :PUNTOS CONJUNTOS

• núm_ejesdevuelve el número de ejes en la representación si el tipo de posición es JOINTPOS. Si el


tipo de posición es XYZWPREXT, num_axes solo devuelve el número de ejes extendidos.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ver también:GET_POS_REG, GET_JPOS_REG, SET_POS_REG, SET_JPOS_REG Procedimientos


incorporados

Ejemplo:El siguiente ejemplo determina el tipo de posición en el registro y usa el incorporado apropiado para
obtener datos.

Procedimiento integrado POS_REG_TYPE


PROGRAMA get_reg_data
%NOLOCKGROUP
%AMBIENTE REGOPE
VAR
entrada: ENTERO
grupo_no: ENTERO
jpos: POS CONJUNTOS
maxpregnum: entero
núm_ejes: ENTERO
posn_tipo: ENTERO
registro_no: ENTERO
estado: ENTERO
xyz: XYZWPR
Texto xix: XYZWPREXTBEGIN
grupo_no = 1
GET_VAR(entrada, '*POSREG*' ,'$MAXPREGNUM', maxpregnum, estado)
- - Bucle para cada registro FOR
register_no = 1 a 10 DO
- - Obtener el tipo de registro de posición
POS_REG_TYPE(register_no, group_no, posn_type, num_axes, status)
- - Obtener el registro de posición
ESCRIBIR('PR[', número_registro, '] de tipo ', tipo_posn, CR) SELECCIONAR
posn_tipo DE
CASO (2):
xyz = GET_POS_REG(registrar_no, estado) CASO (6):

xyzext = GET_POS_REG(register_no, status) CASO (9):

jpos = GET_JPOS_REG(register_no, status) ELSE:

A–249
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

ENDSELECT
ENDFOR
FIN get_reg_data

A.17.15 POSICIÓN Tipo de datos

Objetivo:Define una variable, tipo de retorno de función o parámetro de rutina como tipo de datos de POSICIÓN

Sintaxis:POSICIÓN <EN GRUPO[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 se puede asignar a otros tipos de posiciones.

• Los operadores de POSICIÓN válidos son el

— Operador de posición relativa (:)

— Operador aproximadamente igual (>=<)

• 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:

POSICIÓN Tipo de datos


POSICIÓN = ESTRUCTURA
NORMAL: VECTOR -- solo lectura
ORIENTAR: VECTOR -- solo lectura
ACERCARSE: VECTOR -- solo lectura
UBICACIÓN: VECTOR -- leer escribir
CONFIG_DATOS: CONFIGURAR -- leer escribir
ESTRUCTURA FINAL

A–250
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

Ver también:POS, funciones integradas UNPOS

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.17.16 Procedimiento integrado POST_ERR

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

Sintaxis:POST_ERR(código_error, parámetro, código_causa, gravedad)

Parámetros de entrada/salida:

[en] código_error :INTEGER

[en] parámetro :CADENA

[en] código_causa :INTEGER

[en] severidad :INTEGER

%MEDIO AMBIENTE Grupo :PBCORE

Detalles:

• código de errores el error que se publicará.

• parámetroserá incluido encódigo_de_errormensaje si se especifica %s en el texto del diccionario. Si no es


necesario, introduzca la cadena nula.

• código_causaes la razón del error. Se puede utilizar 0 si no se aplica ninguna causa.

• código de errorycódigo_causaestán en el siguiente formato:

ffccc (decimal)

dónde

frepresenta el código de instalación del error.

cccrepresenta el código de error dentro de la instalación especificada.

• gravedadse define de la siguiente manera:

0 : ADVERTENCIA, no hay cambios en la ejecución de la tarea

1: PAUSA, todas las tareas y detener todo el movimiento

A-251
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

2: ABORTAR, todas las tareas y cancelar

Ver también:Procedimiento incorporado ERR_DATA, la aplicación específica adecuadaManual de configuración y operaciones,"


Códigos de error"

Ejemplo:Referirse aSección B.13, "Uso de DISCTRL_ALPHA incorporado" (DCALP_EX.KL), para ver un ejemplo de
programa detallado.

A.17.17 Procedimiento integrado POST_ERR_L

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

Sintaxis:POST_ERR_L(código_error, parámetro, código_causa, gravedad)

Parámetros de entrada/salida:

[en] código_error :INTEGER

[en] parámetro :CADENA

[en] código_causa :INTEGER

[en] severidad :INTEGER

%MEDIO AMBIENTE Grupo :PBCORE

Detalles:

• código de errores el error que se publicará.

• parámetroserá incluido encódigo_de_errormensaje si se especifica %s en el texto del diccionario. Si no es


necesario, introduzca la cadena nula.

• código_causaes la razón del error. Se puede utilizar 0 si no se aplica ninguna causa.

• código de errorycódigo_causaestán en el siguiente formato:

ffccc (decimal)

dónde

frepresenta el código de instalación del error.

cccrepresenta el código de error dentro de la instalación especificada.

• gravedadse define de la siguiente manera:

A-252
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

ERSEV_NONE: Sin severidad

ERSEV_WARN: ADVERTENCIA, no hay cambios en la ejecución de la tarea

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

Ver también:POST_ERR Integrado

A.17.18 Procedimiento integrado POST_SEMA

Objetivo:Suma uno al valor del semáforo indicado

Sintaxis:POST_SEMA(n°_semáforo)

Parámetros de entrada/salida:

[en] semaphore_ no : ENTERO

%MEDIO AMBIENTE Grupo : MULTI

Detalles:

• El semáforo indicado porsemáforo_nose incrementa en uno.


• semáforo_nodebe estar en el rango de 1 al número de semáforos definidos en el controlador.

Ver también:PEND_SEMA, procedimientos integrados CLEAR_SEMA, función integrada SEMA_COUNT,


capitulo 16MULTITAREA,

A–253
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

Ejemplo:Ver ejemplos encapitulo 16MULTITAREA

A.17.19 Procedimiento integrado PRINT_FILE

Objetivo:Imprime el contenido de un archivo ASCII en el dispositivo predeterminado

Sintaxis:PRINT_FILE(file_spec, nowait_sw, estado)

Parámetros de entrada/salida:

[en] especificación_archivo :CADENA

[en] nowait_sw :BOOLEANO

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo : FDEV

Detalles:

• file_specespecifica el dispositivo, el nombre y el tipo de archivo que se va a imprimir.

• 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.

Notanoesperar_swno está disponible en esta versión y debe establecerse en FALSO.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

A.17.20 Directiva de traductor de %PRIORITY

Objetivo:Especifica la prioridad de la tarea

Sintaxis:%PRIORIDAD = n

Detalles:

• nortees la prioridad y se define de la siguiente manera:


1 a 89: inferior al movimiento, superior a la interfaz de usuario 90 a 99:
inferior a la interfaz de usuario

• Cuanto menor sea el valor, mayor será la prioridad de la tarea.

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.

Directiva de traductor de %PRIORITY


% PRIORIDAD = 49

A–255
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

A.17.21 Procedimiento integrado PROG_BACKUP

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.

Sintaxis:PROG_BACKUP (file_spec, prog_type, max_size, write_prot, status)

Parámetros de entrada/salida

[en] especificación_archivo :CADENA

[en] tipo_prog :INTEGER

[en] max_size: ENTERO

[en] write_prot: BOOLEAN

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo: BÁSICO

Detalles:

• file_specespecifica el dispositivo y el programa para guardar. Si se especifica un tipo de archivo, se ignora.

• tipo_progespecifica el tipo de programas que se van a guardar. Los tipos válidos son:

PBR_VRTYPE :VR - programas que contienen variables

PBR_MNTYPE: JB, PR, MR, TP

PBR_JBTYPE :JB - solo programas de trabajo

PBR_PRTYPE :PR - solo programas de proceso

PBR_MRTYPE :MR - solo programas macro

PBR_PCTYPE: VR: guarda archivos VR, no archivos de PC

PBR_ALLTYPE: todos los programas VR, JB, PR, MR, TP

PBR_NVRTYPE: todos los programas excepto VR

PBR_NMRTYPE :JB, PR, TP (todos los TP excepto macros)

• 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

2002, "ARCHIVO-002 El dispositivo está lleno".

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

max_size sea lo suficientemente grande para evitar este error.

• 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.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

• 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.

• Si se especifica un subdirectorio en el dispositivo de almacenamiento, se creará si aún no existe. Todos los


programas se guardarán en el subdirectorio.

• Si ya existe un archivo pero no se han producido cambios, el archivo no se sobrescribe.

• Si ya existe un archivo pero se ha cambiado el programa, se sobrescribirá y no se devolverá ningún


error.

• 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.

• Los incorporados PROG_BACKUP, PROG_CLEAR y PROG_RESTORE consideran todas las referencias a


programas excepto las macros. Esto incluye todos los programas a los que se hace referencia en las
siguientes declaraciones: CALL, RUN, ERROR_PROG, RESUME_PROG y MONITOR.

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

A.17.22 Procedimiento integrado PROG_CLEAR

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.

Sintaxis:PROG_CLEAR (nombre_prog, tipo_prog, estado)

Parámetros de entrada/salida:

[en] nombre_del_programa :STRING

[en] tipo_prog :INTEGER

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo: BÁSICO

Detalles:

• prog_nameespecifica el programa raíz que se va a borrar.


• tipo_progespecifica el tipo de programas que se van a borrar. Los tipos válidos son:

PBR_VRTYPE :VR - programas que contienen variables

PBR_MNTYPE: JB, PR, MR, TP

PBR_JBTYPE :JB - solo programas de trabajo

PBR_PRTYPE :PR - solo programas de proceso

PBR_MRTYPE :MR - solo programas macro

PBR_PCTYPE: VR: guarda archivos VR, no archivos de PC

PBR_ALLTYPE: todos los programas VR, JB, PR, MR, TP

PBR_NVRTYPE: todos los programas excepto VR

PBR_NMRTYPE :JB, PR, TP (todos los TP excepto macros)

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

• 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.

• Si un programa identificado para borrar es el programa seleccionado, no se borrará. En este caso, se


devuelve el error "El programa está en uso". Como contramedida, el usuario debe usar SELECT_TPE()
incorporado para seleccionar un programa que no está en el conjunto claro.

• Los incorporados PROG_BACKUP, PROG_CLEAR y PROG_RESTORE consideran todas las referencias a


programas excepto las macros. Esto incluye todos los programas a los que se hace referencia en las
siguientes declaraciones: CALL, RUN, ERROR_PROG, RESUME_PROG y MONITOR.

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

A.17.23 Procedimiento integrado PROG_RESTORE

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.

Sintaxis:PROG_RESTORE (especificación_archivo, estado)

Parámetros de entrada/salida:

[en] especificación_archivo :CADENA

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo: BÁSICO

Detalles:

• file_specespecifica el dispositivo de almacenamiento y el programa para restaurar. Si se especifica un tipo de archivo, se ignora.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

• 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.

• Si el programa ya existe, no se restaurará y no se devolverá ningún error.

• 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.

• Los programas ASCII (.LS) no se pueden restaurar.

• Si no hay suficiente memoria disponible, se devuelve un error y la restauración está incompleta.

• Los incorporados PROG_BACKUP, PROG_CLEAR y PROG_RESTORE consideran todas las referencias a


programas excepto las macros. Esto incluye todos los programas a los que se hace referencia en las
siguientes declaraciones: CALL, RUN, ERROR_PROG, RESUME_PROG y MONITOR.

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)

Ejemplo:El siguiente ejemplo restaura ANS00003.TP desde el subdirectorio GMX_211 en FR:


dispositivo. Restaurará solo los programas TP que ANS00003 llama recursivamente.

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

A.17.24 Procedimiento integrado PROG_LIST

Objetivo:Devuelve una lista de nombres de programas.

Sintaxis:prog_list(prog_name, prog_type, n_skip, format, ary_name, n_progs <,f_index>)

Parámetros de entrada/salida:

[en] nombre_del_programa :STRING

[en] tipo_prog :INTEGER

[en] n_skip :ENTERO

[en] formato: ENTERO

[fuera] ary_name :ARRAY de cadena

[fuera] n_progs :INTEGER

[fuera] estado: ENTERO

[entrada, salida] f_index :INTEGER

%MEDIO AMBIENTE Grupo :BYNAM

Detalles:

• prog_nameespecifica el nombre de los programas que se devolverán ennombre_ario.prog_namepuede utilizar


el carácter comodín (*) para indicar que todos los programas que coincidan con eltipo_progdebe ser devuelto
ennombre_ario.

• tipo_progespecifica el tipo de programas que se van a recuperar. Los tipos válidos son:

1 :VR - programas que contienen solo variables

2 :JB, PR, MR, TP3 :JB - solo programas de trabajo

4 :PR - solo programas de proceso

5 :MR - solo programas macro

6 :PC - Sólo programas KAREL

7: todos los programas VR, JB, PR, MR, TP, PC

8: todos los programas excepto VR

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:

1: solo el nombre del programa, sin espacios en blanco

2: 'nombre del programa tipo de programa'

longitud total = 15 caracteres

• prog_name=12 caracteres seguidos de un espacio

• tipo_prog=2 personajes
• nombre_arioes un ARRAY de STRING utilizado para almacenar los nombres de los programas.

• n_progses el número de variables almacenadas en elnombre_ario.

• estadodevolverá cero si tiene éxito.

• 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.

Ver también:Procedimiento integrado VAR_LIST

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.2, "Copiar variables de ruta" (CPY_PTH.KL)

Sección B.7, "Listado de archivos y programas y manipulación de cadenas" (LIST_EX.KL)

Sección B.14, "Aplicación de compensaciones a un programa de Teach Pendant copiado" (CPY_TP.KL)

A.17.25 PROGRAMA Declaración

Objetivo:Identifica el nombre del programa en un programa fuente KAREL

Sintaxis:PROGRAMA prog_name

dónde:

prog_name : un identificador KAREL válido

A–264
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

Detalles:

• Debe ser la primera declaración (aparte de los comentarios) en un programa.

• 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.

A.17.26 Acción de pulso

Objetivo:Impulsa un puerto de salida digital durante un número específico de milisegundos

Sintaxis:PULSE DOUT[port_no] FOR time_in_ms

dónde:

port_no : una variable INTEGER o literal

time_in_ms : un ENTERO

Detalles:

• port_nodebe ser un número de puerto de salida digital válido.

• tiempo_en_msespecifica la duración del pulso en milisegundos.

• Sitiempo_en_msduración es cero, no se producirá ningún pulso. De lo contrario, el período se redondea al


siguiente múltiplo de 8 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

• NOWAIT no está permitido en una acción PULSE.

• 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.

• Sitiempo_en_mses negativo o superior a 86.400.000 (24 horas), el programa se cancela con un


error.

Ver también:Capítulo 6MANEJADORES DE CONDICIONES,Capítulo 7OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS

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.17.27 Declaración de pulso

Objetivo:Impulsa un puerto de salida digital durante un número específico de milisegundos.

Sintaxis:PULSE DOUT[port_no] FOR time_in_ms <NOWAIT>

dónde:

port_no : una variable INTEGER o literal

time_in_ms : un ENTERO

Detalles:

• port_nodebe ser un número de puerto de salida digital válido.

• tiempo_en_msespecifica la duración del pulso en milisegundos.

• Sitiempo_en_msduración es cero, no se producirá ningún pulso. De lo contrario, el período se redondea al


siguiente múltiplo de 8 milisegundos.

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

• Si se especifica NOWAIT en una instrucción PULSE, la siguiente instrucción KAREL se ejecutará


simultáneamente con el pulso.

• Si NOWAIT no se especifica en una instrucción PULSE, la siguiente instrucción KAREL no se ejecutará


hasta que se complete el pulso.

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

A.17.28 Declaración de CONDICIÓN DE PURGA

Objetivo:Elimina la definición de un manejador de condiciones del sistema

Sintaxis:CONDICIÓN DE PURGA[cond_hand_no]

dónde:

cond_hand_no : una expresión INTEGER

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.

• La instrucción PURGE CONDITION depurará las condiciones habilitadas.

• Si se definió previamente un manejador de condiciones con el número especificado, se debe purgar


antes de reemplazarlo por uno nuevo.

Ver también:Declaración de CONDICIÓN DE HABILITACIÓNCapítulo 6MANEJADORES DE CONDICIONES,Apéndice E, "Diagramas de


sintaxis" para obtener más información sobre la sintaxis

Ejemplo:En el siguiente ejemplo, si la variable BOOLEANignorar_condes TRUE, el controlador de


condición global, CONDITION[1], se depurará mediante la sentencia PURGE; de lo contrario,
CONDITION[1] está habilitado.

Declaración de CONDICIÓN DE PURGA


SI ignorar_cond ENTONCES
CONDICIÓN DE PURGA[1]

A–267
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

MÁS
HABILITAR CONDICIÓN[1]
TERMINARA SI

A.17.29 Procedimiento integrado PURGE_DEV

Objetivo:Purga el dispositivo de archivo de memoria especificado liberando los bloques usados que ya no son necesarios

Sintaxis:PURGE_DEV (dispositivo, estado)

Parámetros de entrada/salida:

[en] dispositivo: STRING

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :FDEV

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.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error. Se


devuelve 85023 si no se produjeron errores, pero no se purgaron bloques.

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.17.30 Procedimiento integrado PUSH_KEY_RD

Objetivo:Suspender la entrada de teclas desde un dispositivo de teclado

A–268
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

Sintaxis:PUSH_KEY_RD(key_dev_name, key_mask, pop_index, estado)

Parámetros de entrada/salida:

[en] nombre_dispositivo_clave :STRING

[en] máscara_clave :INTEGER

[fuera] pop_index :INTEGER

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :PBCORE

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.

• nombre_dispositivo_clavedebe ser uno de los dispositivos de teclado ya definidos:

'TPKB': dispositivo de teclado colgante de enseñanza

'CRKB': dispositivo de teclado CRT

• 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.

kc_display: Teclas visualizables

kc_func_key: Teclas de función

kc_keypad :Teclado y teclas de edición

kc_enter_key: Teclas Intro y Retorno

kc_delete: Teclas Eliminar y Retroceso

kc_lr_arw: teclas de flecha izquierda y derecha

kc_ud_arw: teclas de flecha arriba y abajo

kc_other :Otras teclas (como Prev)

• pop_idse devuelve y debe usarse en una llamada a POP_KEY_RD para reactivar las solicitudes de lectura.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

A–269
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

Ver también:Procedimiento integrado POP_KEY_RD

Ejemplo:Consulte el procedimiento integrado READ_KB para ver un ejemplo.

A.18 - Q - DESCRIPCIÓN DEL IDIOMA KAREL

A.18.1 QUEUE_TYPE Tipo de datos

Objetivo:Define el tipo de datos para usar en las rutinas incorporadas QUEUE

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.

Ver también:APPEND_QUEUE, DELETE_QUEUE, INSERT_QUEUE, COPY_QUEUE,


GET_QUEUE, INIT_QUEUE, MODIFY_QUEUE Procedimientos incorporados

A.19 - R - KAREL IDIOMA DESCRIPCIÓN

A.19.1 LEER declaración

Objetivo:Lee datos de un dispositivo o archivo de E/S serie.

Sintaxis:LEER <var_archivo> (elemento_de_datos {,elemento_de_datos})

dónde:

file_var : una variable de ARCHIVO

data_item : un identificador de variable y sus especificadores de formato opcionales o la palabra reservada CR

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 de tipo ARRAY, se debe proporcionar un subíndice.

• 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.

• Use IO_STATUS (file_var) para determinar si la operación de lectura fue exitosa.

NotaRead CR nunca debe usarse en modo sin formato.

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

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.10, "Uso de pantallas dinámicas incorporadas" (DYN_DISP.KL)

Sección B.12, "Visualización de una lista desde un archivo de diccionario" (DCLST_EX.KL)

Sección B.13, "Uso de DISCTRL_ALPHA incorporado" (DCALP_EX.KL)

Sección B.14, "Aplicación de compensaciones a un programa de Teach Pendant copiado" (CPY_TP.KL)

A–271
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

A.19.2 Procedimiento integrado READ_DICT

Objetivo:Lee información de un diccionario.

Sintaxis:READ_DICT(dict_name, element_no, ksta, first_line, last_line, status)

Parámetros de entrada/salida:

[en] dict_name : STRING

[en] número_elemento: ENTERO

[fuera] ksta: MATRIZ DE CADENA

[en] primera línea: INTEGER

[fuera] última línea: INTEGER

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :PBCORE

Detalles:

• nombre_dictespecifica el nombre del diccionario desde el que leer.

• elemento_noespecifica el número de elemento a leer. Este número de elemento se designa con un $ en el


archivo de diccionario.

• 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".

• fiprimera_líneaindica el elemento de matriz deksta,en el que comenzar a almacenar la información.

• Última líneadevuelve un valor que indica el último elemento utilizado en elkstaformación.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, se produjo un error al leer el


elemento del archivo de diccionario.

• &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.

Ver también:ADD_DICT, WRITE_DICT, REMOVE_DICT Procedimientos incorporados. Consulte el ejemplo de


programa para el procedimiento integrado DISCTRL_LIST.Capítulo 10DICCIONARIOS Y FORMULARIOS

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

A.19.3 Procedimiento integrado READ_DICT_V

Objetivo:Lee información de un diccionario con variables formateadas.

Sintaxis:READ_DICT_V(dict_name, element_no, value_array, ksta, estado)

Parámetros de entrada/salida:

[en] dict_name : STRING

[en] número_elemento: ENTERO

[en] value_array : ARRAY DE CADENA

[fuera] ksta: MATRIZ DE CADENA

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :UIF

Detalles:

• nombre_dictespecifica el nombre del diccionario desde el que leer.

• 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'.

— [nombre_del_programa]especifica el nombre del programa que contiene la variable especificada. Si no se


especifica, se utiliza el programa actual que se está ejecutando.

— nombre_vardebe hacer referencia a una variable estática.

— nombre_varpuede contener números de nodo, nombres de campo y/o subíndices.

• 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".

• estadoexplica el estado de la operación intentada. Si no es igual a 0, se produjo un error al leer el


elemento del archivo de diccionario.

• &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.

Ver también:Procedimiento integrado WRITE_DICT_V,Capítulo 10DICCIONARIOS Y FORMULARIOS

A–273
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

Ejemplo:En el siguiente ejemplo,TPTASKEG.TXcontiene información de texto de diccionario que mostrará una


variable del sistema. Esta información es el primer elemento del diccionario. Los números de los elementos
comienzan en 0.util_progutiliza READ_DICT_V para leer el texto y mostrarlo en la consola portátil.

Procedimiento integrado READ_DICT_V


--------------------------------------------------
TPTASKEG.TX
--------------------------------------------------
- - $ "Número máximo de tareas = %d"
----------------------------------------------
PROGRAMA DE UTILIDAD:
--------------------------------------------------
PROGRAMA util_prog
%ENTORNO uif
VAR
ksta: ARRAY[1] OF STRING[40] estado:
ENTERO
value_array: ARRAY[1] OF STRING[30] BEGIN

value_array[1] = '[*sistema*].$scr.$maxnumtask' ADD_DICT('TPTASKEG',


'TASK', dp_default, dp_open, status) READ_DICT_V('TASK', 0, value_array, ksta,
status) WRITE( ksta[i], cr)

FINAL util_prog

A.19.4 Procedimiento integrado READ_KB

Objetivo:Lea desde un dispositivo de teclado y espere a que finalice.

Sintaxis:READ_KB(file_var, buffer, buffer_size, accept_mask, term_mask, time_out, init_data,


n_chars_got, term_char, estado)

Parámetros de entrada/salida:

[en] file_var: ARCHIVO

[fuera] búfer: STRING

[en] buffer_size : INTEGER

[en] accept_mask : ENTERO

[en] time_out : INTEGER

[en] term_mask : ENTERO

A–274
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

[en] init_data : STRING

[fuera] n_chars_got: ENTERO

[fuera] término _char : INTEGER

[fuera] estado de nosotros: INTEGER

%MEDIO AMBIENTE Grupo :PBCORE

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.

• [PRINCIPAL]device_stat debe establecerse en el ID de panel correcto antes de abrir el archivo de teclado


asociado con READ_KB. La identificación del panel para el iPendant puede ser 1, 2 o 3.

• La aplicación que se ejecuta en el Panel ID 1 se almacena en $TP_CURSCRN. El ID de panel 2 se


almacena en $UI_CURSCRN[1] o, en general, $UI_CURSCRN[device_stat-1]. La aplicación CRT usa
$CT_CURSCRN.

• 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.

kc_display: Teclas visualizables

A–275
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

kc_func_key: Teclas de función

kc_keypad: teclado y teclas de edición

kc_enter_key: Teclas Intro y Retorno

kc_delete: Teclas Eliminar y Retroceso

kc_lr_arw: teclas de flecha izquierda y derecha

kc_ud_arw: teclas de flecha arriba y abajo

kc_other :Otras teclas (como Prev)

• 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.

• Siaceptar_máscaraincluye caracteres visualizables, los siguientes caracteres, si se aceptan, tienen los


siguientes significados:

— 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 izquierda y derecha: coloque el cursor un carácter a la izquierda o a la derecha de su posición


actual, suponiendo que no esté ya en la primera o última posición.

— 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.

kc_display: Teclas visualizables

kc_func_key: Teclas de función

kc_keypad: teclado y teclas de edición

kc_enter_key: Teclas Intro y Retorno

kc_delete: Teclas Eliminar y Retroceso

kc_lr_arw: teclas de flecha izquierda y derecha

kc_ud_arw: teclas de flecha arriba y abajo

kc_other :Otras teclas (como Prev)


• se acabó el tiempoespecifica el tiempo, en milisegundos, después del cual la operación de entrada se cancelará automáticamente.
Un valor de -1 implica que no hay tiempo de espera.

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.

• n_chars_gotse establece en el número de caracteres en el búfer de entrada cuando finaliza la lectura.

• 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

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

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.

Procedimiento integrado READ_KB


PROGRAMA readkb
%NOLOCKGROUP
%AMBIENTE flbt
%AMBIENTE uif
%INCLUDE FR:eklevkmsk
VAR
var_archivo: ARCHIVO
clave: ENTERO

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

ESCRIBIR (CR, 'PUSH_KEY_RD el estado es ', estado) ENDIF

- - Abra un archivo en el teclado TP con atributos PASALL y FIELD


- - y NOECHO
SET_FILE_ATR(archivo_var, ATR_PASSALL)
SET_FILE_ATR(archivo_var, ATR_FIELD)
ABRIR ARCHIVO file_var ('RW', 'KB:TPKB')
- - Leer una sola tecla del teclado TP READ_KB(file_var, str, 1, 0,
kc_display+kc_func_key+kc_keypad+
kc_enter_key+kc_lr_arw+kc_ud_arw+kc_otro, 0, '',
n_chars_got, clave, estado)
SI (estado = 0) ENTONCES
ESCRIBIR (CR, 'clave es', clave, ', n_chars_got = ', n_chars_got] ELSE

ESCRIBIR (CR, 'El estado de READ_KB es ', estado)


ENDIF
CERCA ARCHIVO archivo_var
- - Reanudar cualquier lectura de teclado TP pendiente
POP_KEY_RD('TPKB', pop_index, estado)
SI (estado <> 0) ENTONCES
ESCRIBIR (CR, 'POP_KEY_RD el estado es ', estado) ENDIF

FIN leer KB

A.19.5 Tipo de datos REALES

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

• Las variables y expresiones REALES pueden tener valores en el rango de -3.4028236E+38 a


- 1,175494E-38, 0,0 y desde +1,175494E-38 hasta +3,4028236E+38, con aproximadamente siete dígitos
decimales de importancia. De lo contrario, el programa se cancelará con el error "Desbordamiento
real".

• 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.

• La notación científica está permitida y se rige por las siguientes reglas:

— El punto decimal se desplaza a la izquierda para que solo quede un dígito en la parte INTEGER.

— La parte fraccionaria va seguida de la letra E (mayúscula o minúscula) y ±un ENTERO. Esta


parte especifica la magnitud del número REAL. Por ejemplo, 123,5 se expresa como
1,235E2.
— Se puede omitir la parte fraccionaria y el punto decimal. Por ejemplo, 100.0 se puede
expresar como 1.000E2, como 1.E2 o 1E2.

• 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.

• Los operadores REAL válidos son (consulteTabla A–18):

— Operadores aritméticos (+, +, *, /)

— Operadores relacionales (>, >=, =, < >, <, <=)

Cuadro A–18. Operadores REAL válidos e inválidos

VÁLIDO INVÁLIDO RAZÓN

1.5 15 Se requiere el punto decimal (15 es un ENTERO no un REAL)

1. . Debe incluir un ENTERO o una parte fraccionaria

+ 2500.450 + 2,500.450 Comas no permitidas

1.25E-4 1.25E -4 Espacios no permitidos

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.5, "Uso de registros integrados" (REG_EX.KL)

Sección B.8, "Generación y movimiento a lo largo de una ruta hexagonal" (GEN_HEX.KL)

Sección B.10, "Uso de pantallas dinámicas incorporadas" (DYN_DISP.KL)

A–279
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

Sección B.11, "Manipulación de valores de variables mostradas dinámicamente" (CHG_DATA.KL)

Sección B.14, "Aplicación de compensaciones a un programa de Teach Pendant copiado" (CPY_TP.KL)

A.19.6 Condición relacional

Objetivo:Se utiliza para probar la relación entre dos operandos.

Sintaxis:variable <[subíndice]> expresión rel_op

dónde:

variable : una variable INTEGER o REAL estática o un elemento de matriz de puertos BOOLEAN

subíndice: una expresión INTEGER (solo se usa con matrices de puertos)

rel_op : un operador relacional

expresión: una variable estática, constante o cláusula EVAL

Detalles:

• Las condiciones relacionales son condiciones de estado, lo que significa que la relación se prueba durante cada exploración.

• Se pueden utilizar los siguientes operadores relacionales:

= :igual

<> :no igual

< :menos que

=< :menor o igual

> :mayor que

> = :mayor o igual


• Ambos operandos deben ser del mismo tipo de datos y solo pueden ser de tipo INTEGER, REAL o
BOOLEAN. Los valores INTEGER se pueden usar cuando se requieren valores REALES y se tratarán como
valores REALES.

• 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.

A.19.7 RELAJAR LA MANO Declaración

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.

Sintaxis:RELAX MANO hand_num

dónde:

hand_num : una expresión INTEGER

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.

RELAJAR LA MANO Declaración


PROGRAMA p_liberación
%NOPAUSE=TPENABLE
%AMBIENTE uif
EMPEZAR
pinza
RELAJAR LA MANO

SET_POS_REG(1, pstart, status) —— Poner posición en PR[1] move_to_pr1


—— Llamar al programa TP para moverse a PR[1]
Pinza MANO CERRADA
FIN p_release

A–281
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

A.19.8 Declaración de LIBERACIÓN

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".

• Se liberarán todos los controles de movimiento de todas las tareas de KAREL.

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.

A.19.9 Procedimiento integrado REMOVE_DICT

Objetivo:Elimina el diccionario especificado del idioma especificado o de todos los idiomas existentes.

Sintaxis:REMOVE_DICT(dict_name, lang_name, estado)

Parámetros de entrada/salida:

[en] dict_name : STRING

[en] nombre_idioma: STRING

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :UIF

Detalles:

• nombre_dictespecifica el nombre del diccionario a eliminar.

• nombre_idiomaespecifica de qué idioma se debe eliminar el diccionario. Se debe utilizar una


de las siguientes constantes predefinidas:

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

Sinombre_idiomaes”, se eliminará de todos los idiomas en los que exista.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, se produjo un error al eliminar el


archivo de diccionario.

Ver también:Procedimiento integrado ADD_DICT,Capítulo 10DICCIONARIOS Y FORMULARIOS

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.19.10 Procedimiento integrado RENAME_FILE

Objetivo:Cambia el nombre del archivo especificado.

Sintaxis:RENAME_FILE(archivo_antiguo, archivo_nuevo, nowait_sw, estado)

Parámetros de entrada/salida:

[en] archivo_antiguo: STRING

[en] nuevo_archivo: STRING

[en] nowait_sw : BOOLEANO

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :FDEV

Detalles:

• archivo_antiguoespecifica el dispositivo, el nombre y el tipo de archivo para cambiar el nombre.

• archivo nuevoespecifica el nombre y el tipo del archivo al que se va a cambiar el nombre.

• 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.

Notanoesperar_swno está disponible en esta versión y debe establecerse en FALSO.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ver también:COPY_FILE, DELETE_FILE Procedimientos incorporados

A.19.11 Procedimiento integrado RENAME_VAR

Objetivo:Cambia el nombre de una variable especificada en un programa especificado a un nuevo nombre de variable.

Sintaxis:RENAME_VAR(prog_nam, old_nam, new_nam, estado)

Parámetros de entrada/salida:

[en] prog_nam: CADENA

[en] old_nam : STRING

[en] new_nam : STRING

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :MEMO

Detalles:

• prog_names el nombre del programa que contiene la variable a renombrar.


• old_names el nombre actual de la variable.
• nombre_nuevoes el nuevo nombre de la variable.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ver también:Procedimientos incorporados CREATE_VAR, SET_VAR

A.19.12 Procedimiento integrado RENAME_VARS

Objetivo:Cambia el nombre de todas las variables en un programa especificado a un nuevo nombre de programa.

Sintaxis:RENAME_VARS(antiguo_nombre, nuevo_nombre, estado)

Parámetros de entrada/salida:

A–284
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

[en] old_nam : STRING

[en] new_nam : STRING

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :MEMO

Detalles:

• old_names el nombre actual del programa.


• nombre_nuevoes el nuevo nombre del programa.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ver también:Procedimientos integrados CREATE_VAR, RENAME_VARS

A.19.13 REPETIR... HASTA Declaración

Objetivo:Repite las declaraciones hasta que una expresión BOOLEAN se evalúe como VERDADERO.

Sintaxis:REPETIR

{ declaración }

HASTA boolean_exp

dónde:

declaración : una declaración ejecutable KAREL válida

boolean_exp : una expresión BOOLEANA

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.

• declaraciónsigue ejecutándose y elboolean_expse evalúa hasta que es igual a VERDADERO.

• declaraciónsiempre se ejecutará al menos una vez.

Precaución

Asegúrese de que su instrucción REPEAT contenga un indicador booleano que se


modifique por alguna condición y una instrucción UNTIL que finalice el bucle. Si no es
así, su programa podría repetirse infinitamente.

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

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.2, "Copiar variables de ruta" (CPY_PTH.KL)

Sección B.7, "Listado de archivos y programas y manipulación de cadenas" (LIST_EX.KL)

Sección B.9, "Uso de las funciones integradas de archivo y dispositivo" (FILE_EX.KL)

Sección B.11, "Manipulación de valores de variables mostradas dinámicamente" (CHG_DATA.KL)

Sección B.12, "Visualización de una lista desde un archivo de diccionario" (DCLST_EX.KL)

Sección B.14, "Aplicación de compensaciones a un programa de Teach Pendant copiado" (CPY_TP.KL)

A.19.14 Procedimiento integrado RESET

Objetivo:Restablece el controlador.

Sintaxis:REINICIO (exitoso)

Parámetros de entrada/salida:

[fuera] exitoso: BOOLEAN

%MEDIO AMBIENTE Grupo :MOTN

Detalles:

• exitososerá VERDADERO incluso si existen condiciones que impiden restablecer el controlador.

• 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

A.19.15 REANUDAR Acción

Objetivo:Reinicia el último movimiento detenido emitido por la tarea.

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 no hay conjuntos de movimiento detenido, no se producirá ningún movimiento desde la RESUMEN.

• 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.

• El movimiento no se puede reanudar para una tarea diferente.

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.19.16 Declaración de RESUMEN

Objetivo:Reinicia el último movimiento detenido emitido por la tarea.

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 no hay conjuntos de movimiento detenido, no se producirá ningún movimiento desde la RESUMEN.

• 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.

• El movimiento no se puede reanudar para una tarea diferente.

Ver también:Apéndice E, "Diagramas de sintaxis" para obtener más información sobre la sintaxis

Ejemplo:En el siguiente ejemplo, el movimiento se detiene siestruendo[1]Está encendido. Se reanuda después de


presionar F1.

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

ESCRIBE(' Movimiento detenido')


WRITE(CR, 'Se reanudará el movimiento y el programa') WRITE(CR,
'cuando se presiona F1 de la consola de programación') WAIT FOR
TPIN[129]
REANUDAR

TERMINARA SI

A.19.17 Declaración de RETORNO

Objetivo:Devuelve el control de una rutina/programa a la rutina/programa que realiza la llamada y, opcionalmente, devuelve un
resultado.

Sintaxis:RETORNO < (valor) >

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.

• Si un programa principal ejecuta una instrucción RETURN, la ejecución finaliza y no se puede


reanudar. Todas las mociones en curso se completarán normalmente.

• Si no se especifica RETURN, la instrucción END sirve como retorno.

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

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.7, "Listado de archivos y programas y manipulación de cadenas" (LIST_EX.KL)

Sección B.14, "Aplicación de compensaciones a un programa de Teach Pendant copiado" (CPY_TP.KL)

A.19.18 RGET_PORTCMT RUTINA integrada

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.

Sintaxis:RGET_PORTCMT (host_port, port_type, port_no, comment_str, estado)

Parámetros de entrada/salida:

[en] puerto_host: STRING

[en] tipo_puerto: INTEGER

[en] port_no: ENTERO

[fuera] comment_str: INTEGER

[fuera] estado: INTEGER

%MEDIO AMBIENTE Grupo: RPCC

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.

• port_noespecifica el número de puerto cuyo comentario se devuelve.

• 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:

El siguiente programa recibe un comentario de DO[10] del host RC1

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

RGET_PORTCMT('RC1', io_dout, 10, comentario, estado) END


RGTPCMT

A.19.19 RGET_PORTSIM RUTINA integrada

Objetivo:En V7.70 y posteriores, para obtener el estado de simulación del puerto desde el control remoto.

Sintaxis:RGET_PORTSIM (host_port, port_type, port_no, simulado, estado)

Parámetros de entrada/salida

[en]puerto_host: STRING

[en]port_type: INTEGER

[en]port_no: INTEGER

[fuera] simulado: BOOLEAN

[fuera] estado: INTEGER

%MEDIO AMBIENTE Grupo: RPCC

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.

• port_noespecifica el número de puerto cuyo estado de simulación se devuelve.

• simuladodevuelve VERDADERO si el puerto está siendo simulado, FALSO de lo contrario.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ejemplo:

El siguiente programa obtiene el estado de simulación de DI[8] del host RC1.


PROGRAMA RGTPSIM

A–290
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

%COMENTARIO = 'RC1 DIN[8] SIM'


%NOLOCKGROUP
%AMBIENTE RPCC
%incluir kliotipos
VAR
estado : ENTERO
sim_stat: BOOLEANO
EMPEZAR

RGET_PORTSIM('RC1', io_din, 8, sim_stat, estado) FIN RGTPSIM

A.19.20 RGET_PORTVAL RUTINA integrada

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.

Sintaxis:RGET_PORTVAL (host_port, port_type, port_no, port_value, status)

Parámetros de entrada/salida:

[en]puerto_host: STRING

[en]port_type: INTEGER

[en]port_no:INTEGER

[out]port_value:INTEGER

[fuera] estado: INTEGER

%MEDIO AMBIENTE Grupo: RPCC

Detalles:

• Puerto hostes una dirección IP o nombre de host de un controlador de robot remoto.

• tipo_puertoespecifica el código de un puerto cuyo valor se devuelve. Los códigos se definen en


kliotyps.kl.

• port_noespecifica el número de puerto cuyo valor se devuelve.

• 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.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ejemplo:

A–291
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

El siguiente programa obtiene el valor de RO [3] del host RC1.


PROGRAMA RGTPVAL
%COMENTARIO='OBTENER RC1 RO[3]'
%NOLOCKGROUP
%AMBIENTE RPCC
%incluir kliotipos
VAR
estado : ENTERO
port_val: ENTERO
EMPEZAR

RGET_PORTVAL('RC1', io_rdo, 3, port_val, estado) FIN RGTPVAL

A.19.21 RGET_PREGCMT RUTINA integrada

Objetivo:En V7.70 y posteriores, para recuperar un comentario de un registro de posición de un host remoto.

Sintaxis:RGET_PREGCMT (host_port, register_no, comment_str, estado)

Parámetros de entrada/salida:

[en]puerto_host: STRING

[en]register_no: INTEGER

[out]comment_str : STRING

[fuera] estado: INTEGER

%MEDIO AMBIENTE Grupo: RPCC

Detalles:

• Puerto hostes una dirección IP o nombre de host de un controlador de robot remoto.

• 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.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ejemplo:

El siguiente programa recibe un comentario de PR [5] del host RC1.


PROGRAMA RGTPRCMT
%COMENTARIO='RC1 PR[5] CMT'

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

A.19.22 RGET_REG RUTINA incorporada

Objetivo:En V7.70 y posteriores, para obtener un valor INTEGER o REAL del registro especificado del host
remoto.

Sintaxis:RGET_REG (host_port, register_no, real_flag, int_value, real_value, status)

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

[fuera] estado: INTEGER

%MEDIO AMBIENTE Grupo: RPCC

Detalles:

• Puerto hostes la dirección IP o el nombre de host del controlador de robot remoto.

• registro_noespecifica de qué registro de posición recuperar el comentario. El comentario del registro de


posición dado se devuelve en el parámetrocomentario_str.

• 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.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ejemplo:

El siguiente programa obtiene el valor de R [2] del host RC1.

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

RGET_REG('RC1', 2, es_real, int_val, real_val, estado) FIN RGTNREG

A.19.23 RGET_REG_CMT RUTINA integrada

Objetivo:En V7.70 y posteriores, para obtener comentarios del registro especificado de un host remoto.

Sintaxis:RGET_REG_CMT (host_port, register_no, comment_str, estado)

Parámetros de entrada/salida:

[en] puerto_host: STRING

[en] número_de_registro: ENTERO

[fuera] comment_str: STRING

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo: RPCC

Detalles:

• Puerto hostes una dirección IP o nombre de host de un controlador de robot remoto.

• registro_noespecifica de qué registro recuperar el comentario. El comentario del registro dado se


devuelve encomentario_str.

• comentario_strdebe declararse como una CADENA con una longitud de al menos 16 caracteres.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ejemplo:

El siguiente programa recibe un comentario de R [2] del host RC1.


PROGRAMA RGTNRCMT
%COMENTARIO='OBTENER RC1 R[2] CMT'

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

A.19.24 RGET_SREGCMT RUTINA integrada

Objetivo:En V7.70 y posteriores, para obtener comentarios del registro de cadena especificado de un host remoto.

Sintaxis:RGET_SREGCMT (host_port, register_no, comment_str, estado)

Parámetros de entrada/salida [en]host_port: STRING

[en]register_no: INTEGER

[fuera]comment_str: STRING

[fuera] estado: INTEGER

%MEDIO AMBIENTE Grupo: RPCC

Detalles:

• Puerto hostes una dirección IP o nombre de host de un controlador de robot remoto.

• registro_noespecifica desde qué registro de cadena recuperar el comentario.

• comentario_strcontiene el comentario del registro de cadena especificado.

• comentario_strdebe declararse como una CADENA con una longitud de al menos 16 caracteres.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ejemplo:

El siguiente programa recibe un comentario de SR [20] del host RC1.


PROGRAMA RGTSRCMT
%NOLOCKGROUP
%COMENTARIO = 'OBTENER CMT
SR[20]' %ENTORNORPCC
VAR
estado : ENTERO
comentario : CADENA[16]

A–295
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

EMPEZAR

RGET_SREGCMT('RC1', 20, comentario, estado) END


RGTSRCMT

A.19.25 RGET_STR_REG RUTINA incorporada

Objetivo:En V7.70 y posteriores, para obtener un valor del registro de cadena especificado de un host remoto.

Sintaxis:RGET_STR_REG (host_port, registro_no, valor, estado)

Parámetros de entrada/salida

[en] puerto_host: STRING

[en] número_de_registro: ENTERO

[fuera] valor: STRING[254]

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo: RPCC

Detalles:

• Puerto hostes una dirección IP o nombre de host de un controlador de robot remoto.

• registro_noespecifica el registro de cadena que se va a obtener.

• valorcontiene el valor del registro de cadena especificado.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ejemplo:

El siguiente programa obtiene el valor de SR [10] o host RC1.


PROGRAMA RGTSREG
%NOLOCKGROUP
%AMBIENTE RPCC
%COMENTARIO = 'OBTENER SR[10]'
VAR
estado : ENTERO
valor_sreg : CADENA[254]
EMPEZAR

RGET_STR_REG('RC1', 10, sreg_val, estado) FIN RGTSREG

A–296
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

A.19.26 RMCN_ALERT RUTINA integrada

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).

Sintaxis:RMCN_ALERT(dirección de alerta, asunto, mensaje, URL de alerta, estado)

Parámetros de entrada/salida

[en] alertaddr: STRING

[en] asunto: STRING

[en] mensaje: STRING

[en] alerta: STRING

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo: PBCORE

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

de correos electrónicos de iRConnect.

• temaes el tema de la alerta. Si ”, entonces se usa 'iRConnect Alert'.


• mensajees un mensaje corto para mostrar en el mensaje de texto. Si ”, entonces solo se muestra el enlace.

• 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

- - Enviar alerta a iRConnect con parámetros predeterminados


RMCN_ALERT('', '', '', '', estado)
SI estado <> 0 ENTONCES
POST_ERR(estado, '', 0, ERSEV_WARN) ENDIF

- - Enviar alerta personalizada a iRConnect


alertaddr = ' 2483777000@txt.att.net '
tema = 'MT_PIK05'
mensaje = 'Cajones no bloqueados en posición' alerturl = 'iRConnect:
irconnect://alertas' RMCN_ALERT(alertaddr, asunto, mensaje, alerta, estado)
IF estado <> 0 THEN

POST_ERR(estado, '', 0, ERSEV_WARN) ENDIF

FIN RCMTEST

A.19.27 RMCN_SEND RUTINA integrada

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).

Sintaxis:RMCN_SEND(xml_file, archivos adjuntos, prioridad, estado)

Parámetros de entrada/salida

[en] archivo_xml: CADENA

[en] archivos adjuntos: ARRAY OF STRING

[en] prioridad: ENTERO

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo: PBCORE

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.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

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'

- - Enviar datos a iRConnect RMCN_SEND(xml_file, adjuntos,


prioridad, estado) SI estado <> 0 ENTONCES

POST_ERR(estado, '', 0, ERSEV_WARN) ENDIF

- - Enviar datos a iRConnect sin archivos adjuntos noattach[1]


= ''
RMCN_SEND('td:pick2.xml', noattach, 0, estado) SI estado <> 0
ENTONCES
POST_ERR(estado, '', 0, ERSEV_WARN) ENDIF

FIN RCMTEST

A.19.28 RNUMREG_RECV RUTINA integrada

Objetivo:En V7.70 y posteriores, para transferir el registro de un servidor al registro de un cliente.

Sintaxis:RNUMREG_RECV (host_port, src_idx, dest_idx, opción, estado)

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

[en] destino_idx : ENTERO

[en] opción: ENTERO

[en] estado : ENTERO

%MEDIO AMBIENTE Grupo: RPCC

Detalles:

• Puerto hostes una dirección IP o nombre de host de un controlador de robot remoto.

• src_idxespecifica un índice de un registro de servidor.

• destino_idxespecifica un índice de registro de cliente. Los datos adquiridos se almacenan en este registro.

• opciónespecifica la función de este incorporado.

Tabla A–19. Valores paramétricos

Valor Descripción

0 Se recibe valor y comentario.

1 Se recibe valor.

2 Se recibe comentario.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ejemplo:

El siguiente programa envía el valor de R [11] a R [2] del host RC1.


PROGRAMA RNREGRCV
%COMENTARIO='RC1 R3->12'
%NOLOCKGROUP
%AMBIENTE RPCC
VAR
ESTADO: ENTERO
EMPEZAR

RNUMREG_RECV('RC1', 3, 12, 0, ESTADO) FIN


RNREGRCV

A–300
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

A.19.29 RNUMREG_SEND RUTINA integrada

Objetivo:En V7.70 y posteriores, para transferir el registro de un cliente al registro de un servidor.

Sintaxis:RNUMREG_SEND (host_port, dest_idx, src_idx, opción, estado)

Parámetros de entrada/salida

[en]puerto_host: STRING

[en] destino_idx : ENTERO

[en]src_idx : ENTERO

[en] opción: ENTERO

[en] estado : ENTERO

%MEDIO AMBIENTE Grupo: RPCC

Detalles:

• Puerto hostes una dirección IP o nombre de host de un controlador de robot remoto.

• destino_idxespecifica un índice de registro del servidor.

• src_idxespecifica un índice de registro de cliente. Los datos de este registro se envían al servidor del cliente.

• opciónespecifica la función de este incorporado.

Tabla A–20. Valores paramétricos

Valor Descripción

0 Se establece el valor y el comentario..

1 Se establece el valor.

2 El comentario está configurado.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ejemplo:

El siguiente programa envía el valor de R [11] a R [2] del host RC1.


PROGRAMA REGISTRO
%COMENTARIO='R11->RC1 R1'
%NOLOCKGROUP
%AMBIENTE RPCC
VAR
ESTADO: ENTERO

A–301
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

EMPEZAR

RNUMREG_SEND('RC1', 2, 11, 1, ESTADO) FIN


RNREGSND

A.19.30 Función incorporada REDONDA

Objetivo:Devuelve el valor INTEGER más cercano al argumento REAL especificado.

Sintaxis:REDONDO(x)

Tipo de retorno de función: ENTERO

Parámetros de entrada/salida:

[en] x :REAL

%ENTORNO Grupo :SISTEMA

Detalles:

• El valor devuelto es el valor INTEGER más cercano al valor REAL x, como lo demuestran las
siguientes reglas:

— Si x >= 0, sea n un ENTERO positivo tal que n <= x <= n + 1


— Si x >= n + 0,5, se devuelve n + 1; de lo contrario, se devuelve n.

— Si x <= 0, sea n un ENTERO negativo tal que n >= x >= n - 1


— Si x <= n - 0,5, se devuelve n - 1; de lo contrario, se devuelve n.

• Xdebe estar en el rango de -2147483648 a +2147483646. De lo contrario, el programa se cancelará


con un error.

Ver también:Función incorporada TRUNC

Ejemplo:Referirse aSección B.7, "Listado de archivos y programas y manipulación de


cadenas" (LIST_.EX.KL), para ver un ejemplo de programa detallado.

A.19.31 Declaración de RUTINA

Objetivo:Especifica un nombre de rutina, con parámetros y tipos, y un tipo de datos de valor devuelto para rutinas
de función.

Sintaxis:RUTINA nombre < lista_param > <: tipo_retorno >

A-302
Traducido del inglés al español - www.onlinedoctranslator.com

MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

dónde:

nombre: un identificador KAREL válido

param_list : descrito a continuación

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:

• nombreespecifica el nombre de la rutina.

• param_listes de la forma (nombre_grupo { ; nombre_grupo} )

— nombre_grupoes de la formaparam_name : param_type


— param_namees un parámetro que se puede utilizar dentro del cuerpo de la rutina como una variable de tipo
de datostipo_parámetro.

— Si unparam_typeotipo_retornoes un ARRAY, el tamaño está excluido. Si elparam_typees una


CADENA, se excluye la longitud de la cadena.

• 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.

• La instrucción ROUTINE debe ir seguida de un cuerpo de rutina o una cláusula FROM.

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.2, "Copiar variables de ruta" (CPY_PTH.KL)

Sección B.4, "Rutinas estándar" (ROUT_EX.KL)

Sección B.6, "Programa de manejadores de condiciones y variables de ruta" (PTH_MOVE.KL)

Sección B.7, "Listado de archivos y programas y manipulación de cadenas" (LIST_EX.KL)

Sección B.8, "Generación y movimiento a lo largo de una ruta hexagonal" (GEN_HEX.KL)

Sección B.9, "Uso de las funciones integradas de archivo y dispositivo" (FILE_EX.KL)

Sección B.10, "Uso de pantallas dinámicas incorporadas" (DYN_DISP.KL)

Sección B.12, "Visualización de una lista desde un archivo de diccionario" (DCLST_EX.KL)

A–303
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

Sección B.14, "Aplicación de compensaciones a un programa de Teach Pendant copiado" (CPY_TP.KL)

Sección B.1, "Configuración de puertos de salida digital para monitoreo" (DOUT_EX.KL)

A.19.32 RPREG_RECV RUTINA integrada

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.

Sintaxis:RPOSREG_RECV (host_port, src_idx, src_grp, dest_idx, dest_grp, opción, estado)

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

[en] opción: ENTERO

[en] estado: ENTERO

%MEDIO AMBIENTE Grupo: RPCC

Detalles:

• Puerto hostes la dirección IP o el nombre de host del controlador de robot remoto.

• src_idxespecifica el índice de registro de posición o servidor.

• 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.

• opciónexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

A-304
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

Cuadro A–21. Valores paramétricos

Valor Descripción

0 Se obtienen datos de posición y comentarios.

1 Se obtienen los datos de posición.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ejemplo:

El siguiente programa de ejemplo realiza la siguiente transferencia. El comentario también se transfiere.

De: Grupo 1 de PR [5] del host RC1

A: Grupo 2 de PR [6]
PROGRAMA RPREGRCV
%COMENTARIO='RC1 PR5G1->PR6G2'
%NOLOCKGROUP
%AMBIENTE RPCC
VAR
ESTADO: ENTERO
EMPEZAR

RPOSREG_RECV('RC1', 5, 1, 6, 2, 0, ESTADO) FIN


RPREGRCV

A.19.33 RPREG_SEND RUTINA integrada

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.

Sintaxis:RPOSREG_SEND (host_port, dest_idx, dest_grp, src_idx, src_grp, opción, estado)

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

[en] opción: ENTERO

[en] estado: ENTERO

%MEDIO AMBIENTE Grupo: RPCC

Detalles:

• Puerto hostes la dirección IP o el nombre de host del controlador de robot remoto.

• destino_idxespecifica el índice del registro de posición del servidor.

• 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.

• src_grpespecifica el número de grupo del cliente.

• opciónespecifica la función de este incorporado.

Tabla A–22. Valores paramétricos

VALOR DESCRIPCIÓN

0 Se establecen los datos de posición y el comentario.

1 Se establecen los datos de posición.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ejemplo:

El siguiente programa de ejemplo realiza la siguiente transferencia. El comentario también se transfiere.

De: Grupo 2 de PR [7] de cliente

A: Grupo1 de PR [8] del host RC1


REGISTRO DEL PROGRAMA
%COMENTARIO='PR7G2->RC1 PR8G1'
%NOLOCKGROUP
%AMBIENTE RPCC
VAR
ESTADO: ENTERO
EMPEZAR

RPOSREG_SEND('RC1', 8, 1, 7, 2, 0, ESTADO) FIN


RPREGSND

A-306
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

A.19.34 RSET_INT_REG RUTINA integrada

Objetivo:En V7.70 y posteriores, para almacenar un valor INTEGER en el registro especificado del host remoto.

Sintaxis:RSET_INT_REG (host_port, registro_no, int_value, estado)

Parámetros de entrada/salida

[en]puerto_host: STRING

[en]register_no: BOOLEAN

[en]int_value: ENTERO

[fuera] estado: INTEGER

%MEDIO AMBIENTE Grupo: RPCC

Detalles:

• Puerto hostes la dirección IP o el nombre de host del controlador de robot remoto.

• registro_noespecifica el registro en el que se almacenará "int_value".

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ejemplo:

El siguiente programa establece 100 en R[20] del host RC1.


PROGRAMA RSTNRI
%COMENTARIO = 'RC R[20]=100'
%NOLOCKGROUP
%AMBIENTE RPCC
VAR
estado : ENTERO
EMPEZAR

RSET_INT_REG('RC1', 20, 100, estado) FIN RSTNRI

A.19.35 RSET_PORTCMT RUTINA incorporada

Objetivo:En V7.70 y posteriores, para permitir que un programa KAREL establezca un comentario del puerto lógico especificado del
host remoto.

Sintaxis:RSET_PORTCMT (host_port, port_type, port_no, comment_str, status)

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

[fuera] estado: INTEGER

%MEDIO AMBIENTE Grupo: RPCC

Detalles:

• Puerto hostes la dirección IP o el nombre de host del controlador de robot remoto.

• tipo_puertoespecifica el código de puerto cuyo comentario se está configurando. Los códigos se definen en kliotyps.kl.

• port_noespecifica el número de puerto cuyo comentario se está configurando.

• comentario_stres una cadena cuyo valor es el comentario del puerto especificado. Este no debe tener
más de 16 caracteres.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ver también:

Ejemplo:

El siguiente programa establece el comentario en DO [10] del host RC1.


PROGRAMA RSTPCMT
%COMENTARIO ='RC1 DO[10] cmt'
%NOLOCKGROUP
%AMBIENTE RPCC
%INCLUIR kliotipos
VAR
estado : ENTERO
EMPEZAR

RSET_PORTCMT('RC1', io_dout, 10, 'RC1 DOUT[10]', estado) FIN RSTPCMT

A.19.36 RSET_PORTSIM RUTINA incorporada

Objetivo:En V7.70 y posteriores, para configurar el puerto simulado en el host remoto.

A–308
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

Sintaxis:RSET_PORTSIM (puerto_host, tipo_puerto, número_puerto, valor, estado)

Parámetros de entrada/salida

[en]puerto_host: STRING

[en]port_type: INTEGER

[en]port_no: INTEGER

[en] valor: ENTERO

[fuera] estado: INTEGER

%MEDIO AMBIENTE Grupo: RPCC

Detalles:

• Puerto hostes la dirección IP o el nombre de host del controlador de robot remoto.

• tipo_puertoespecifica el código para el tipo de puerto a simular. Los códigos se definen en kliotyps.kl

• port_noespecifica el número de puerto que se va a simular.

• valorespecifica el valor inicial a establecer.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

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

A.19.37 RSET_PORTVAL RUTINA incorporada

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

Sintaxis:RSET_PORTVAL (host_port, port_type, port_no, port_value, status)

Parámetros de entrada/salida

[en]puerto_host: STRING

[en]port_type: INTEGER

[en]port_no: INTEGER

[en]port_value: INTEGER

[fuera] estado: INTEGER

%MEDIO AMBIENTE Grupo: RPCC

Detalles:

• Puerto hostes la dirección IP o el nombre de host del controlador de robot remoto.

• tipo_puertoespecifica el código de puerto cuyo valor se está configurando. Los códigos se definen en kliotyps.kl

• port_noespecifica el número de puerto cuyo valor se establece.

• 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. -

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ejemplo:

El siguiente programa establece DO [3] del host RC1 en ON.


PROGRAMA RSTPVAL
%COMENTARIO ='RC1 HACER[3]=ON'
%NOLOCKGROUP
%AMBIENTE RPCC
%INCLUIR kliotipos
VAR
estado : ENTERO
EMPEZAR

RSET_PORTVAL('RC1', io_dout, 3, 1, estado) FIN RSTPVAL

A.19.38 RSET_PREGCMT RUTINA incorporada

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

Sintaxis:RSET_PREGCMT (host_port, register_no, comment_str, estado)

Parámetros de entrada/salida

[en]puerto_host: STRING

[en]register_no: INTEGER

[en]comment_str : STRING

[fuera] estado: INTEGER

%MEDIO AMBIENTE Grupo: RPCC

Detalles:

• Puerto hostes la dirección IP o el nombre de host del controlador de robot remoto.

• registro_noespecifica el registro de posición del controlador de robot remoto.

• comentario_stres un comentario que se establecerá. Si "comment_str" supera los 16 caracteres, se trunca.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

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

A.19.39 RSET_REALREG RUTINA integrada

Objetivo:En V7.70 y posteriores, para almacenar un valor REAL en el registro especificado del host remoto.

Sintaxis:RSET_REALREG (host_port, register_no, real_value, status)

Parámetros de entrada/salida

[en] puerto_host: STRING

A–311
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

[en] número_de_registro: BOOLEAN

[en] valor_real: REAL

[fuera] estado: ENTERO

% MEDIO AMBIENTE RPCC

Detalles:

• Puerto hostes la dirección IP o el nombre de host del controlador de robot remoto.

• registro_noespecifica el registro en el quevalor realserá almacenado.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ejemplo:

El siguiente programa establece -12.3 a R [20] de RC1.


PROGRAMA RSTNRR
%COMENTARIO = 'RC1 R[20]=-12.3'
%NOLOCKGROUP
%AMBIENTE RPCC
VAR
estado : ENTERO
EMPEZAR

RSET_REALREG('RC1', 20, -12.3, estado) FIN RSTNRR

A.19.40 RSET_REG_CMT RUTINA incorporada

Objetivo:En V7.70 y posteriores, para configurar el comentario del registro numérico del host remoto.

Sintaxis:RSET_REG_CMT (host_port, register_no, comment_str, estado)

Parámetros de entrada/salida

[en] puerto_host: STRING

[en] número_de_registro: ENTERO

[en] comment_str: CADENA

[fuera] estado: ENTERO

% MEDIO AMBIENTE RPCC

A–312
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

Detalles:

• Puerto hostes la dirección IP o el nombre de host del controlador de robot remoto.

• registro_noespecifica en qué registro establecer los comentarios.

• 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.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

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

A.19.41 RSET_SREGCMT RUTINA incorporada

Objetivo:En V7.70 y posteriores, establece el comentario para el registro de cadena especificado del controlador de robot
remoto.

Sintaxis:RSET_SREGCMT (host_port, register_no, comment_str, estado)

Parámetros de entrada/salida

[en]puerto_host: STRING

[en]register_no: INTEGER

[en]comment_str : STRING

[fuera] estado: INTEGER

%MEDIO AMBIENTE Grupo:RPCC

Detalles:

• Puerto hostes la dirección IP o el nombre de host del controlador de robot remoto.

A–313
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

• registro_noespecifica el registro de cadena para establecer

• comentario_strcontiene el comentario para establecer en el registro de cadena especificado. Si


comment_str excede más de 16 caracteres, el incorporado truncará la cadena

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

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

A.19.42 RSET_STR_REG RUTINA integrada

Objetivo:En V7.70 y posteriores, para establecer el valor especificado para el registro de cadena especificado del host
remoto.

Sintaxis:RSET_STR_REG (host_port, registro_no, valor, estado)

Parámetros de entrada/salida

[en] puerto_host: STRING

[en] número_de_registro: ENTERO

[fuera] valor: STRING[254]

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo: RPCC

Detalles:

• Puerto hostes la dirección IP o el nombre de host del controlador de robot remoto.

• registro_noespecifica el registro de cadena para establecer

• valorcontiene el valor para establecer en el registro de cadena especificado.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ejemplo:

A–314
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

El siguiente programa establece SR [4] del host RC1.


PROGRAMA RSTSREG
%COMENTARIO ='Establecer RC1 SR[4]'
%NOLOCKGROUP
%AMBIENTE rpcc
CONSTITUCIÓN

ERR_ÉXITO =0
VAR
estado : ENTERO
EMPEZAR

RSET_STR_REG('RC1', 4, 'RC1 de SR[4] fue configurado por host remoto', estado) END
RSTSREG

A.19.43 Procedimiento integrado RUN_TASK

Objetivo:Ejecuta el programa especificado como una tarea secundaria.

Sintaxis:EJECUTAR_TAREA (nombre_tarea, número_línea, pausa_en_sft, tp_motion, máscara_bloqueo, estado)

Parámetros de entrada/salida:

[en] nombre_tarea: STRING

[en] número_de_línea: ENTERO

[en] pause_on_sft : BOOLEANO

[en] tp_motion : BOOLEANO

[en] lock_mask : ENTERO

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :MULTI

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.

• Si la tarea ya existe y está en pausa, se continuará. No se crea una nueva tarea.


• número de líneaespecifica la línea desde la que comienza la ejecución. Use 0 para comenzar desde el principio del
programa. Esto solo es válido para los programas de Teach Pendant.

• 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.

Cuadro A–23. Configuración de máscara de grupo

GRUPO DECIMAL UN POCO

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".

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ver también:CONT_TASK, PAUSE_TASK, ABORT_TASK Procedimientos integrados,capitulo


16 MULTITAREA

Ejemplo:Referirse aSección B.10, "Uso de pantallas dinámicas incorporadas" (DYN_DISP.KL), para ver un
ejemplo de programa detallado.

A.20 - S - KAREL IDIOMA DESCRIPCIÓN

A.20.1 Procedimiento integrado SAVE

Objetivo:Guarda el programa o las variables en el archivo especificado

Sintaxis:GUARDAR (prog_nam, file_spec, estado)

Parámetros de entrada/salida:

[en] prog_nam :CADENA

[en] especificación_archivo :CADENA

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :MEMO

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.

Son válidos los siguientes tipos:

. TP : programa Teach Pendant

. VR : Variables KAREL

. SV : Variables del sistema KAREL

. IO: datos de configuración de E/S

• Sifile_specya existe en el dispositivo especificado, se devuelve un error y no se guarda.


• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ver también:Procedimientos integrados CLEAR, LOAD

Ejemplo:Referirse aSección B.3, "Guardar datos en el dispositivo predeterminado" (SAVE_VRS.KL), para obtener un
ejemplo de programa detallado.

A.20.2 Procedimiento integrado SAVE_DRAM

Objetivo:Guarda el contenido variable de RAM en FlashROM.

Sintaxis:SAVE_DRAM (prog_nam, estado)

Parámetros de entrada/salida:

[en] prog_nam: CADENA

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo: MEMO

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

• estado explica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

A.20.3 SELECCIONAR ... ENDSELECT Sentencia

Objetivo:Permite la ejecución de una de una serie de secuencias de instrucciones, según el valor de


una expresión INTEGER.

Sintaxis:SELECCIONE case_val OF

CASO (valor {, valor}):

{declaración}

{ CASO(valor{, valor}):

{declaración} }

<OTRO:

{ declaración }>

ENDSELECT

dónde:

case_val : una expresión INTEGER

valor: una constante INTEGER o literal

declaración : una declaración ejecutable KAREL válida

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.

• Se pueden usar hasta 1000 cláusulas CASE en una instrucción SELECT.

• Si el mismo valor INTEGER aparece en más de un CASE, solo se ejecutará la secuencia de


instrucciones que sigue al primer CASE coincidente.

• 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

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.3, "Guardar datos en el dispositivo predeterminado" (SAVE_VR.KL)

Sección B.12, "Visualización de una lista desde un archivo de diccionario" (DCLST_EX.KL)

Sección B.14, "Aplicación de compensaciones a un programa de Teach Pendant copiado" (CPY_TP.KL)

A.20.4 Procedimiento integrado SELECT_TPE

Objetivo:Selecciona el programa del nombre especificado

Sintaxis:SELECT_TPE(prog_name, estado)

Parámetros de entrada/salida:

[en] nombre_del_programa :STRING

[fuera] estado: :INTEGER

%MEDIO AMBIENTE Grupo :TPE

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.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ha ocurrido un


error.

Ver también:Procedimiento integrado OPEN_TPE

Ejemplo:Referirse aSección B.14, "Aplicación de compensaciones a un programa de Teach Pendant


copiado" (CPY_TP.KL), para ver un ejemplo de programa detallado.

A.20.5 Función integrada SEMA_COUNT

Objetivo:Devuelve el valor actual del semáforo especificado

Sintaxis:SEMA_COUNT (semáforo_no)

Tipo de retorno de función: ENTERO

Parámetros de entrada/salida:

A–319
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

[en] semaphore_no : INTEGER

%MEDIO AMBIENTE Grupo :MULTI

Detalles:

• El valor del semáforo indicado porsemáforo_noes regresado.


• Este valor se incrementa con cada llamada POST_SEMA y Acción SIGNAL SEMAPHORE que
especifica el mismosemáforo_no.Se reduce con cada llamada PEND_SEMA.
• Si SEMA_COUNT es mayor que cero, una llamada PEND_SEMA "caerá" inmediatamente. Si esto es-norte(
menos n), entonces haynortetareas pendientes en este semáforo.

Ver también:POST_SEMA, PEND_SEMA, CLEAR_SEMA Procedimientos incorporados,capitulo 16


MULTITAREA

Ejemplo:Ver ejemplos encapitulo 16MULTITAREA

A.20.6 SEMÁFORO Condición

Objetivo:Supervisa el valor del semáforo especificado

Sintaxis:SEMÁFORO[semaphore_no]

Detalles:

• semáforo_noespecifica el número de semáforo a utilizar.

• semáforo_nodebe estar en el rango de 1 al número de semáforos definidos en el controlador.

• Cuando el valor del semáforo indicado es mayor que cero, la condición se cumple (VERDADERO).

A.20.7 Procedimiento integrado SEND_DATAPC

Objetivo:Para enviar un mensaje de evento y otros datos a la PC.

Sintaxis:SEND_DATAPC(event_no, dat_buffer, estado)

Parámetros de entrada/salida:

[en] event_no :INTEGER

[en] dat_buffer :ARRAY DE BYTE

[fuera] estado: ENTERO

A–320
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

%ENTORNO Grupo :PC

Detalles:

• evento_no-un número de evento GEMM. Los valores válidos son de 0 a 255.

• búfer_dat-una matriz de hasta 244 bytes. 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. El
formato real del búfer de datos depende de las necesidades de la PC. No hay comprobación de errores del
formato dat_buffer en el controlador.

• estado-el estado de la operación intentada. Si no es 0, ocurrió un error y la solicitud de


evento no se envió a la PC.

Ver también:ADD_BYNAMEPC, ADD_INTPC, ADD_REALPC, ADD_STRINGPC

Ejemplo:El siguiente ejemplo envía el evento 12 a la PC con un búfer de datos.

Procedimiento integrado SEND_DATAPC

DATOS DE PRUEBA DEL PROGRAMA

%AMBIENTE ordenador personal

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)

- - enviar el evento 12 y el búfer de datos a la PC


SEND_DATAPC(12,dat_buffer,status)
SI estado<>0 ENTONCES
POST_ERR(estado,'',0,er_abortar) ENDIF

FIN datos de prueba

A.20.8 Procedimiento integrado SEND_EVENTPC

Objetivo:Para enviar un mensaje de evento a la PC.

Sintaxis:SEND_EVENTPC(event_no, estado)

A–321
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

Parámetros de entrada/salida:

[en] event_no :INTEGER

[fuera] estado: ENTERO

%ENTORNO Grupo :PC

Detalles:

• evento_no-un número de evento GEMM. Los valores válidos son de 0 a 255.

• estado-el estado de la operación intentada. Si no es 0, ocurrió un error y la solicitud de


evento no se envió a la PC.

Ejemplo:El siguiente ejemplo envía el evento 12 a la PC.

Procedimiento integrado SEND_EVENTPC

PRUEBA DEL PROGRAMA


%AMBIENTE ordenador personal

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

A.20.9 Procedimiento integrado SET_ATTR_PRG

Objetivo:Establece los datos de atributos del programa Teach Pendant o KAREL especificado

Sintaxis:SET_ATTR_PRG(nombre_programa, número_atributo, valor_int, valor_cadena, estado)

Parámetros de entrada/salida:

[en] nombre_del_programa : STRING

[en] número_atributo : ENTERO

[en] int_value : ENTERO

A–322
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

[en] string_value : STRING

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :TPE

Detalles:

• nombre_del_programaespecifica el programa en el que se establecen los datos de atributos.

• número_atributoes el atributo cuyo valor se va a establecer. Los siguientes atributos son válidos:

AT_PROG_TYPE : (#) Tipo de programa

AT_PROG_NAME : Nombre del programa (String[12])

AT_OWNER : Propietario (Cadena[8])

AT_COMMENT : Comentario (Cadena[16])

AT_PROG_SIZE : (#) Tamaño del programa

AT_ALLC_SIZE: (#) Tamaño de la memoria asignada

AT_NUM_LINE : (#) Número de líneas

AT_CRE_TIME : (#) Hora de creación (carga)

AT_MDFY_TIME : (#) Hora modificada

AT_SRC_NAME: nombre del archivo de origen (o archivo original) (String[128])

AT_SRC_VRSN: versión del archivo de origen

AT_DEF_GROUP: grupos de movimiento predeterminados (para atributo de tarea)

AT_PROTECT : Código de protección; 1 :protección APAGADA; 2 : protección ON

AT_STORAGE : Tipo de almacenamiento; TPSTOR_CMOS; TPSTOR_SOMBRA; TPSTOR_ARCHIVO;


TPSTOR_SHOD

AT_STK_SIZE: tamaño de pila (para atributo de tarea)

AT_TASK_PRI: Prioridad de la tarea (para el atributo de la tarea)

AT_DURATION: Duración del intervalo de tiempo (para el atributo de la tarea)

AT_BUSY_OFF: lámpara de ocupado apagada (para atributo de tarea)

A–323
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

AT_IGNR_ABRT: Ignorar solicitud de cancelación (para atributo de tarea)

AT_IGNR_PAUS: Ignorar solicitud de pausa (para atributo de tarea)

AT_CONTROL: Código de control (para atributo de tarea)

(#): no se puede establecer.

• 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

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ha ocurrido un


error. Algunos de los errores que pueden ocurrir son:

7073 El programa especificado ennombre_del_programano existe

7093 El atributo de un programa no se puede establecer mientras se está ejecutando

17033número_atributotiene un valor ilegal o no se puede establecer

A.20.10 Procedimiento integrado SET_CURSOR

Objetivo:Establecer la posición del cursor en la ventana

Sintaxis:SET_CURSOR(file_var, fila, columna, estado)

Parámetros de entrada/salida:

[en] file_var: ARCHIVO

[en] fila: ENTERO

[en] col : ENTERO

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :PBCORE

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.

• file_vardebe estar abierto a una ventana.

• 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.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

A–324
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

Ver también:Procedimiento integrado DEF_WINDOW

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.2, "Copiar variables de ruta" (CPY_PTH.KL)

Sección B.6, "Programa de manejadores de condiciones y variables de ruta" (PTH_MOVE.KL)

Sección B.13, "Uso de DISCTRL_ALPHA incorporado" (DCALP_EX.KL)

A.20.11 Procedimiento integrado SET_EPOS_REG

Objetivo:Almacena un valor XYZWPREXT en el registro especificado

Sintaxis:SET_EPOS_REG(register_no, posn, status <, group_no>)

Parámetros de entrada/salida:

[en] número_de_registro: ENTERO

[en] posición: XYZWPREXT

[fuera] estado: ENTERO

[en] grupo_no :INTEGER

%MEDIO AMBIENTE Grupo :REGOPE

Detalles:

• registro_noespecifica el registro de posición en el que almacenar el valor.

• losposiciónlos datos se establecen en representación XYZWPREXT.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

• Sigrupo_nose omite, se asume el grupo predeterminado para el programa. Los datos de otros grupos no se
modifican.

• Sigrupo_nose especifica, debe estar en el rango de 1 al número total de grupos definidos en el


controlador.

Ver también:SET_POS_REG, SET_JPOS_REG procedimientos integrados, GET_POS_REG,


GET_JPOS_REG funciones integradas

Ejemplo:El siguiente ejemplo establece la posición extendida para el registro especificado.

Procedimiento integrado SET_EPOS_REG

A-325
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

ESPECIAL DEL PROGRAMA

%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

A.20.12 Procedimiento integrado SET_EPOS_TPE

Objetivo:Almacena un valor XYZWPREXT en la posición especificada en el programa del Teach Pendant


especificado

Sintaxis:SET_EPOS_TPE (open_id, position_no, posn, status <,group_no>)

Parámetros de entrada/salida:

[en] open_id : ENTERO

[en] position_no : ENTERO

[en] posición: XYZWPREXT

[fuera] estado: ENTERO

[en] group_no : INTEGER

%MEDIO AMBIENTE Grupo :PBCORE

Detalles:

• id_abiertoespecifica el programa del Teach Pendant abierto. Se debe abrir un programa antes de llamar a este
incorporado.

• position_noespecifica la posición en el programa en la que almacenar el valor.

• 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.

• Los datos de posición se establecen en representación XYZWPREXT sin conversión.

A-326
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ha ocurrido un error.

• Sigrupo_nose omite, se asume el grupo predeterminado para el programa. Los datos de otros grupos no se
modifican.

• Sigrupo_nose especifica, debe estar en el rango de 1 al número total de grupos definidos en el


controlador.

A.20.13 Procedimiento integrado SET_FILE_ATR

Objetivo:Establece los atributos de un archivo antes de abrirlo

Sintaxis:SET_FILE_ATR(file_id, atr_type <,atr_value>)

Parámetros de entrada/salida:

[en] file_id: ARCHIVO

[en] atr_type: expresión INTEGER

[en] atr_value: expresión INTEGER

%MEDIO AMBIENTE Grupo :PBCORE

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.

• valor_atres opcional según el tipo de atributo que se establezca.

Relacionado con XML

Objetivo:Establece el archivo de atributos en XML antes de que se abra

Sintaxis:SET_FILE_ATR(archivo_xml, ATR_XML)

Parámetros de entrada/salida:

[en] xml_file: ARCHIVO

[en] ATR_XML: expresión INTEGER

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.

Ver también:SET_PORT_ATR Función integrada, SecciónSección 7.3.1., “Configuración de atributos de archivo"


y SecciónSección 9.5, "Formato de entrada XML"

Ejemplo:Consulte la secciónSección 9.5, "Formato de entrada XML"

A.20.14 Procedimiento integrado SET_FILE_POS

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

Sintaxis:SET_FILE_POS(file_id, new_file_pos, estado)

Parámetros de entrada/salida:

[en] file_id: ARCHIVO

[en] new_file_pos : expresión INTEGER

[fuera] estado: variable INTEGER

%MEDIO AMBIENTE Grupo :FLBT

Detalles:

• El archivo asociado afile_iddebe abrirse y descomprimirse en los discos FROM o RAM. De lo


contrario, el programa se cancela con un error.
• nuevo_archivo_posdebe estar en el rango de -1 al número de bytes en el archivo. at_eof : especifica que la
posición del archivo se establecerá al final del archivo. at_sof : especifica que la posición del archivo se
establecerá al comienzo del archivo.

— 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.

Ver también:Capítulo 7OPERACIONES DE ENTRADA/SALIDA DE ARCHIVOS

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.

Procedimiento integrado SET_FILE_POS

ABRIR ARCHIVO file_id ('RW','filepos.dt') FOR i = 1


TO PATH_LEN(my_path) DO
SET_FILE_POS(file_id, pos_dir[i], estado) SI estado = 0
ENTONCES
READ file_id (temp_pos)
my_path[i].node_pos = temp_pos ENDIF

ENDFOR

A.20.15 Procedimiento integrado SET_INT_REG

Objetivo:Almacena un valor entero en el registro especificado

Sintaxis:SET_INT_REG(register_no, int_value, status)

Parámetros de entrada/salida:

[en] número_de_registro: ENTERO

[en] int_value : ENTERO

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :REGOPE

Detalles:

• registro_noespecifica el registro en el quevalor_intserá almacenado.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ver también:GET_INT_REG, GET_REAL_REG, SET_REAL_REG Procedimientos incorporados

Ejemplo:Referirse aSección B.5, "Uso de registros integrados" (REG_EX.KL), para ver un ejemplo de programa
detallado.

A.20.16 Procedimiento integrado SET_JPOS_REG

Objetivo:Almacena un valor JOINTPOS en el registro especificado

A–329
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

Sintaxis:SET_JPOS_REG(registrar_no, jpos, estado<, grupo_no>)

Parámetros de entrada/salida:

[en] número_de_registro: ENTERO

[en] jpos: JOINTPOS

[fuera] estado: ENTERO

[en] grupo_no :INTEGER

%MEDIO AMBIENTE Grupo :REGOPE

Detalles:

• registro_noespecifica el registro de posición en el que almacenar la posición,jpos.

• Los datos de posición se establecen en representación JOINTPOS sin conversión.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

• Sigrupo_nose omite, se asume el grupo predeterminado para el programa. Los datos de otros grupos no se
modifican.

• Sigrupo_nose especifica, debe estar en el rango de 1 al número total de grupos definidos en el


controlador.

Ver también:GET_JPOS_REG, GET_POS_REG, SET_POS_REG, POS_REG_TYPE Procedimientos


incorporados

Ejemplo:Referirse aSección B.5, "Uso de registros integrados" (REG_EX.KL), para ver un ejemplo de programa
detallado.

A.20.17 Procedimiento integrado SET_JPOS_TPE

Objetivo:Almacena un valor JOINTPOS en la posición especificada en el programa del Teach Pendant especificado

Sintaxis:SET_JPOS_TPE(open_id, position_no, posn, status<, group_no>)

Parámetros de entrada/salida:

[en] open_id : ENTERO

[en] position_no : ENTERO

[en] posición: JOINTPOS

[fuera] estado: ENTERO

A–330
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

[en] grupo_no :INTEGER

%MEDIO AMBIENTE Grupo :PBCORE

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.

• position_noespecifica la posición en el programa en la que almacenar el valor.

• Los datos de posición se establecen en representación JOINTPOS sin conversión.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ha ocurrido un error.

• Sigrupo_nose omite, se asume el grupo predeterminado para el programa. Los datos de otros grupos no se
modifican.

• Sigrupo_nose especifica, debe estar en el rango de 1 al número total de grupos definidos en el


controlador.

Ver también:GET_JPOS_TPE, GET_POS_TPE, SET_POS_TPE, GET_POS_TYP Procedimientos integrados

Ejemplo:Referirse aSección B.14, "Aplicación de compensaciones a un programa de Teach Pendant


copiado" (CPY.TP.KL), para ver un ejemplo de programa detallado.

A.20.18 Procedimiento integrado SET_LANG

Objetivo:Cambia el idioma actual

Sintaxis:SET_LANG(nombre_idioma, estado)

Parámetros de entrada/salida:

[en] nombre_idioma :STRING

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :PBCORE

Detalles:

• nombre_idiomaespecifica en qué idioma deben leerse/escribirse los diccionarios. Utilice una de


las siguientes constantes predefinidas:

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.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, se produjo un error al


configurar el idioma.

• 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.

Ver también:Capítulo 10DICCIONARIOS Y FORMULARIOS

Ejemplo:Referirse aSección B.13, "Uso de DISCTRL_ALPHA incorporado" (DCALP_EX.KL), para ver un ejemplo de
programa detallado.

A.20.19 Procedimiento integrado SET_PERCH

Objetivo:Establece la posición de la percha y la tolerancia para un grupo de ejes

Sintaxis:SET_PERCH(jpos, tolerancia, indx)

Parámetros de entrada/salida:

[en] jpos: JOINTPOS

[en] tolerancia: ARRAY[6] of REAL

[en] indx : ENTERO

%ENTORNO Grupo :SISTEMA

Detalles:

• los valores dejposse convierten a radianes y se almacenan en la variable de sistema $REFPOS1[índice ].


$percha_pos.

• lostoleranciamatriz se convierte a grados y se almacena en la variable del sistema $REFPOS1[índice ].


$perchtol. Si la matriz de tolerancia no está inicializada, se genera un error.

• índiceespecifica el número de elemento que se establecerá en la matriz $REFPOS1.

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

Ejemplo:En el siguiente ejemplo, $REFPOS1[2].$perchpos y $REFPOS1[2].$perchtol se establecen de


acuerdo conperch_posytolerancia[i].

Procedimiento integrado SET_PERCH

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

A.20.20 Procedimiento integrado SET_PORT_ASG

Objetivo:Permite que un programa KAREL asigne uno o más puertos lógicos a puertos físicos específicos

Sintaxis:SET_PORT_ASG(log_port_type, log_port_no, rack_no, slot_no, phy_port_type,


phy_port_no, n_ports, status)

Parámetros de entrada/salida:

[en] log_port_type: INTEGER

[en] log_port_no : ENTERO

[en] rack_no : ENTERO

[en] slot_no : ENTERO

[en] phy_port_type: INTEGER

[en] phy_port_no : ENTERO

[en] n_ports : ENTERO

[fuera] estado: ENTERO

A–333
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

%ENVIRONMENT Grupo :IOSETUP

Detalles:

• log_port_typeespecifica el código para el tipo de puerto a asignar. Los códigos se definen en


KLIOTYPS.KL.

• log_port_noespecifica el número del puerto que se va a asignar.

• 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.

• phy_port_noes el número del puerto al que se va a asignar. Silog_port_typees un grupo, este es el


número de puerto para el bit menos significativo del grupo.

• 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).

NotaLa asignación no surte efecto hasta el siguiente encendido.

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.20.21 Función integrada SET_PORT_ATR

Objetivo:Establece los atributos de un puerto

Sintaxis:SET_PORT_ATR(port_id, atr_type, atr_value)

Tipo de retorno de función: ENTERO

Parámetros de entrada/salida:

[en] port_id : ENTERO

A–334
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

[en] atr_type: ENTERO

[en] atr_value : INTEGER

%MEDIO AMBIENTE Grupo :FLBT

Detalles:

• port_ides una de las constantes predefinidas de la siguiente manera:

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_readahd: búfer de lectura anticipada

atr_baud: Tasa de baudios

atr_parity :Paridad

atr_sbits: bits de parada

atr_dbits: longitud de datos

atr_xonoff :XON/XOFF

atr_eol :Fin de línea

atr_modem: línea de módem

• 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.

Cuadro A–24. Valores de atributos

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

Cuadro A–24. Valores de atributo (continuación)

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_eol un valor de código ASCII, ConsulteApéndice D, "Códigos de caracteres"

atr_modem md_not_used
md_use_dsr
md_nouse_dsr
md_use_dtr
md_nouse_dtr
md_use_rts
md_nouse_rts

• Un entero devuelto es el estado de esta acción al puerto.

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

Ejemplo:Consulte el ejemplo de la función incorporada GET_PORT_ATR.

A.20.22 Procedimiento integrado SET_PORT_CMT

Objetivo:Permite que un programa KAREL establezca el comentario que se muestra en la consola portátil, para un
puerto lógico específico

Sintaxis:SET_PORT_CMT(tipo_puerto, número_puerto, cadena_comentario, estado)

Parámetros de entrada/salida:

A–336
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

[en] tipo_puerto : INTEGER

[en] port_no : ENTERO

[en] comment_str : STRING

[fuera] estado: ENTERO

%ENVIRONMENT Grupo :IOSETUP

Detalles:

• tipo_puertoespecifica el código para el tipo de puerto cuyo modo se está configurando. Los códigos se
definen en KLIOTYPS.KL.

• port_noespecifica el número de puerto cuyo modo se está configurando.

• 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.

Ver también:SET_PORT_VALUE, SET_PORT_MOD, GET_PORT_CMT, GET_PORT_VALUE,


GET_PORT_MOD Procedimientos integrados

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.20.23 Procedimiento integrado SET_PORT_MOD

Objetivo:Permite que un programa KAREL establezca (o restablezca) modos de puerto especiales para un puerto lógico específico

Sintaxis:SET_PORT_MOD(tipo_puerto, número_puerto, máscara_modo, estado)

Parámetros de entrada/salida:

[en] tipo_puerto : INTEGER

[en] port_no : ENTERO

[en] mode_mask : ENTERO

[fuera] estado: ENTERO

%ENVIRONMENT Grupo :IOSETUP

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.

• port_noespecifica el número de puerto cuyo modo se está configurando.

• 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

NotaLa configuración del modo no surte efecto hasta el siguiente encendido.

• 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.

A.20.24 Procedimiento integrado SET_PORT_SIM

Objetivo:Establece el puerto simulado

Sintaxis:SET_PORT_SIM(tipo_puerto, número_puerto, valor, estado)

Parámetros de entrada/salida:

[en] tipo_puerto : INTEGER

[en] port_no : ENTERO

[en] valor: ENTERO

[fuera] estado: ENTERO

%ENVIRONMENT Grupo :IOSETUP

Detalles:

• tipo_puertoespecifica el código para el tipo de puerto a simular. Los códigos se definen en KLIOTYPS.KL.

• port_noespecifica el número del puerto a simular.

A–338
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

• valorespecifica el valor inicial a establecer.

• estadose devuelve con cero si se simula el puerto.

Ver también:SET_PORT_ASG, GET_PORT_ASG, GET_PORT_SIM Procedimientos incorporados

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.20.25 Procedimiento integrado SET_PORT_VAL

Objetivo:Permite que un programa KAREL establezca una salida específica (o entrada simulada) para un puerto lógico
específico

Sintaxis:SET_PORT_VAL(tipo_puerto, número_puerto, valor, estado)

Parámetros de entrada/salida:

[en] tipo_puerto : INTEGER

[en] port_no : ENTERO

[en] valor: ENTERO

[fuera] estado: ENTERO

%ENVIRONMENT Grupo :IOSETUP

Detalles:

• tipo_puertoespecifica el código para el tipo de puerto cuyo modo se está configurando. Los códigos se
definen en KLIOTYPS.KL.

• port_noespecifica el número de puerto cuyo modo se está configurando.

• 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.

Ver también:SET_PORT_VALUE, SET_PORT_MOD, GET_PORT_CMT, GET_PORT_VALUE,


GET_PORT_MOD Procedimientos integrados

Ejemplo:El siguiente ejemplo establece el valor para un puerto especificado.

Procedimiento integrado SET_PORT_VAL

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

SET_PORT_VAL (tipo_puerto, número_puerto, valor, estado)


RETURN (estado)
FIN establecer_valor
EMPEZAR

FIN setvalprog

A.20.26 Procedimiento integrado SET_POS_REG

Objetivo:Almacena un valor XYZWPR en el registro de posición especificado

Sintaxis:SET_POS_REG(registro_no, posn, estado<, grupo_no>)

Parámetros de entrada/salida:

[en] número_de_registro: ENTERO

[en] pos.: XYZWPR

[fuera] estado: ENTERO

[en] group_no : INTEGER

%MEDIO AMBIENTE Grupo :REGOPE

Detalles:

• registro_noespecifica el registro de posición en el que almacenar el valor.

• Los datos de posición se establecen en representación XYZWPR sin conversión.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

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.

• Sigrupo_nose especifica, debe estar en el rango de 1 al número total de grupos definidos en el


controlador.

Ejemplo:Referirse aSección B.5, "Uso de registros integrados" (REG_EX.KL), para ver un ejemplo de programa
detallado.

A.20.27 Procedimiento integrado SET_POS_TPE

Objetivo:Almacena un valor XYZWPR en la posición especificada en el programa de consola portátil especificado

Sintaxis:SET_POS_TPE(open_id, position_no, posn, status<, group_no>)

Parámetros de entrada/salida:

[en] open_id : ENTERO

[en] position_no : ENTERO

[en] pos.: XYZWPR

[fuera] estado: ENTERO

[en] group_no : INTEGER

%MEDIO AMBIENTE Grupo :PBCORE

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.

• position_noespecifica la posición en el programa en la que almacenar el valor.

• 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.

• Los datos de posición se establecen en representación XYZWPR sin conversión.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ha ocurrido un error.

• Sigrupo_nose omite, se asume el grupo predeterminado para el programa. Los datos de otros grupos no se
modifican.

• Sigrupo_nose especifica, debe estar en el rango de 1 al número total de grupos definidos en el


controlador.

A–341
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

Ejemplo:Referirse aSección B.14, "Aplicación de compensaciones a un programa de Teach Pendant


copiado" (CPY_TP.KL), para ver un ejemplo de programa detallado.

A.20.28 Procedimiento integrado SET_PREG_CMT

Objetivo:Para establecer la información de comentario de un registro de posición KAREL en función de un número de


registro dado y un comentario dado.

Sintaxis:SET_PREG_CMT (register_no, comment_string, status)

Parámetros de entrada/salida:

[en] número_de_registro: ENTERO

[en] cadena_comentario: STRING

[fuera] estado: ENTERO

%MEDIO AMBIENTE grupo: REGOPE

A.20.29 Procedimiento integrado SET_REAL_REG

Objetivo:Almacena un valor REAL en el registro especificado

Sintaxis:SET_REAL_REG(register_no, real_value, status)

Parámetros de entrada/salida:

[en] número_de_registro: ENTERO

[en] valor_real : REAL

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :REGOPE

Detalles:

• registro_noespecifica el registro en el quevalor realserá almacenado.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ver también:SET_INT_REG, GET_REAL_REG, GET_INT_REG Procedimientos incorporados

A-342
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

A.20.30 Procedimiento integrado SET_REG_CMT

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.

Sintaxis:SET_REG_CMT (register_no, comment_string, estado

Parámetros de entrada/salida:

[en] número_de_registro: ENTERO

[en] cadena_comentario: STRING

[fuera] estado: ENTERO

%MEDIO AMBIENTE grupo REGOPE

Detalles:

• Register_no especifica de qué registro recuperar los comentarios. El comment_string


representa los datos que se utilizarán para establecer el comentario del registro dado. Si
comment_string excede más de 16 caracteres, el integrado truncará la cadena.

A.20.31 Procedimiento integrado SET_SREG_CMT

Objetivo:Establece el comentario para el registro de cadena especificado.

Sintaxis:SET_SREG_CMT(register_no, comentario, estado)

Parámetros de entrada/salida:

[en] número_de_registro :INTEGER

[en] comentario :STRING[254]

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :REGOPE

Detalles:

• registro_noespecifica el registro de cadena que se va a obtener.

• comentariocontiene el comentario para establecer en el registro de cadena especificado.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

A–343
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

Ver también:GET_STR_REG, GET_SREG_CMT, SET_STR_REG Procedimientos integrados.

A.20.32 Procedimiento integrado SET_STR_REG

Objetivo:Establece el valor para el registro de cadena especificado.

Sintaxis:SET_STR_REG(registrar_no, valor, estado)

Parámetros de entrada/salida:

[en] número_de_registro :INTEGER

[en] valor :CADENA[254]

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :REGOPE

Detalles:

• registro_noespecifica el registro de cadena que se va a obtener.

• valorcontiene el valor para establecer en el registro de cadena especificado.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ver también:GET_STR_REG, GET_SREG_CMT, SET_SREG_CMT Procedimientos incorporados.

A.20.33 Procedimiento integrado SET_TIME

Objetivo:Establecer la hora actual dentro del sistema KAREL

Sintaxis:ESTABLECER_TIEMPO(i)

Parámetros de entrada/salida:

[en] i : ENTERO

%MEDIO AMBIENTE Grupo :TIM

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

Cuadro A–25. Formato de hora ENTERO de 32 bits

31–25 24–21 20–16

año mes día


15–11 10–5 4–0
hora minuto segundo

• El contenido de los campos individuales es el siguiente:

- FECHA:

Bits 15-9 — Año desde 1980

Bits 8-5 — Mes (1-12)

Bits 4-0 — Día del mes


- TIEMPO:

Bits 31-25 — Número de horas (0-23)

Bits 24-21 — Número de minutos (0-59)

Bits 20-16 — Número de incrementos de 2 segundos (0-29)

• Este valor se puede determinar utilizando los procedimientos integrados GET_TIME y CNV_STR_TIME.

• Siies 0, la hora en el sistema no cambiará.


• Los valores INTEGER se pueden comparar para determinar si una vez es más reciente que otra.

Ver también:Procedimientos incorporados CNV_STR_TIME, GET_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.

Procedimiento integrado SET_TIME

WRITE('Ingrese la nueva hora: ')


READ(str_time)
CNV_STR_TIME(str_time,int_time)
SET_TIME(int_time)

A–345
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

A.20.34 Procedimiento integrado SET_TPE_CMT

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.

Sintaxis:SET_TPE_CMT(open_id, pos_no, comentario, estado)

Parámetros de entrada/salida:

[en] id_abierto :INTEGER

[en] pos_no :INTEGER

[en] comentario :STRING

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :TPE

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.

• estadoindica cero si la operación fue exitosa, de lo contrario se mostrará un código de error.

Ver también:GET_TPE_CMT y OPEN_TPE para obtener más procedimientos integrados.

A.20.35 Procedimiento integrado SET_TRNS_TPE

Objetivo:Almacena un valor de POSICIÓN dentro de la posición especificada en el programa de consola portátil


especificado

Sintaxis:SET_TRNS_TPE(open_id, position_no, posn, estado)

Parámetros de entrada/salida:

[en] open_id : ENTERO

[en] position_no : ENTERO

A–346
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

[en] posición: POSICIÓN

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :PBCORE

Detalles:

• id_abiertoespecifica el programa del Teach Pendant abierto. Se debe abrir un programa antes de llamar a este
incorporado.

• position_noespecifica la posición en el programa en la que almacenar el valor especificado porposición. Los


datos de otros grupos no se modifican.

• Los datos de posición se establecen en representación de POSICIÓN sin conversión.

• posiciónes el número de grupo deposition_no.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ha ocurrido un error.

A.20.36 Procedimiento integrado SET_TSK_ATTR

Objetivo:Establecer el valor del atributo de tarea en ejecución especificado

Sintaxis:SET_TSK_ATTR(nombre_tarea, atributo, valor, estado)

Parámetros de entrada/salida:

[en] nombre_tarea: STRING

[en] atributo: ENTERO

[en] valor: ENTERO

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :PBCORE

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_PRIORITY :Prioridad, consulte %PRIORITY para obtener información sobre el valor

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_NOBUSY:Lámpara de ocupado apagada, consulte %NOBUSYLAMP

TSK_NOABORT: Ignorar solicitud de cancelación

Pg_np_error: no cancelar en caso de error

Pg_np_cmd: no cancelar en el comando

TSK_NOPAUSE: Ignorar solicitud de pausa

pg_np_error: sin pausa en caso de error

pg_np_end: sin pausa en el comando cuando TP está habilitado

pg_np_tpenb: sin pausa

TSK_TRACE :Habilitar rastreo

TSK_TRACELEN: Número máximo de líneas para almacenar al rastrear

TSK_TPMOTION :Activar movimiento TP, consulte %TPMOTION para obtener información sobre el valor

TSK_PAUSESFT :Pausa en turno, reversa de %NOPAUSESHFT


• valordepende del atributo de la tarea que se establezca.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ver también:Procedimiento integrado GET_TSK_INFO

Ejemplo:Ver ejemplos encapitulo 16MULTITAREA

A.20.37 Procedimiento integrado SET_TSK_NAME

Objetivo:Establecer el nombre de la tarea especificada

Sintaxis:SET_TSK_NAME(antiguo_nombre, nuevo_nombre, estado)

Parámetros de entrada/salida:

[en] nombre_antiguo: STRING

[en] nuevo_nombre : STRING

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :MULTI

A–348
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

Detalles:

• nombre de la tareaes el nombre de la tarea de interés. Un espacionombre de la tareaindicará la tarea de llamada.

• nuevo nombrese convertirá en el nuevo nombre de la tarea.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ver también:Procedimiento integrado GET_ATTR_PRG

Ejemplo:Ver ejemplos encapitulo 16MULTITAREA

A.20.38 Procedimiento integrado SET_VAR

Objetivo:Permite que un programa KAREL establezca el valor de una variable específica

Sintaxis:SET_VAR(entrada, prog_name, var_name, valor, estado)

Parámetros de entrada/salida:

[entrada, salida] entrada: ENTERO

[en] prog_name : STRING

[en] nombre_var : STRING

[in] value : Cualquier tipo de datos KAREL válido excepto PATH

[fuera] estado: ENTERO

%ENTORNO Grupo :SISTEMA

Detalles:

• entradadevuelve el número de entrada en la tabla de datos variables denombre_varen el directorio del


dispositivo dondenombre_varse encuentra.Esta variable no debe modificarse.

• 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.

• Usarprog_namede '*SYSTEM*' para establecer una variable del sistema.

• nombre_vardebe hacer referencia a una variable estática.

• nombre_varpuede contener números de nodo, nombres de campo y/o subíndices.

• 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

• Si ambosnombre_varyvalorson CADENA, el número de caracteres copiados será igual al tamaño de la


menor de las dos cadenas.

• Si ambosnombre_varyvalorson ESTRUCTURAS del mismo tipo,valorserá una copia exacta de


nombre_var.

• nombre_varse establecerá envalor.

• 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.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

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.

Ver también:Procedimientos integrados CREATE_VAR, RENAME_VAR,manual de opciones de internetpara obtener información


sobre cómo acceder a las variables del sistema en un robot en un anillo.

Ejemplo 1:Para acceder a $TP_DEFPROG en el robot MHROB03 en un anillo, consulteAccediendo a


$TP_DEFPROG en MHROB03.

Accediendo a $TP_DEFPROG en MHROB03

SET_VAR(entrada, '\\MHROB03\*sistema*', '$TP_DEFPROG', strvar, estado)

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:

GET_VAR SET_VAR Ejemplo

PARA idx = 1 A $PH_ROSIP.$NUM_MEMBERS HACER


SI idx = $PH_ROSIP.$MY_INDEX ENTONCES
- - Esto funcionará, pero este robot es ineficiente
MÁS
SELECCIONE $PH_MEMBERS[idx].$ESTADO DE
CASO (0): -- Desconectado
sstate = 'Fuera de línea'
CASO (1) : -- En línea
sstate = ' Online ' CASO (2) : --
Sincronizado
sstate = 'Sincronizar'

A–350
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

CNV_INT_STR(idx, 1, 10, sidx)


prog_name = '\\' + $PH_MEMBERS[idx].$NAME + '\ipgetset' var_name = 'set_data['+
smy_index + ',' + sidx + ']' GET_VAR(entrada, prog_name, var_name,
set_data[$PH_ROSIP .$MI_ÍNDICE,
idx], estado[idx])
SI estado[idx] = 0 ENTONCES
SI uninit(set_data[$PH_ROSIP.$MY_INDEX, idx]) ENTONCES
set_data[$PH_ROSIP.$MY_INDEX, idx] = 0 DE LO
CONTRARIO
set_data[$PH_ROSIP.$MY_INDEX, idx] = set_data[$PH_ROSIP.$MY_INDEX,
idx] + 1
TERMINARA SI

SET_VAR(entrada, prog_name, var_name, set_data[$PH_ROSIP.$MY_INDEX, idx],


estado[idx])
TERMINARA SI

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.

Uso 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

GET_VAR(entrada, '\\mhrob01\*posreg*', '$POSREG[1, 10]', posext_data, estado) SET_VAR(entrada, '\


\mhrob01\*numreg*', '$NUMREG[20]', int_data, estado) SET_VAR(entrada, '\\mhrob01\*numreg*',
'$NUMREG[21]', real_data, estado) SET_VAR(entrada, '\\mhrob01\*posreg*', '$POSREG[1, 20]',
posext_data, estado) fin GETREG

A.20.39 Directiva de traductor %SHADOWVARS

Objetivo:Esta directiva especifica que todas las variables por defecto se crean en SHADOW.

Sintaxis:%SOMBRAS

A.20.40 CORTO Tipo de datos

Objetivo:Define una variable como un tipo de datos CORTO

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.

A.20.41 SEÑAL EVENTO Acción

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:

event_no : una expresión INTEGER

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.

Ver también:EVENTO Condició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.20.42 Declaración de EVENTO DE SEÑAL

Objetivo:Señala un evento que podría satisfacer un manejador de condiciones o liberar un programa en espera

Sintaxis:EVENTO DE SEÑAL [event_no]

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

Ejemplo:Consulte el programa de ejemplo de sentencia DISABLE CONDITION.

A–353
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

A.20.43 SEÑAL DE SEMÁFORO Acción

Objetivo:Suma uno al valor del semáforo indicado

Sintaxis:SEMÁFORO DE SEÑAL[semaphore_no]

dónde:

semaphore_no : una expresión INTEGER

Detalles:

• El semáforo indicado porsemáforo_nose incrementa en uno.


• semáforo_nodebe estar en el rango de 1 al número de semáforos definidos en el controlador.

Ver también:Sección 16.8, "Comunicación de tareas" para obtener más información y ejemplos.

A.20.44 SIN función incorporada

Objetivo:Devuelve un valor REAL que es el seno del argumento de ángulo especificado

Sintaxis:SIN(ángulo)

Tipo de retorno de función: REAL

Parámetros de entrada/salida:

[en] ángulo: REAL

%ENTORNO Grupo :SISTEMA

Detalles:

• ánguloespecifica un ángulo en grados.

• á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.

A.20.45 Función integrada SQRT

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)

Tipo de retorno de función: REAL

Parámetros de entrada/salida:

[en] x : REAL

%ENTORNO Grupo :SISTEMA

Detalles:

• Xno debe ser negativo. De lo contrario, el programa se cancelará con un error.

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.

Función integrada SQRT

c = RAÍZ CUADRADA(a*a+b*b)
ESCRIBIR ('La hipotenusa del triángulo es ',c::6::2)

A.20.46 Directiva de traductor %STACKSIZE

Objetivo:Especifica el tamaño de la pila en palabras largas.

Sintaxis:%TAMAÑO DE LA APILA = n

Detalles:

• nortees el tamaño de la pila.

• El valor predeterminado denortees 300 (1200 bytes).

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

A.20.47 Tipo de datos STD_PTH_NODE

Objetivo:Define un tipo de datos para usar en PATH.

Sintaxis:STD_PTH_NODE = ESTRUCTURA

node_pos : POSICIÓN en GRUPO[1]

A–355
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

group_data: GROUP_ASSOC en GROUP[1] (ya no se usa)

common_data: COMMON_ASSOC (ya no se usa)

ESTRUCTURA FINAL

Detalles:

• Si se omite la cláusula NODEDATA de la declaración PATH, STD_PTH_NODE será el valor


predeterminado.
• Cada nodo en el PATH será de este tipo.

A.20.48 DETENER Acción

Objetivo:Detiene cualquier movimiento en curso, dejándolo en un estado reanudable

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.

• Se puede apilar más de un movimiento por una sola acción de PARADA.

• Si el programa KAREL estaba esperando la finalización del movimiento en curso, seguirá


esperando.

• 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.

• El movimiento no se puede detener para una tarea diferente.

Ver también:Declaración de RESUMEN

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

A.20.49 Declaración DETENER

Objetivo:Detiene cualquier movimiento en curso, dejándolo en un estado reanudable

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 el programa KAREL estaba esperando la finalización del movimiento en curso, seguirá


esperando.
• 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 CRT/KB.

• 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.

• El movimiento no se puede detener para una tarea diferente.

Ver también:REANUDAR Acción, REANUDAR Declaración,Apéndice E, “Diagramas de sintaxis”, para obtener más información
sobre la sintaxis

Ejemplo:El siguiente ejemplo detiene el movimiento si la entrada digital está activada.

Declaración DETENER

SI DIN[2] ENTONCES
DETÉNGASE

TERMINARA SI

A.20.50 STRING Tipo de datos

Objetivo:Define un parámetro de rutina o variable como tipo de datos STRING

Sintaxis:Longitud de la cuerda]

dónde:

longitud : una constante INTEGER o literal

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.

• Las funciones no pueden devolver valores STRING.

• Los operadores STRING válidos son:

— Operadores relacionales (>, >=, =, <>, < y <=)

— Operador de concatenación (+)

• Los literales STRING constan de una serie de caracteres ASCII entre comillas simples (apóstrofes). En
la siguiente tabla se dan ejemplos.

Cuadro A–26. Ejemplo STRING Literales

VÁLIDO INVÁLIDO RAZÓN

'123456' 123456 Sin comillas 123456 es un literal ENTERO

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.2, "Copiar variables de ruta" (CPY_PTH.KL)

Sección B.3, "Guardar datos en el dispositivo predeterminado" (SAVE_VR.KL)

Sección B.7, "Listado de archivos y programas y manipulación de cadenas" (LIST_EX.KL)

Sección B.9, "Uso de las funciones integradas de archivo y dispositivo" (FILE_EX.KL)

Sección B.10, "Uso de pantallas dinámicas incorporadas" (DYN_DISP.KL)

Sección B.12, "Visualización de una lista desde un archivo de diccionario" (DCLST_EX.KL)

Sección B.13, "Uso de DISCTRL_ALPHA incorporado" (DCALP_EX.KL)

Sección B.14, "Aplicación de compensaciones a un programa de Teach Pendant copiado" (CPY_TP.KL)

Sección B.1, "Configuración de puertos de salida digital para monitoreo" (DOUT_EX.KL)

A–358
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

A.20.51 Función integrada STR_LEN

Objetivo:Devuelve la longitud actual del argumento STRING especificado

Sintaxis:STR_LEN(cadena)

Tipo de retorno de función: ENTERO

Parámetros de entrada/salida:

[en] cadena: CADENA

%ENTORNO Grupo :SISTEMA

Detalles:

• El valor devuelto es la longitud de la CADENA almacenada actualmente en elcalleargumento, no la


longitud máxima de la CADENA especificada en su declaración.

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.

A.20.52 ESTRUCTURA Tipo de datos

Objetivo:Define un tipo de datos como una estructura definida por el usuario

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:

— Definiciones de ESTRUCTURA (se permiten tipos que son estructuras declaradas)

A–359
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

— Tipos de RUTA

- Tipos de archivo

— Tipos de visión

— Matrices de longitud variable

— 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

Ver también:Sección 2.4.2, “Estructuras de datos definidas por el usuario”

Ejemplo:Referirse aSección B.2, "Copia de variables de ruta" (CPY_PTH.KL), para ver un ejemplo de programa
detallado.

A.20.53 Función integrada SUB_STR

Objetivo:Devuelve una copia de parte de un argumento STRING especificado

Sintaxis:SUB_STR(fuente, strt, largo)

Tipo de retorno de función: CADENA

Parámetros de entrada/salida:

[en] origen: CADENA

[en] strt : ENTERO

[en] len : ENTERO

%ENTORNO Grupo :SISTEMA

Detalles:

• Una subcadena deorigenes devuelto por la función.

• La longitud de la subcadena es el número de caracteres, especificado porLen,que comienza en la posición


indexada especificada porcalle.

• 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.

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.2, "Copiar variables de ruta" (CPY_PTH.KL)

A–360
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

Sección B.7, "Listado de archivos y programas y manipulación de cadenas" (LIST_EX.KL)

Sección B.9, "Uso de las funciones integradas de archivo y dispositivo" (FILE_EX.KL)

A.21 - T - KAREL IDIOMA DESCRIPCIÓN

A.21.1 Función integrada TAN

Objetivo:Devuelve un valor REAL que es la tangente del argumento REAL especificado

Sintaxis:TAN (ángulo)

Tipo de retorno de función: REAL

Parámetros de entrada/salida:

[en] ángulo: REAL

%ENTORNO Grupo :SISTEMA

Detalles:

• El valor deángulodebe estar en el rango de ± 18000 grados. De lo contrario, el programa se


cancelará con un error.

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).

Función integrada TAN


ESCRIBIR ('ingrese un ángulo:')
LEER (ángulo, CR)

relación = SIN(ángulo)/COS(ángulo) SI
relación = TAN(ángulo) ENTONCES
ESCRIBIR ('la relación es correcta', CR)
ENDIF

A.21.2 Directiva de traductor %TIMESLICE

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.

• El valor del intervalo de tiempo debe ser mayor que 0.

• 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.

A.21.3 Directiva de traductor %TPMOTION

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.

A.21.4 Procedimiento integrado TRADUCIR

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.

Sintaxis:TRADUCIR(file_spec, list_sw, estado)

Parámetros de entrada/salida:

[en] file_spec : STRING

[en] listado_sw : BOOLEAN

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :trans

Detalles:

• file_specespecifica el dispositivo, el nombre y el tipo de archivo a traducir. Si no se especifica ningún dispositivo, se


utilizará el dispositivo predeterminado. El tipo, si se especifica, se ignora y en su lugar se utiliza .KL.

A–362
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

• El archivo de código p se creará en el dispositivo predeterminado. El dispositivo predeterminado debe configurarse en el


disco RAM.

• 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.

• estadoexplica el estado de la operación intentada. Si se devuelve el número 0, la traducción fue exitosa. Si


no, se produjo un error. Algunos de los códigos de estado se muestran a continuación:

0 La traducción fue exitosa

268 La opción de traductor no está instalada

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.

Procedimiento integrado TRADUCIR


ABRIR ARCHIVO util_file ('RW', 'hola.kl')
WRITE util_file ('PROGRAMA hola', CR) WRITE
util_file ('%NOLOCKGROUP', CR) WRITE util_file
('BEGIN', CR)
WRITE util_file (' WRITE (''hola mundo'', CR)', CR) WRITE util_file ('FIN
hola', CR)
CERRAR ARCHIVO util_file
TRADUCIR('hola', CIERTO, estado)
SI estado = 0 ENTONCES
LOAD('hola.pc', 0, estado)
TERMINARA SI

SI estado = 0 ENTONCES
CALL_PROG('hola', prog_index)
TERMINARA SI

A–363
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

A.21.5 Función incorporada TRUNC

Objetivo:Convierte el argumento REAL especificado en un valor INTEGER eliminando la parte


fraccionaria del argumento REAL

Sintaxis:TRUNC(x)

Tipo de retorno de función: ENTERO

Parámetros de entrada/salida:

[en] x : REAL

%ENTORNO Grupo :SISTEMA

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.

• Xdebe estar en el rango de -2147483648 a +2147483583. De lo contrario, el programa se cancela con


un error.

• ROUND y TRUNC se pueden usar para convertir una expresión REAL en una expresión INTEGER.

Ver también:Función incorporada REDONDA

Ejemplo:El siguiente ejemplo utiliza TRUNC integrado para determinar el valor INTEGER real de
millasdividido porhorasLlegarmph.

Función incorporada TRUNC


ESCRIBIR ('ingrese millas recorridas, horas usadas:')
LEER (millas, horas, CR)
mph = TRUNC(millas/horas)
ESCRIBIR ('millas por hora=',mph::5)

A.22 - U - KAREL IDIOMA DESCRIPCIÓN

A.22.1 Acción UNHOLD

Objetivo:Libera un RETENCIÓN de movimiento

Sintaxis:UNHOLD <GRUPO [n{,n}]>

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 las mociones no se sostienen, la acción no tiene efecto.

• Las mociones retenidas se cancelan si se ejecuta una instrucción RELEASE.

• 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).

• El movimiento no se puede detener para una tarea diferente.

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

A.22.2 Declaración UNHOLD

Objetivo:Libera un RETENCIÓN de movimiento

Sintaxis:UNHOLD <GRUPO [n{,n}]>

Detalles:

• Se reanuda cualquier movimiento que estaba en progreso cuando se ejecutó la última HOLD.

• Si las mociones no se sostienen, la declaración no tiene efecto.

• Las mociones retenidas se cancelan si se ejecuta una instrucción RELEASE.

• 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).

• El movimiento no se puede detener para una tarea diferente.

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

A.22.3 Función integrada UNINIT

Objetivo:Devuelve un valor BOOLEAN que indica si el argumento especificado no está inicializado o no.

Sintaxis:UNINIT(variable)

Tipo de retorno de función: BOOLEAN

Parámetros de entrada/salida:

[en] variable :cualquier variable KAREL

%ENTORNO Grupo :SISTEMA

Detalles:

• Se devuelve un valor de VERDADERO sivariableno está inicializado. De lo contrario, se devuelve FALSO.

• 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.

A.22.4 Directiva de traductor %UNINIVARS

Objetivo:Esta directiva especifica que todas las variables no están inicializadas por defecto.

Sintaxis:%UNINIVADORES

A.22.5 Procedimiento incorporado UNLOCK_GROUP

Objetivo:Desbloquea el control de movimiento para el grupo de ejes especificado

Sintaxis:UNLOCK_GROUP(group_mask, estado)

Parámetros de entrada/salida:

[en] máscara_de_grupo :INTEGER

A–366
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :MULTI

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.

Cuadro A–27. Configuración de máscara de grupo

GRUPO DECIMAL UN POCO

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".

• Desbloquear un grupo indica que la tarea se realizó con el grupo de movimiento.

• 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.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ver también:Procedimiento integrado LOCK_GROUP,capitulo 16MULTITAREA,para más información y


ejemplos.

Ejemplo:El siguiente ejemplo desbloquea los grupos 1, 2 y 3 y luego bloquea el grupo 3.

Procedimiento incorporado UNLOCK_GROUP


PROGRAMA lock_grp_ex
%AMBIENTE MOTN
%AMBIENTE MULTI
VAR

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

A.22.6 Acción DE PAUSA

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.

Ver también:REANUDAR, PAUSA Acciones

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.22.7 Procedimiento incorporado de UNPOS

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

[en] posición :XYZWPR

[fuera] x, y, z :REAL

[fuera] w, p, r :REAL

[fuera] c :CONFIG

%ENTORNO Grupo :SISTEMA

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.

• Cdevuelve la configuración deposición.

Ejemplo:El siguiente ejemplo utiliza UNPOS incorporado para agregar 100 alXargumento de ubicación

Procedimiento incorporado de UNPOS


UNPOS (CURPOS,x,y,z,w,p,r,config) next_pos = POS (x+100,y,z,w,p,r,config)
SET_POS_REG(1, next_pos, status) —— Poner next_pos en PR[1] move_to_pr1
—— Llamar al programa TP para pasar a PR[1]

A.22.8 UTILIZANDO... ENDUSANDO Declaració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.

Sintaxis:USAR struct_var{,struct_var} HACER

{declaración} ENDUSING

dónde:

struct_var : una variable de tipo ESTRUCTURA

declaración : una declaración KAREL ejecutable

Detalles:

• En la declaración ejecutable, si el mismo nombre es un nombre de campo y un nombre de variable, se usa 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.

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.

A.23 - V - DESCRIPCIÓN DEL IDIOMA KAREL

A.23.1 V_ACQ_VAMAPiProcedimiento integrado de RVision

Objetivo:Adquiere un mapa de área 3D utilizando la herramienta de sensor de área 3D especificada.

Sintaxis:

V_ACQ_VAMAP(sensor_name, parcial, center_pos, estado)

[en] nombre_del_sensor: STRING

[en] parcial: BOOLEAN

[en] center_pos: VECTOR

[fuera] estado: ENTERO

%GRUPO AMBIENTE: CVIS

Detalles:

• nombre_del_sensores el nombre de la herramienta de sensor de área 3D.

• parciales un parámetro interno. Establecido siempre en FALSO.

• center_poses un parámetro interno. Declare una variable VECTOR y establezca x, y y z en 0.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

• 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.

• Este incorporado está disponible en R-30iB.

• (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

A.23.2 V_ADJ_2DiProcedimiento integrado de RVision

Objetivo:Modifica el desplazamiento en un registro de visión especificado por X e Y.

Sintaxis:

V_ADJ_2D(registrar_no, x, y, estado)

[en] número_de_registro: ENTERO

[en] x: REAL

[en] y: REAL

A–371
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

[fuera] estado: ENTERO

%GRUPO AMBIENTE: CVIS

Detalles:

• registro_noes el número del registro de visión donde se almacena el desplazamiento de visión.

• Xes la cantidad en X para ajustar la compensación.

• yes la cantidad en Y para ajustar la compensación.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

• (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).

A.23.3 V_CAM_CALIBiProcedimiento integrado de RVision

Objetivo:Encuentra la cuadrícula de calibración para la calibración de un solo plano o de varios planos.

Sintaxis:V_CAM_CALIB (cal_name, func_code, estado)

[en] nombre_cal : STRING

[en] código_func : INTEGER

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo: CVIS

Detalles:

• nombre_cales el nombre del archivo de configuración de calibración creado en el modo de configuración.

• 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.

Cuadro A–28. Valores de código de función

Tipo de calibración Código de función

Calibración de patrón de cuadrícula Especifique el índice del plano de calibración: 1 o 2.

A–372
Traducido del inglés al español - www.onlinedoctranslator.com

MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

Cuadro A–28. Valores de código de función (continuación)

Tipo de calibración Código de función

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

de cuadrícula generada por robot genera automáticamente un programa TP que llama a la

instrucción idéntica a esta incorporada. Por lo tanto, esta función integrada no se utilizará

para esta herramienta de calibración.

Calibración 3DL Especifique el índice del plano de calibración: 1 o 2.

Calibración de seguimiento visual No soportado

Calibración 2D sencilla No soportado

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

• 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

- - Encuentra el plano de calibración


uno V_CAM_CALIB('CAL1',1,STATUS)
- - éxito si el estado es cero
SI ESTADO <> 0 ENTONCES
ESCRIBIR ('V_CAM_CALIB falló - ERROR', ESTADO, CR) ABORTAR

TERMINARA SI

A–373
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

FIN cal.

A.23.4 V_CLR_VAMAPiProcedimiento integrado de RVision

Objetivo:Borra el mapa de área 3D de una herramienta de sensor de área específica de la memoria.

Sintaxis:

V_CLR_VAMAP(nombre_sensor, estado)

[en] nombre_del_sensor: STRING

[fuera] estado: ENTERO

%GRUPO AMBIENTE: CVIS

Detalles:

• nombre_del_sensores el nombre de la herramienta de sensor de área 3D.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

• Este incorporado está disponible en R-30iB.

• (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).

A.23.5 V_DISPLAY4DiProcedimiento integrado de RVision

Objetivo:Muestra la pantalla de gráficos 4D para la herramienta de visión especificada en el iPendant.

Sintaxis:

V_DISPLAY4D(vistool_name, estado)

[en] vistool_name: STRING

[fuera] estado: ENTERO

%GRUPO AMBIENTE: CVIS

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.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

• 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).

A.23.6 V_FIND_VIEWiProcedimiento integrado de RVision

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:

V_FIND_VIEW(vp_name, camera_view, image_reg, status)

[en] vp_name: CADENA

[en] camera_view: INTEGER

[en] image_reg: ENTERO

[fuera] estado: ENTERO

%GRUPO AMBIENTE: CVIS

Detalles:

• nombre_vpes el nombre del proceso de visión que se ejecutará.

• vista de cámaraes el número de la vista de la cámara, si el proceso de visión es multivista. un valor de


- 1 ejecutará todas las vistas.

• imagen_reges el número del registro de imagen que contiene la imagen existente.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

• 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:

— Cámaras en escala de grises:

320 x 240: establezca el valor mínimo de $VISION_CFG.$IMREG_SIZE = 75 640 x

480: 300 (predeterminado)

A–375
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

640x960 : 600
1024x768 : 768
1280x480 : 600
1280x1024 : 1280

— Cámaras digitales a color:

640x480 : 1200
1024x768 : 2304

— Sensor láser 3D: 1500

• Después de modificar $VISION_CFG.$NUM_IMREGS y/o $VISION_CFG.$IMREG_SIZE, apague el controlador


del robot y luego vuelva a encenderlo para que los cambios surtan efecto.

• 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).

A.23.7 V_GET_OFFSETiProcedimiento integrado de RVision

Objetivo:Obtiene una compensación de visión de un proceso de visión y la almacena en un registro de visión especificado.

Sintaxis:V_GET_OFFSET(vp_name, registro_no, estado)

[en] vp_name: CADENA

[en] número_de_registro: ENTERO

[fuera] estado: ENTERO

% GRUPO AMBIENTE: CVIS

Detalles:

• nombre_vpes el nombre del proceso de visión creado en el modo de configuración

• registro_noes el número de registro en el que se colocan los datos de compensación y visión.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

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)

- - V_RUN_FIND, toma una imagen y ejecuta el proceso de visión


V_RUN_FIND(visprocess, 0, STATUS)

- - éxito si el estado es cero SI ESTADO


<> 0 ENTONCES
ESCRIBIR ('V_RUN_FIND FALLÓ con CÓDIGO DE ERROR', ESTADO, CR)
ABORTAR
TERMINARA SI

- - V_GET_OFFSET, obtenga el primer desplazamiento del comando run_find


- - poner el desplazamiento en VR[1]
- - llame a V_GET_OFFSET varias veces para obtener compensaciones de varias partes
V_GET_OFFSET(visprocess, 1, STATUS)

A–377
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

- - éxito si el estado es cero SI ESTADO


<> 0 ENTONCES
ESCRIBIR ('V_GET_OFFSET FAILED con CÓDIGO DE ERROR', ESTADO, CR)
ABORTAR
TERMINARA SI

- - 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

A.23.8 V_GET_PASSFLiProcedimiento integrado de RVision

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.

Sintaxis:V_GET_PASSFL (vp_name, registro_no, estado)

[en] vp_name : STRING

[en] número_de_registro: ENTERO

[fuera] estado: ENTERO

%GRUPO AMBIENTE: CVIS

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

• registro_noes el número de registro que el comando establecerá con el estado de la operación de


corrección/inspección de errores.

0: operación fallida

1: la operación fue exitosa


2: la operación no está determinada porque la herramienta principal falló

• estadoexplica el estado de la operación intentada. Si el estado no es igual a 0, entonces ocurrió un


error.

• (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

- - Ejecutar el proceso de visión de prueba de errores 'EP1'


V_EJECUTAR_ENCONTRAR('EP1',0,ESTADO)
- - éxito si el estado es cero
SI ESTADO <> 0 ENTONCES
ESCRIBIR ('V_RUN_FIND FALLÓ con CÓDIGO DE ERROR', ESTADO, CR)
ABORTAR
TERMINARA SI

- - Poner el resultado de prueba de errores en R[1]


V_GET_PASSFL('EP1',1,STATUS)
- - éxito si el estado es cero
SI ESTADO <> 0 ENTONCES
ESCRIBIR ('V_GET_PASSFL FALLÓ con CÓDIGO DE ERROR', ESTADO, CR)
ABORTAR
TERMINARA SI

FIN eprueba

A.23.9 V_GET_QUEUEiProcedimiento integrado de RVision

Objetivo:Obtiene una parte de la cola especificada y almacena la información en un registro de visión.

Sintaxis: V_GET_QUEUE (queue_num, vr_num, tiempo de espera, estado)

[en] cola_num: INTEGER

[en] vr_num: ENTERO

A–379
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

[en] tiempo de espera: ENTERO

[fuera] estado: ENTERO

%GRUPO AMBIENTE: CVIS

Detalles:

• cola_numes el número de la cola de la que se obtienen las piezas.


• núm_vres el número del registro de visión (VR) en el que colocar las compensaciones.

• Se acabó el tiempoes el tiempo de espera hasta que se produce un tiempo de espera.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

• Este comando establece, como disparador de seguimiento, el valor del codificador existente cuando se encuentra el objetivo
seleccionado.

• Este incorporado solo está disponible en R-30iControladores de un robot.

• Este incorporado requiere laiOpción de software de interfaz RVision KAREL (J870).

A.23.10 V_GET_VPARAMiProcedimiento integrado de RVision

Objetivo:Recupera el valor de un parámetro de visión de un proceso de visión especificado. Cuando el proceso de


visión tiene más de una vista de cámara, el valor se recupera para la vista especificada.

Sintaxis:

V_GET_VPARAM(vp_name, param_no, camera_view, reg_no, status)

[en] vp_name: CADENA

[en] param_no: ENTERO

[en] camera_view: INTEGER

[en] reg_no: ENTERO

[fuera] estado: ENTERO

%GRUPO AMBIENTE: CVIS

Detalles:

• nombre_vpes el nombre del proceso de visión que se ejecutará.

• param_noes el número del parámetro a recuperar. Los valores válidos deparam_noson:

— 0 : Número de resultados encontrados

A–380
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

• vista de cámaraes el número de la vista de la cámara, si el proceso de visión es multivista. un valor de


- 1 ejecutará todas las vistas.

• reg_noes el número del registro en el que almacenar el resultado. El resultado se almacena como un valor REAL.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

• (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).

A.23.11 V_INIT_QUEUEiProcedimiento integrado de RVision

Objetivo:Inicializa la cola especificada.

Sintaxis:V_INIT_QUEUE (número_cola, estado)

[en] cola_num: INTEGER

[fuera] estado: ENTERO

%GRUPO AMBIENTE: CVIS

Detalles:

• cola_numes el número de la cola que se va a inicializar.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

• 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.

• Este incorporado solo está disponible en R-30iControladores de un robot.

• Este incorporado requiere laiOpción de software de interfaz RVision KAREL (J870).

A.23.12 V_IRCONEXIÓNiProcedimiento integrado de RVision

Objetivo:Envía el más recienteiResultado de RVision para dispositivos móviles usandoiRConectar.

Sintaxis:

A–381
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

V_IRCONNECT(desc_string, prioridad, vis_reg_no, estado)

[en] desc_string: CADENA

[en] prioridad: ENTERO

[en] vis_reg_no: ENTERO

[fuera] estado: ENTERO

%GRUPO AMBIENTE: CVIS

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:

0 : Los datos son solo informativos. No resaltado en la aplicación móvil.

1: Los datos son solo informativos. Resaltado en verde.

2 : Los datos indican un posible problema o advertencia. Resaltado en amarillo. 3: Los

datos indican un problema grave. Resaltado en rojo.

• vis_reg_noes actualmente un parámetro no utilizado. Establezca siempre este parámetro en 0.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

• Los datos de resultados de visión enviados al dispositivo móvil contienen la misma información que losiPantalla
RVision Runtime, que incluye

— Nombre del proceso de visión

- Estado
— Número de resultados encontrados

— Puestos encontrados

— Hora de encontrar

— Puntuación de resultado, ID de modelo, error de ajuste, etc.

— 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

A.23.13 V_LED_APAGADOiProcedimiento integrado de RVision

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)

[fuera] estado: ENTERO

%GRUPO AMBIENTE: CVIS

Detalles:

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

• 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.

• Este incorporado está disponible en R-30iB.

• (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).

A.23.14 V_LED_ONiProcedimiento integrado de RVision

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:

V_LED_ON(canal, intensidad, estado)

[en] canal: ENTERO

[en] intensidad: ENTERO

[fuera] estado: ENTERO

%GRUPO AMBIENTE: CVIS

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.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

• 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.

• Este incorporado está disponible en R-30iB.

• (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).

A.23.15 V_OVERRIDEiProcedimiento integrado de RVision

Objetivo:Establece el valor de la herramienta Vision Override especificada.

Sintaxis:

V_OVERRIDE(ovrd_name, valor, estado)

[en] ovrd_name: STRING

[en] valor: REAL

[fuera] estado: ENTERO

%GRUPO AMBIENTE: CVIS

Detalles:

• nombre_superiores el nombre de la herramienta Vision Override para establecer. La herramienta Vision Override se crea y
configura eniConfiguración de RVision.

• valores el valor al que se cambia la propiedad de la herramienta Vision Override.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

• 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).

A.23.16 V_RALC_QUEUEiProcedimiento integrado de RVision

Objetivo:Coloca o reasigna una pieza recibida de la cola de vuelta a la cola para un robot aguas
abajo.

Sintaxis:V_RALC_QUEUE (número_cola, número_vr, estado)

[en] cola_num: INTEGER

[en] vr_num: ENTERO

[fuera] estado: ENTERO

%GRUPO AMBIENTE: CVIS

Detalles:

• cola_numes el número de la cola en la que reasignar las piezas.


• núm_vres el número del registro de visión (VR) del desplazamiento a reasignar.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

• Este incorporado solo está disponible en R-30iControladores de un robot.

• Este incorporado requiere laiOpción de software de interfaz RVision KAREL (J870).

A.23.17 V_RUN_FINDiProcedimiento integrado de RVision

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)

[en] vp_name: CADENA

[en] camera_view: INTEGER

[fuera] estado: ENTERO

A–385
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

%GRUPO AMBIENTE: CVIS

Detalles:

• nombre_vpes el nombre del proceso de visión creado en el modo de configuración

• 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.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

• (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)

- - V_RUN_FIND, toma una imagen y ejecuta el proceso de visión


V_RUN_FIND(visprocess, 0, STATUS)

- - éxito si el estado es cero SI ESTADO


<> 0 ENTONCES
ESCRIBIR ('V_RUN_FIND FALLÓ con CÓDIGO DE ERROR', ESTADO, CR)
ABORTAR
TERMINARA SI

A–386
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

- - V_GET_OFFSET, obtenga el primer desplazamiento del comando run_find


- - poner el desplazamiento en VR[1]
- - llame a V_GET_OFFSET varias veces para obtener compensaciones de varias partes
V_GET_OFFSET(visprocess, 1, STATUS)

- - éxito si el estado es cero SI ESTADO


<> 0 ENTONCES
ESCRIBIR ('V_GET_OFFSET FAILED con CÓDIGO DE ERROR', ESTADO, CR)
ABORTAR
TERMINARA SI

- - 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

A.23.18 V_SAVE_IMREGiProcedimiento integrado de RVision

Objetivo:Guarda una imagen de un registro de imágenes en un archivo.

Sintaxis:

V_SAVE_IMREG(image_reg, valor, estado)

[en] image_reg: ENTERO

[en] salida_ruta: STRING

[fuera] estado: ENTERO

%GRUPO AMBIENTE: CVIS

Detalles:

• imagen_reges el número del registro de imagen que contiene la imagen existente.

• 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".

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

• 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:

— Cámaras en escala de grises:

320 x 240: Establecer $VISION_CFG.$IMREG_SIZE valor mínimo = 75

A–387
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

640 x 480 : 300 (predeterminado)

640 x 960 : 600

1024x768 : 768
1280x480 : 600
1280x1024 : 1280

— Cámaras digitales a color:

640x480 : 1200
1024x768 : 2304

— Sensor láser 3D: 1500


• Después de modificar $VISION_CFG.$NUM_IMREGS y/o $VISION_CFG.$IMREG_SIZE, apague el controlador
del robot y luego vuelva a encenderlo para que los cambios surtan efecto.

• 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).

A.23.19 V_SET_REFiProcedimiento integrado de RVision

Objetivo:Establece la posición de referencia en el proceso de visión especificado después de ejecutar V_RUN_FIND.

Sintaxis:

V_SET_REF(vp_name, estado)

[en] vp_name: CADENA

[fuera] estado: ENTERO

%GRUPO AMBIENTE: CVIS

Detalles:

• nombre_vpes el nombre del proceso de visión creado en el modo de configuración.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

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).

A.23.20 V_SNAP_VIEWiProcedimiento integrado de RVision

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:

V_SNAP_VIEW(vp_name, camera_view, image_reg, status)

[en] vp_name: CADENA

[en] camera_view: INTEGER

[en] image_reg: ENTERO

[fuera] estado: ENTERO

%GRUPO AMBIENTE: CVIS

Detalles:

• nombre_vpes el nombre del proceso de visión que se utilizará para adquirir la imagen.

• vista de cámaraes el número de la vista de la cámara, si el proceso de visión es multivista.

• imagen_reges el número del registro de imagen donde se almacenará la imagen.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

• 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

— Cámaras en escala de grises:

320 x 240: establezca el valor mínimo de $VISION_CFG.$IMREG_SIZE = 75 640 x

480: 300 (predeterminado)

640x960 : 600
1024x768 : 768
1280x480 : 600
1280x1024 : 1280

— Cámaras digitales a color:

640x480 : 1200
1024x768 : 2304

— Sensor láser 3D: 1500

• Después de modificar $VISION_CFG.$NUM_IMREGS y/o $VISION_CFG.$IMREG_SIZE, apague el controlador


del robot y luego vuelva a encenderlo para que los cambios surtan efecto.

• 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).

A.23.21 V_START_VTRKiProcedimiento integrado de RVision

Objetivo:Inicia el proceso de visión de seguimiento visual especificado.

Sintaxis:V_START_VTRK (vp_name, estado)

[en] vp_name: CADENA

[fuera] estado: ENTERO

%GRUPO AMBIENTE: CVIS

Detalles:

• nombre_vpes el nombre del proceso de visión de seguimiento visual.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

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.

• Este incorporado requiere laiOpción de software de interfaz RVision KAREL (J870).

A.23.22 V_STOP_VTRKiProcedimiento integrado de RVision

Objetivo:Detiene el proceso de visión de seguimiento visual especificado.

Sintaxis:V_STOP_VTRK (vp_name, estado)

[en] vp_name: CADENA

[fuera] estado: ENTERO

%GRUPO AMBIENTE: CVIS

Detalles:

• nombre_vpes el nombre del proceso de visión de seguimiento visual.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

• Cuando se utilizan varios robots con un transportador, este comando se ejecuta solo en los robots
en los queiRVision reside.

• Este incorporado requiere laiOpción de software de interfaz RVision KAREL (J870).

A.23.23 Procedimiento integrado VAR_INFO

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

Sintaxis:VAR_INFO(prog_name, var_name, uninit, type_nam, type_value, dims, slen, status)

Parámetros de entrada/salida:

[en] prog_name: STRING

[en] nombre_var: STRING

[fuera] uninit_b :BOOLEANO

[fuera] type_nam :CADENA

A–391
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

[out] dims:ARRAY[3] OF INTEGER

[fuera] type_value :INTEGER

[fuera] estado: ENTERO

[fuera] slen :ENTERO

%MEDIO AMBIENTE Grupo :BYNAM

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.

• nombre_vardebe hacer referencia a una variable de programa estática.

• nombre_varpuede contener números de nodo, nombres de campo y/o subíndices.

• uninit_bdevolverá un valor de VERDADERO si la variable especificada pornombre_varno está inicializado y es


FALSO si la variable especificada pornombre_varse inicializa.

• tipo_namdevuelve una CADENA que especifica el nombre del tipo denombre_var

• tipo_valordevuelve un INTEGER correspondiente al tipo de datos denombre_var.La siguiente tabla


enumera los tipos de datos válidos y sus valores INTEGER representativos.

Tabla A–29. Tipos de datos válidos

Tipo de datos Valor

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

Cuadro A–29. Tipos de datos válidos (continuación)

Tipo de datos Valor

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.

— dims[1] = 0 si no es una matriz

— dims[2] = 0 si no es una matriz bidimensional

— dims[3] = 0 si no es una matriz tridimensional

• esbeltodevuelve la longitud declarada de la variable especificada pornombre_varsi es una variable STRING.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

Ejemplo:El siguiente ejemplo recupera información sobre la variableencimera,situado en


util_prog,desde dentro del programatarea.

Procedimiento integrado VAR_INFO

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)

A.23.24 Procedimiento integrado VAR_LIST

Objetivo:Localiza variables en el programa KAREL especificado con el nombre y el tipo de datos especificados

Sintaxis:VAR_LIST(prog_name, var_name, var_type, n_skip, format, ary_nam, n_vars, status)

Parámetros de entrada/salida:

[en] prog_name : STRING

[en] nombre_var : STRING

[en] tipo_var : ENTERO

[en] n_skip : ENTERO

[en] formato: ENTERO

[fuera] ary_nam : ARRAY de STRING

[fuera] n_vars : ENTERO

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :BYNAM

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.

• nombre_vares el nombre de la variable que se va a encontrar.nombre_varse puede especificar utilizando el carácter


comodín (*), que especifica que todas las variables paraprog_nameser encontrado.

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:

Tabla A–30. Tipos de datos válidos

Tipo de datos Valor

Todos los tipos de variables 0

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

array a otro ARRAY de STRINGs y ejecute VAR_LIST de nuevo conn_saltarigual a n_vars.La


llamada a VAR_LIST omitirá las variables encontradas en el primer paso y ubicará solo las
variables restantes.
• formatoespecifica el formato del nombre del programa y el nombre de la variable. Los siguientes valores son válidos
paraformato:

1=prog_name solamente, sin espacios en blanco


2 =var_name solamente, sin espacios en blanco
3 =[prog_name]var_name, sin espacios en
blanco 4 ='prog_name var_name ',
Longitud total = 27 caracteres, prog_name
comienza con el carácter 1 y var_name comienza con el carácter 16.

• 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.

• n_varses el número de variables almacenadas ennombre_ario.

• estadodevolverá cero si tiene éxito.

Ver también:FILE_LIST, PROG_LIST Procedimientos incorporados

Ejemplo:Referirse aSección B.2, "Copia de variables de ruta" (CPY_PTH.KL), para ver un ejemplo de programa
detallado.

A.23.25 Tipo de datos VECTOR

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.

• Los operadores VECTOR válidos son:

— Operadores matemáticos de suma (+) y resta (-)


— Los operadores relacionales igual (=) y no igual (<>)

— Operadores de producto cruzado (#) y producto interno (@).

— Operadores de multiplicación (*) y división (÷)

A–396
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

— Operador de posición relativa (:)

• Se puede acceder a los campos componentes de las variables VECTOR o configurarlos como si estuvieran definidos de la siguiente manera:

Tipo de datos VECTOR

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.

Tipo de datos VECTOR

VAR
dirección, desplazamiento: VECTOR
RUTINA calc_offset(offset_vec:VECTOR):VECTOR DESDE util_prog

A.23.26 Procedimiento integrado VOL_SPACE

Objetivo:Devuelve el total de bytes, los bytes libres y el nombre del volumen del dispositivo especificado

Sintaxis:VOL_SPACE(dispositivo, total, libre, volumen)

Parámetros de entrada/salida:

[en] dispositivo :STRING

[fuera] total :ENTERO

[fuera] libre :ENTERO

[fuera] volumen :STRING

%MEDIO AMBIENTE Grupo :FLBT

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.

FR:Tamaño de la Flash ROM. Esto solo establece eltotalparámetro.

DRACMA:Tamaño de la DRAM. Esto solo establece eltotalparámetro.

CMOS:Tamaño de la ROM CMOS. Esto solo establece eltotalparámetro.

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.

NotaTodos los nombres de dispositivos deben terminar con uncolon(:).

• totales el tamaño original de la memoria, en bytes.

• librees la cantidad de memoria disponible, en bytes.

• volumenes el nombre del dispositivo de almacenamiento utilizado.

Ver también:Sección 1.4.1, Memoria de estado en el capítulo "Pantallas e indicadores de estado" de la


correspondiente aplicación específicaManual de configuración y operaciones.

Ejemplo:El siguiente ejemplo obtiene información sobre los diferentes dispositivos.

Procedimiento integrado VOL_SPACE

espacio PROGRAMA
%NOLOCKGROUP
%AMBIENTE FLBT
VAR
total: ENTERO
libre: ENTERO
volumen: CUERDA [30]
EMPEZAR

VOL_SPACE('rd:', total, free, volumen)


VOL_SPACE('fr:', total, free, volumen)
VOL_SPACE('frp:', total, free, volumen)

A–398
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

VOL_SPACE('fr:', total, free, volume)


VOL_SPACE('dram:', total, free, volume)
VOL_SPACE('cmos:', total, free, volume)
VOL_SPACE('tpp:', total, free, volumen)
VOL_SPACE('perm:', total, libre, volumen)
VOL_SPACE('temp:', total, libre, volumen) END
espacio

A.23.27 VREG_FND_POSiProcedimiento integrado de RVision

Objetivo:Llena el registro de posición especificado con los datos de posición encontrados en el registro de
visión especificado.

Sintaxis: VREG_FND_POS (visreg_no, camera_view, posreg_no, estado)

[en] visreg_no : ENTERO

[en] camera_view : INTEGER

[en] posreg_no : ENTERO

[fuera] estado: ENTERO

%GRUPO AMBIENTE: CVIS

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.

• estado explica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

• (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).

A.23.28 VREG_OFFSETiProcedimiento integrado de RVision

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

Sintaxis:VREG_OFFSET(visreg_no, posreg_no, estado)

[en] visreg_no : ENTERO

[en] posreg_no : ENTERO

[fuera] estado: ENTERO

%GRUPO AMBIENTE: CVIS

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.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error.

• (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).

A.24 - W - KAREL IDIOMA DESCRIPCIÓN

A.24.1 ESPERAR declaración

Objetivo:Retrasa la continuación de la ejecución del programa hasta que se cumplan algunas condiciones

Sintaxis:ESPERAR COND_list

dónde:

cond_list: una o más condiciones

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

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.6, "Programa de manejadores de condiciones y variables de ruta" (PTH_MOVE.KL)

A–400
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

Sección B.1, "Configuración de puertos de salida digital para monitoreo" (DOUT_EX.KL)

A.24.2 Cláusula CUANDO

Objetivo:Se utiliza para especificar un par de condiciones/acciones en un controlador de condiciones global

Sintaxis:CUANDO cond_list DO action_list

dónde:

cond_list : una o más condiciones

action_list: una o más condiciones

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.

• Las declaraciones CONDITION pueden incluir múltiples cláusulas WHEN.

Ver también:Capítulo 6MANEJADORES DE CONDICIONES,Apéndice E, “Diagramas de sintaxis”, para obtener más información sobre la
sintaxis

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.6, "Programa de manejadores de condiciones y variables de ruta" (PTH_MOVE.KL)

Sección B.10, "Uso de pantallas dinámicas incorporadas" (DYN_DISP.KL)

Sección B.1, "Configuración de puertos de salida digital para monitoreo" (DOUT_EX.KL)

A.24.3 MIENTRAS...ENDWHILE Declaración

Objetivo:Se utiliza cuando se va a ejecutar una acción siempre que una expresión BOOLEAN siga siendo VERDADERA

Sintaxis:WHILE boolean_exp DO{ sentencia }ENDWHILE

dónde:

A–401
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

boolean_exp : una expresión BOOLEANA

declaración : una declaración ejecutable KAREL válida

Detalles:

• boolean_expse evalúa antes de cada iteración.

• Mientrasboolean_expes TRUE, se ejecutan las sentencias del bucle.


• Siboolean_expes FALSO, el control se transfiere a la sentencia que sigue a ENDWHILE y la
sentencia o sentencias en el cuerpo del bucle no se ejecutan.

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.

A.24.4 Cláusula CON

Objetivo:Usado en manejadores de condiciones para especificar calificadores de manejadores de condiciones

Sintaxis:CON param_spec {, param_spec}

dónde:

param_spec tiene la forma: with_sys_var = valor

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:

• Las variables reales del sistema especificadas no se modifican.

• 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.

A.24.5 ESCRIBIR declaración

Objetivo:Escribe datos en un dispositivo o archivo serie

Sintaxis:ESCRIBIR <var_archivo> (elemento_datos { ,elemento_datos })

dónde:

A–402
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

file_var : una variable de ARCHIVO

data_item : una expresión y sus especificadores de formato opcionales o la palabra reservada CR

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.

• dato_elementopuede ser cualquier expresión KAREL válida.

• Sidato_elementoes de tipo ARRAY, se debe proporcionar un subíndice.

• 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.

• Utilice el IO_STATUS incorporado para determinar si la operación de escritura fue exitosa.

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.

A.24.6 Procedimiento integrado WRITE_DICT

Objetivo:Escribe información de un diccionario.

Sintaxis:WRITE_DICT(file_var, dict_name, element_no, status)

Parámetros de entrada/salida:

[en] file_var: ARCHIVO

[en] dict_name :CADENA

[en] número_elemento :INTEGER

A–403
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :PBCORE

Detalles:

• file_vardebe abrirse en la ventana donde aparecerá el texto del diccionario.

• nombre_dictespecifica el nombre del diccionario desde el que escribir.

• elemento_noespecifica el número de elemento a escribir. Este número se designa con un “$” en el archivo del
diccionario.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error al


escribir el elemento del archivo del diccionario.

Ver también:Procedimientos incorporados READ_DICT, REMOVE_DICT,Capítulo 10DICCIONARIOS Y


FORMULARIOS

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.24.7 Procedimiento integrado WRITE_DICT_V

Objetivo:Escribe información de un diccionario con variables formateadas

Sintaxis:WRITE_DICT_V(file_var, dict_name, element_no, value_array, estado)

Parámetros de entrada/salida:

[en] file_var: ARCHIVO

[en] dict_name :CADENA

[en] número_elemento :INTEGER

[en] value_array :ARRAY DE CADENA

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :UIF

Detalles:

• file_vardebe abrirse en la ventana donde aparecerá el texto del diccionario.

• nombre_dictespecifica el nombre del diccionario desde el que escribir.

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'.

— [nombre_del_programa]especifica el nombre del programa que contiene la variable especificada. Si no se


especifica, se utiliza el programa actual que se está ejecutando.

— nombre_vardebe hacer referencia a una variable de programa global estática.

— nombre_varpuede contener números de nodo, nombres de campo y/o subíndices.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error al


escribir el elemento del archivo del diccionario.

Ver también:Procedimiento integrado READ_DICT_V,Capítulo 10DICCIONARIOS Y FORMULARIOS

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.

Procedimiento integrado WRITE_DICT_V


--------------------------------------------------
TPTASKEG.TX
--------------------------------------------------
- - $ "Número máximo de tareas = %d"
----------------------------------------------
PROGRAMA DE UTILIDAD:
--------------------------------------------------
PROGRAMA util_prog
%ENTORNO uif
VAR
estado: ENTERO
value_array: ARRAY[1] OF STRING[30] BEGIN

value_array[1] = '[*sistema*].$scr.$maxnumtask' ADD_DICT('TPTASKEG',


'TASK', dp_default, dp_open, status) WRITE_DICT_V(TPDISPLAY, 'TASK', 0,
value_array, status) util_prog
FINAL

A.25 - X - DESCRIPCIÓN DEL IDIOMA KAREL

A.25.1 Procedimiento integrado XML_ADDTAG

Objetivo:Asocia la etiqueta “tag_name” con el “xml_file”.

A–405
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

Sintaxis:XML_ADDTAG(xml_file, tag_name, numchar, caseflag, tag_ident, estado)

Parámetros de entrada/salida:

[en] archivo_xml: ARCHIVO

[en] nombre_etiqueta:CADENA

[en] numchar:ENTERO

[en] caseflag: booleano

[en] tag_ident:INTEGER

[fuera] estado: ENTERO

%MEDIO AMBIENTE Grupo :PBCORE

Detalles:

• archivo_xmlespecifica un archivo KAREL abierto con el conjunto de atributos AR_XML

• etiqueta_nombreNombre de la etiqueta que desea conocer

• númeroespecifica el número de caracteres a utilizar al buscar la etiqueta


• bandera de casoSi es VERDADERO, especifica si tag_name distingue entre mayúsculas y minúsculas

• 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.

• estadoexplica el estado de la operación intentada. Si no es igual a 0, entonces ocurrió un error al


escribir el elemento del archivo del diccionario. El estado de retorno será incorrecto si el usuario no
abrió el archivo y no configuró el atributo XML.

Ejemplo:Referirse aSección 9.5.

A.25.2 Procedimiento integrado XML_GETDATA

Objetivo:Devuelve los nombres y valores de los atributos asociados con la etiqueta que provoca la devolución.

Sintaxis:xml_getdata(xml_file, numattr, attrnames, attrvalues, text, textdone)

Parámetros de entrada/salida:

A–406
MARRC75KR07091E Rev H A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL

[en] archivo_xml: ARCHIVO

[fuera] numattr: ENTERO

[out] attrnames: ARRAY OF STRING

[fuera] atributos: ARRAY OF STRING

[fuera] datos de texto: STRING

[fuera] textdone: BOOLEAN

[fuera] estado: ENTERO

Detalles:

• archivo_xmlUn archivo KAREL abierto con el conjunto de atributos AR_XML

• númeroindica el número de atributos


• atributosindica nombres de atributos

• atributosindica valores de atributo

• datos de textoindica el texto que sigue a la etiqueta

• texto hechoSi esto es FALSO, se debe leer más texto

• estadoindica el resultado de la operación

A.25.3 Procedimiento integrado XML_REMTAG

Objetivo:Elimina el nombre de la etiqueta de la lista.

Sintaxis:xml_remtag(archivo_xml, nombre_de_etiqueta, identificador_de_etiqueta, estado)

Parámetros de entrada/salida:

[en] archivo_xml: ARCHIVO

[en] nombre_de_etiqueta: STRING

Estado [SALIDA]: ENTERO

Detalles:

• archivo_xmlAbra el archivo KAREL con el conjunto de atributos AR_XML

• etiqueta_nombreIndica el nombre de la etiqueta a eliminar

A–407
A. DESCRIPCIÓN ALFABÉTICA DEL LENGUAJE KAREL MARRC75KR07091E Rev H

• estadoIndica el resultado de la operación.

A.25.4 Procedimiento integrado XML_SCAN

Objetivo:Escanear a través de un archivo XML abierto previamente

Sintaxis:XML_SCAN(xml_file, tag_name, func_code, estado)

Parámetros de entrada/salida:

[en] archivo_xml: ARCHIVO

[fuera] tag_name:STRING

[out] tag_ident:INTEGER

[fuera] código_función::INTEGER

[fuera] estado: ENTERO

Detalles:

• archivo_xmlAbra el archivo KAREL con el conjunto de atributos AR_XML

• etiqueta_nombreNombre del sistema de etiquetas encontrado

• etiqueta_identEtiquetar al usuario asociado en la llamada addtag

• func_codeCódigo de función, inicio, etc.

• estadoresultado de la operación

• Cuando se encuentra una etiqueta registrada

— Func_code = XML_START o XML_END o XML_STEND


— Tag_ident = El valor asociado con la etiqueta cuando se registró
• Cuando un búfer de texto está lleno

— Código_función = XML_TXCONT

— Tag_ident = El valor asociado con la etiqueta cuando se registró


• Después de escanear 50 líneas

— Estado = XML_SCANLIM, simplemente recupere el integrado cuando se encuentre

— 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

— Estado = Algún error

— Tag_ident = XML_ERROR
• Al final del archivo, Estado = ÉXITO
• Los errores de análisis válidos son:

— XML_TAG_SIZE Demasiados caracteres en la etiqueta

— XML_ATTR_SIZE Demasiados caracteres en el atributo

— XML_NOSLASH Uso no válido del carácter /

— XML_INVTAG Carácter no válido en la etiqueta

— XML_UNMATCHATTR Sin valor para el atributo


— XML_UNMATCHTAG Etiqueta final sin inicio coincidente

— XML_INVATTR Carácter no válido en el atributo

— XML_NOFILE No se puede encontrar el archivo

— XML_TAGNEST Nivel de anidamiento de etiquetas demasiado profundo

— XML_COMMENT Error en el comentario

• 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.

• losetiqueta_identserá el tag_ident que el usuario registró para la devolución de la etiqueta registrada. Si el


sistema regresa por otras razones, tag_ident puede contener datos de etiquetas del sistema.

A.25.5 Procedimiento integrado XML_SETVAR

Objetivo:Establece la variable [prog_name]var_name de acuerdo con los atributos asociados con la etiqueta
que causa la devolución.

Sintaxis:xml_setvar(xml_file, prog_name, var_name, estado)

Parámetros de entrada/salida:

[en] archivo_xml: ARCHIVO

[en] prog_name:CADENA

[en] var_name:CADENA

[fuera] estado: ENTERO

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

Se puede configurar a través del XML:

<xmlstrct_t primero="123456" segundo="7.8910" tercero="1" cuarto="Una cadena"\>

• 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.

A.25.6 Tipo de datos XYZWPR

Objetivo:Define una variable, tipo de devolución de función o parámetro de rutina como tipo de datos XYZWPR

Sintaxis:XYZWPR <EN GRUPO [n]>

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:

Tipo de datos XYZWPR


XYZWPR = ESTRUCTURA
X: REAL
Y: REAL
Z: REAL
W: REAL
REAL
PAGS:

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

Ejemplo:Consulte las siguientes secciones para obtener ejemplos de programas detallados:

Sección B.2, "Copiar variables de ruta" (CPY_PTH.KL)

Sección B.5, "Uso de registros integrados" (REG_EX.KL)

Sección B.6, "Programa de manejadores de condiciones y variables de ruta" (PTH_MOVE.KL)

Sección B.8, "Generación y movimiento a lo largo de una ruta hexagonal" (GEN_HEX.KL)

Sección B.1, "Configuración de puertos de salida digital para monitoreo" (DOUT_EX.KL)

A.25.7 Tipo de datos XYZWPREXT

Objetivo:Define una variable, tipo de retorno de función o parámetro de rutina como XYZWPREXT

Sintaxis:XYZWPREXT <EN GRUPO [n]>

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:

Tipo de datos XYZWPREXT


XYZWPRiguiente = ESTRUCTURA
X: REAL
Y: REAL
Z: REAL
W: REAL
REAL
PAGS:

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.26 - Y - KAREL IDIOMA DESCRIPCIÓN


No hay descripciones de KAREL que comiencen con "Y".

A.27 - Z - KAREL IDIOMA DESCRIPCIÓN


No hay descripciones de KAREL que comiencen con "Z".

A–412
apéndice B
PROGRAMAS DE EJEMPLO DE KAREL

Contenido

apéndice B PROGRAMAS DE EJEMPLO DE KAREL ................................................................................ B–1


B.1 CONFIGURACIÓN DE PUERTOS DE SALIDA DIGITAL PARA MONITOREO DE PROCESOS........................ B–6
B.2 COPIAR VARIABLES DE RUTA.................................................... ..................................... B–18
B.3 GUARDAR DATOS EN EL DISPOSITIVO POR DEFECTO.................................................... ................ B-28
B.4 RUTINAS ESTÁNDAR.................................................... ............................................ B-31
B.5 USO DEL REGISTRO INCORPORADO.................................................... .................................... B-33
B.6 PROGRAMA DE CONTROLADORES DE CONDICIONES Y VARIABLES DE RUTA..................................... B–38
B.7 LISTADO DE ARCHIVOS Y PROGRAMAS Y MANIPULACIÓN DE CADENAS............................ B-44
B.8 GENERACIÓN Y MOVIMIENTO A LO LARGO DE UN TRAYECTORIA HEXAGONAL.......................................... B–49
B.9 USO DEL ARCHIVO Y DISPOSITIVO INCORPORADO.................................................... ................ B-53
B.10 USO DE PANTALLAS DINÁMICAS INTEGRADAS.................................................... ...................... B–57
B.11 MANIPULACIÓN DE VALORES DE VARIABLES VISUALIZADAS DINÁMICAMENTE..................... B–68
B.12 MOSTRAR UNA LISTA DESDE UN ARCHIVO DE DICCIONARIO.................................................... ..... B–70
B.12.1 Archivos de diccionario.................................................... .................................................... ...... B–79
B.13 USO DE DISCTRL_ALPHA INCORPORADO.................................................... ................... B–81
B.13.1 Archivos de diccionario.................................................... .................................................... ...... B–85
B.14 APLICACIÓN DE COMPENSACIONES A UN PROGRAMA TEACH PENDANT COPIADO.......................... B–85

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

Cada programa en este apéndice se divide en cinco secciones.

Sección 0: enumera cada elemento del lenguaje KAREL que se utiliza en el programa de ejemplo.

Sección 1 - Contiene las declaraciones del programa y del entorno.

Sección 2: contiene las declaraciones de constante, variable y tipo.

Sección 3 - Contiene las declaraciones de rutina.

Sección 4 - Contiene el cuerpo principal del programa.

Tabla B–1. Programas de ejemplo de KAREL

Nombre del programa Función del programa Incorporados usados Sección a referir

CPY_PTH.KL Ruta de las copias APPEND_NODE Sección B.2


variables POR NOMBRE

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

GUARDAR_VRS.KL Guarda los datos en el BORRAR ARCHIVO Sección B.3


dispositivo predeterminado. AHORRAR

B-2
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL

Tabla B–1. Programas de ejemplo de KAREL (continuación)

Nombre del programa Función del programa Incorporados usados Sección a referir

RUTA_EX.KL Contiene estándar CDH Sección B.4


rutinas que son FORCE_SPMENÚ
utilizado en todo el
ejemplos de programas.

REG_EX.KL Registro de usos CALL_PROGLIN Sección B.5


incorporados. CDH
CURSOS
GET_JPOS_REG
GET_POS_REG
OBTENER_REG

POS_REG_TYP
SET_INT_REG
SET_JPOS_REG
SET_POS_REG
FORCE_SPMENÚ

PTH_MOVE.KL Enseña y mueve CDH Sección B.6


a lo largo de un camino. CNV_REL_JPOS
También usa condición PATH_LEN
manipuladores SET_CURSOR

LISTA_EX.KL Enumera archivos y abdominales Sección B.7


programas, y ARRAY_LEN
manipular cadenas. CNV_INT_STR
ARCHIVO_LISTA

CARGA
LOAD_STATUS
PROG_LISTA
REDONDO

SUB_STR

GEN_HEX.KL genera un CNV_REL_JPOS Sección B.8


hexágono, y se mueve porque

a lo largo del camino. CURSOS


PECADO

ARCHIVO_EX.KL Utiliza las funciones integradas CNV_TIME_STR Sección B.9


de archivo y dispositivo. COPIAR ARCHIVO

DESMONTAR_DEV
FORMATO_DEV
CONSIGUE TIEMPO

MOUNT_DEV
SUB_STR

B–3
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H

Tabla B–1. Programas de ejemplo de KAREL (continuación)

Nombre del programa Función del programa Incorporados usados Sección a referir

DYN_DISP.KL Utiliza Dinámico ABORTAR_TAREA Sección B.10


Pantalla incorporada. CNC_DYN_DISB
CNC_DYN_DISE
CNC_DYN_DISP
CNC_DYN_DIS
CNC_DYN_DISI
CNC_DYN_DISR
INI_DYN_DISB
INI_DYN_DISE
INI_DYN_DISP
INI_DYN_DISS
INI_DYN_DISI
INI_DYN_DISR
CARGA
LOAD_STATUS
EJECUTAR_TAREA

CHG_DATA.KL Procesos y Sección B.11


cambia valores
de forma dinámica
variables mostradas.

DCLST_EX.KL Muestra una lista de un ADD_DICT Sección B.12.1


archivo de diccionario. ACT_PANTALLA
ATT_WINDOW_S
CHECK_DICT
CLR_IO_STAT
CNV_STR_INT
DEF_PANTALLA
DISCTRL_LIST
FORCE_SPENU
IO_ESTADO
PEDIDO

LEER_DICT
REMOVE_DICT
SET_FILE_ATR
CONFIGURAR_VENTANA

STR_LEN
UNINIT
ESCRIBIR_DICT

DCLISTEG.UTX Archivo de diccionario. N/A Sección B.12

B-4
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL

Tabla B–1. Programas de ejemplo de KAREL (continuación)

Nombre del programa Función del programa Incorporados usados Sección a referir

DCALP_EX.KL Utiliza el ADD_DICT Sección B.13


DISCTRL_ALFA CDH
Incorporado. DISCTRL_ALPH
FORCE_SPEMU
POST_ERR
SET_CURSOR
SET_LANG

DCALPHEG.UTX Archivo de diccionario. N/A Sección B.13.1

CPY_TP.KL Aplica compensaciones a AVL_POS_NUM Sección B.14


colgante de enseñanza copiado CDH
programas CLOSE_TPE
CNV_JPOS_REL
CNV_REL_JPOS
COPY_TPE
GET_JPOS_TYP
GET_POS_TPE
GET_POS_TYP
TPE ABIERTO
PROG_LISTA
SELECT_TPE
SET_JPOS_TPE
SET_POS_TPE

DOUT_EX.KL Configura puertos de salida CHRPATH_LEN Sección B.1


digital para el proceso CURSOS
vigilancia. los DEMORA
Los DOUT se utilizan para FORCE_SPMENÚ
monitorear el estado REINICIAR

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

Tabla B–1. Programas de ejemplo de KAREL (continuación)

Nombre del programa Función del programa Incorporados usados Sección a referir

necesita servicio,
que se desencadena
por los valores DOUT.

B.1 CONFIGURACIÓN DE PUERTOS DE SALIDA DIGITAL PARA MONITOREO DE


PROCESOS

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.

Configuración de puertos de salida digital para monitoreo de procesos - Descripción general

--------------------------------------------------------------------------------
- - - - 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

---- XYZWPREXT Segundo 2


---- CUERDA Segundo 2
---- XYZWPR Segundo 2

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

---- TPFUNC Sec 4-D

Configuración de puertos de salida digital para monitoreo de procesos - Sección de declaración

----------------------------------------------------------------------------------
- - - - 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

tmp_xyz :XYZWPR - - Variable XYZWPR para uso temporal


índice :ENTERO - - Usó un contador de bucle FOR
puertos_listos :BOOLEANO - - Comprobar si los puertos están asignados
cmt_str :CADENA[10] - - Cadena de comentario

Configuración de puertos de salida digital para monitoreo de procesos: declaración de rutinas

---------------------------------------------------------------------------------
- - - - 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

puertos_listos = FALSO - - Establecer falso para que los puertos se inicialicen


RETARDO 500;
REINICIAR (reiniciar_ok) - - Restablecer el controlador
SI (NO reset_ok) ENTONCES
ESCRIBIR('Error al Restablecer', RC)
TERMINARA SI

cont_timer = 0 - - Establecer un temporizador para continuar el proceso


HABILITAR CONDICIÓN[CONT_CH] - - Habilitado el CONT_CH que continúa
- - ejecución del programa
FIN init_port

Configuración de puertos de salida digital para monitoreo de procesos: declaración de rutinas

-----------------------------------------------------------------------------------
---- 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

---- y/o modo COMPLEMENTARIO. Cuando los puertos están configurados


---- en modo INVERSO, la condición VERDADERA se representa mediante
---- una señal FALSA. Cuando se selecciona el modo COMPLEMENTARIO
---- para un puerto (puerto de número impar), el puerto n y n+1 son
---- señales complementarias entre sí.
-----------------------------------------------------------------------------------
set_mode(port_type:
RUTINA ENTERO;
port_no: ENTERO;
reverso: BOOLEANO;
queja: BOOLEANO)
VAR
modo: ENTERO
EMPEZAR -- modo de ajuste

SI reverso DESPUÉS

modo = 1 - - Establecer el modo inverso


MÁS
modo = 0
TERMINARA SI

SI quejarse DESPUÉS

modo = modo O 2 - - Establecer modo complementario


ENDIF
SET_PORT_MOD(tipo_puerto, número_puerto, modo, estado)
END set_mode

Configuración de puertos de salida digital para monitoreo de procesos: declaración de rutinas

---------------------------------------------------------------------------------
---- 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

- - Eliminar PUERTOS DE SALIDA DIGITAL 1 a 48 PARA


port_n = 0 a 5 DO
- - La indexación de 0 a 5 puede no ser obvia, pero observe el DIGITAL
- - Pantalla de configuración de SALIDA en TP, verá las 8 SALIDAS DIGITALES
- - los puertos se agrupan en configuración. SET_PORT_ASG(IO_DOUT,
puerto_n*8+1, 0, 0, 0, 0, 0, estado) SI (estado <> ÉXITO) Y (estado <> SIN
ASIGNAR) ENTONCES
- - Verificar que la eliminación por parte de SET_PORT_ASG fue exitosa ESCRIBIR
('Error en SET_PORT_ASG integrado para DOUT (eliminación)',CR)

B-10
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL

ESCRIBIR ('Estado = ',estado,CR) ENDIF

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

Configuración de puertos de salida digital para monitoreo de procesos: declaración de rutinas

- - Establezca los comentarios apropiados para los puertos.


SET_PORT_CMT(IO_DOUT, EQIP_READY, 'Equip-READY', estado) IF (estado <>
0) ENTONCES - - Verificar que SET_PORT_CMT fue exitoso
ESCRIBIR ('Error integrado en SET_PORT_CMT',CR)
ESCRIBIR ('Estado = ',estado,CR)
TERMINARA SI

SET_PORT_CMT(IO_DOUT, EQIP_NOT_RD, 'E - NO LISTO', estado) SI (estado <>


0) ENTONCES - - Verificar que SET_PORT_CMT fue exitoso
ESCRIBIR ('Error integrado en SET_PORT_CMT',CR)
ESCRIBIR ('Estado = ',estado,CR)
TERMINARA SI

SET_PORT_CMT(IO_DOUT, EQIP_ERROR, 'Equipo-ERROR', estado) SI (estado


<> 0) ENTONCES - - Verificar que SET_PORT_CMT fue exitoso
ESCRIBIR ('Error integrado en SET_PORT_CMT',CR)
ESCRIBIR ('Estado = ',estado,CR)
TERMINARA SI

SET_PORT_CMT(IO_DOUT, EQIP_FIXED, 'Equip- FIJO', estado)

B-11
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H

SI (estado <> 0) ENTONCES - - Verificar que SET_PORT_CMT fue exitoso


ESCRIBIR ('Error integrado en SET_PORT_CMT',CR)
ESCRIBIR ('Estado = ',estado,CR)
TERMINARA SI

SET_PORT_CMT(IO_DOUT, EQIP_ON, 'Equipo-ON', estado) IF (estado


<> 0) ENTONCES - - Verificar que SET_PORT_CMT fue exitoso
ESCRIBIR ('Error integrado en SET_PORT_CMT',CR)
ESCRIBIR ('Estado = ',estado,CR)
TERMINARA SI

SET_PORT_CMT(IO_DOUT, EQIP_OFF, 'Equip-OFF', estado) SI (estado <>


0) ENTONCES - - Verificar que SET_PORT_CMT fue exitoso
ESCRIBIR ('Error integrado en SET_PORT_CMT',CR)
ESCRIBIR ('Estado = ',estado,CR)
TERMINARA SI

SET_PORT_CMT(IO_DOUT, NODE_PULSE, 'Pulse @ node', estado) IF (estado


<> 0) ENTONCES - - Verificar que SET_PORT_CMT fue exitoso
ESCRIBIR ('Error integrado en SET_PORT_CMT',CR)
ESCRIBIR ('Estado = ',estado,CR)
TERMINARA SI

SET_PORT_CMT(IO_DOUT, FINISH, 'Finalizar RUTA', estado) IF (estado


<> 0 ) ENTONCES - - Verificar que SET_PORT_CMT fue exitoso
ESCRIBIR ('Error integrado en SET_PORT_CMT',CR)
ESCRIBIR ('Estado = ',estado,CR)
TERMINARA SI

Configuración de puertos de salida digital para monitoreo de procesos: declaración de rutinas

TP_CLS - - borre la pantalla de USUARIO de la consola portátil

ESCRIBIR ('LA CONFIGURACIÓN DEL PUERTO ESTÁ COMPLETA', CR)


WRITE ('EN ESTE PUNTO NECESITA UN ARRANQUE EN FRÍO',CR) WRITE ('Los
cambios de configuración de los PUERTOS no se realizarán',CR) WRITE
('tendrá efecto hasta después de un ARRANQUE EN FRÍO',CR,CR) WRITE
('Una vez que el controlador está listo después de', CR)
ESCRIBIR ('ARRANQUE EN FRÍO, volver a cargar este programa', CR) ESCRIBIR
('volver a ejecutar.', CR)

puertos_listos = VERDADERO - - Configure la variable ports_ready para que la reejecución de


- - esta rutina, setup_ports, no se realiza.
- - Cancelación del programa para permitir el arranque en frío.
ABORTAR
FIN setup_ports
----------------------------------------------------------------------------------
---- Sección 3-E: Rutina de interrupción SERVICE_RTN Declaración Esta rutina
---- espera hasta que el equipo haya sido reparado y luego mueve
---- el robot de regreso a donde

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

Configuración de puertos de salida digital para monitoreo de procesos: declaración de rutinas

- - Ir al punto donde se detuvo el proceso SET_EPOS_REG(1,


stop_pos, status)
move_to_pr -- Llame al programa TP para moverse a PR[1]
- - Habilite el controlador de condiciones SERVICIO HECHO para reanudar el proceso.
HABILITAR CONDICIÓN[SERV_DONE]
- - Esperar un tiempo suficiente para permitir que el equipo se caliente y esté listo para
- - procesamiento después de que se complete la
corrección. ESCRIBIR ('Continuando el proceso...',CR)
DEMORA 2000

- - Señal de que el equipo ya está listo.


DOUT[EQIP_READY] = VERDADERO

- - Forzar la consola de programación de regreso a la pantalla IO


FORCE_SPMENU(tp_panel, SPI_TPDIGIO, 1)
FIN service_rtn
----------------------------------------------------------------------------------
---- Sección 3-F: Las rutinas frst_nod, mid_nods y end_nod son rutinas TP para
---- realizar movimientos con cláusulas Time Before
-----------------------------------------------------------------------------------
RUTINA frst_nod DESDE frst_nod - - También se debe cargar frst_nod.

B–13
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H

–– 1:L PR[1] 100 mm/seg CNT100 TB 2:L 0.00seg,DO[1:NODE_PULSE]=PULSO,1.0seg ;


-- PR[1] 100 mm/seg CNT100 TB 0.00seg,DO[2:EQUIP_ON]=PULSO,2.0seg ;
RUTINA mid_nods DESDE mid_nods - - Mid_nods también debe cargarse. 0,00 s,
- - 1:LP[1] 100 mm/seg CNT100 TB RUTINA DO[1:NODO_PULSO]=PULSO, 1,0 s ;
end_nod DESDE end_nod - - End_nod también debe cargarse.
-- 1:LP[1] 100 mm/s FINE TB 2:LP[1] . 20 seg, HACER[3:FINALIZAR]=ON; 0,00 s,
-- 100 mm/s FINE TB DO[1:NODO_PULSO]=PULSO, 1,0 s ;

Configuración de puertos de salida digital para monitoreo de procesos - Principal

-----------------------------------------------------------------------------------
- - - - 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

init_port - - Permitir que se inicialicen los puertos.


CONDICIÓN FINAL
HABILITAR CONDICIÓN[UNINIT_CH]
CONECTAR TEMPORIZADOR a cont_timer
CONDICIÓN [CONT_CH]:
CUANDO cont_timer > 1000 DO
SEGUIR
CONDICIÓN FINAL

Configuración de puertos de salida digital para monitoreo de procesos - Principal

-----------------------------------------------------------------------------------
- - - - 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

- - Establecer posición de percha


- - Esta posición se utiliza en la rutina service_rtn IF
UNINIT(perch_pos) THEN

WRITE ('La POSICIÓN DE PERCHA no está registrada.',cr) WRITE


('LIBERANDO el control de movimiento a TP.',cr) WRITE ('Por favor,
mueva el robot a la posición de percha deseada',cr)
- - Esperar hasta que el interruptor DEADMAN esté en MANTENIMIENTO y
- - TP se ENCIENDE para mover el robot desde TP. MIENTRAS
((TPIN[248] = ON) Y (TPIN[247] = ON)) HACER
WRITE TPPROMPT(CHR(128),CHR(137),'Mantenga pulsado el interruptor DEAD-MAN')
DELAY 500
ENTREVISTA
- - Liberar el control de movimiento del programa KAREL al
- - Control TP. El robot se puede mover a la posición deseada
- - posición sin perturbar el flujo de esta tarea KAREL. LIBERAR

MIENTRAS (TPIN[249] = APAGADO) HACER


ESCRIBIR TPPROMPT(CHR(128),CHR(137),'Activar TP') DEMORA 1000

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

Configuración de puertos de salida digital para monitoreo de procesos - Principal

- - La ejecución del programa KAREL no continuará superado ADJUNTAR


- - declaración hasta que el TP se apaga.
- - Espere hasta que el TP se APAGUE después de completar el movimiento desde el TP.
MIENTRAS (TPIN[249] = ON ) HACER
RETRASO 2000
ENTREVISTA
- - En este punto, el robot se coloca en la posición deseada
- - Posición de percha. Obtener el movimiento
- - control de regreso desde TP y registro de la posición de la percha.
ADJUNTAR
perch_pos = CURPOS(0,0,1) ENDIF

----------------------------------------------------------------------------------
- - - - 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

- - Defina un manejador de condiciones para atrapar fallas en el equipo.


- - Si el equipo falla durante el proceso, entonces el DOUT[EQIP_ERROR] es
- - establecido en VERDADERO. Lo cual detendrá el movimiento y requerirá que el equipo sea
- - fijo antes de que se pueda reanudar el movimiento.
CONDICIÓN[EQIP_FAIL]:
CUANDO DALE[EQIP_ERROR] HACER

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

Configuración de puertos de salida digital para monitoreo de procesos - Principal

- - Defina un manejador de condiciones para monitorear cuando se complete el calentamiento, luego


- - reanudar el movimiento detenido y continuar el proceso. También volver a habilitar
- - el controlador de condición EQIP_FAIL para continuar monitoreando el equipo
- - falla.
CONDICIÓN[REINICIO]:
CUANDO EVENTO[WARMED_UP] HACER

REANUDAR

HABILITAR CONDICIÓN[EQIP_FAIL]
CONDICIÓN FINAL
----------------------------------------------------------------------------------

B–16
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL

---- Sección 4-D: Manipulación de procesos


----------------------------------------------------------------------------------
- - Usando el PATH_LEN incorporado, descubra el último nodo de la ruta last_node =
PATH_LEN (pth1)
- - Configuración de los puertos numéricos EQIP_ERROR/EQIP_FIXED a simular.
- - Esta configuración no requiere arranque en frío, puede cambiar el puerto para ser
- - simulado sobre la marcha. SET_PORT_SIM(io_dout,
NODE_PULSE, 1, estado) SI (estado <> ÉXITO) ENTONCES

ESCRIBIR ('Error en SET_PORT_SIM en el puerto', indx, CR)


ESCRIBIR ('Con estado = ', estado, CR)
TERMINARA SI

SET_PORT_SIM(io_dout, FINALIZAR, 1, estado) SI


(estado <> ÉXITO) ENTONCES
ESCRIBIR ('Error en SET_PORT_SIM en el puerto', indx, CR)
ESCRIBIR ('Con estado = ', estado, CR)
TERMINARA SI

Configuración de puertos de salida digital para monitoreo de procesos - Principal

WRITE (' AHORA VERÁ EL DOUT[',NODE_PULSE,'] PULSE',CR) WRITE (' mientras el


robot se mueve a través de cada nodo.',CR,CR)
ESCRIBIR (' Para simular la falla del EQUIPO, cambie ',CR) ESCRIBIR ('
DOUT[',EQIP_ERROR,'] = TRUE. ',CR)
ESCRIBIR (' Presione ''ENTER'' para continuar', CR) LEER
(CR)
- - Cambiar la pantalla TP a la pantalla DI/O
FORCE_SPMENU(tp_panel, SPI_TPDIGIO, 1)
- - Moviéndose a lo largo del camino cuando el equipo está listo.
- - Necesidad de encender el equipo-1 durante 1/2 segundo cuando la posición del robot
- - está en el primer nodo. Pulse el DOUT[NODE_PULSE] para cada nodo
- - Encienda DOUT[FINISH] unos 200 ms antes del último nodo. SI NO[EQIP_LISTO]
ENTONCES
tmp_xyz = pth1[1] -- Convierte el nodo de ruta a XYZWPR SET_POS_REG(1,
tmp_xyz, status) -- Coloca la posición en PR[1] frst_nod -- Llama al programa
TP para realizar el movimiento
FOR node_ind = 2 TO (last_node - 1) DO
tmp_xyz = pth1[ind_nodo]
SET_POS_REG(1, tmp_xyz, estado)
mid_nods
ENDFOR
tmp_xyz = pth1[último_nodo]
SET_POS_REG(1, tmp_xyz, estado)
end_nod
MÁS
FORCE_SPMENU(TP_PANEL,SPI_TPUSER,1)

B–17
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H

WRITE ('El equipo no está LISTO',CR) WRITE ('Ponga el equipo


en MODO LISTO',CR) WRITE ('antes de ejecutar este
programa.',CR) WRITE ('SET DOUT[',EQIP_READY,'] = TRUE
' ,CR) ABORTAR

TERMINARA SI

ESCRIBIR TPFFUN (CHR(128),CHR(137)) -- Cursor de inicio y borrar hasta el final de la línea


- - Esto eliminará el ABORT mostrado
- - por encima de F1.
FIN DOUT_EX

B.2 COPIAR VARIABLES DE RUTA

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.

Programa de variables de ruta de copia: descripción general

------------------------------------------------------------------------------------
- - - - 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

---- INCLUIR segundo

Programa de variables de ruta de copia: descripción general y sección de declaración

---- Funciones y procedimientos integrados:


---- APPEND_NODE Segundo 4-D
---- POR NOMBRE Segundo 4-E
---- CALL_PROG Segundo 4-B
---- COPY_PATH Segundo 3-C; 4-D
---- CNV_INT_STR Segundo 4-E
---- CREAR_VAR Segundo 4-E
---- CURSOS Segundo 4-B
---- ELIMINAR NODO Segundo 4-C
---- CARGA Segundo 4-B
---- PATH_LEN Segundo 4-C,E
---- PROG_LISTA Segundo 4-B
---- LEER_KB Segundo 3-B
---- SET_CURSOR Segundo 4-E
---- SET_FILE_ATR Segundo 4-A
---- SET_POS_REG Segundo 4-D
---- SET_VAR Segundo 4-B
---- SUB_STR Segundo 4-E
---- VAR_LIST Segundo 4-E
---- Declaraciones:
---- ABORTAR Segundo 4-C,E
---- CERRAR EL ARCHIVO Segundo 4-E
---- PARA .... FIN PARA Segundo 3-C; 4-C,D,E
---- SI... ENTONCES... ENDIF Segundo 3-B,C; 4-B,C,D,E
---- ABRIR DOCUMENTO Segundo 4-A
---- REPETIR HASTA Segundo 3-B; 4-E
---- RUTINA Segundo 3
---- ESCRIBE Segundo 3-B,C; 4-A,B,C,E
---- UTILIZANDO... UTILIZANDO Segundo 4-D
---- Reservar Palabra:
---- EMPEZAR Segundo 3-B,C; 4
---- FINAL Segundo 3-B,C; 4-E
---- PROGRAMA Segundo 1
---- ESCRIBE Segundo 2
---- VAR Segundo 2
---- Nombres de archivo predefinidos:
---- CRTFFUN Segundo 3-B
---- CRTPROMPT Segundo 3-B,C
------------------------------------------------------------------------------------
- - - - Sección 1: Programa y Declaración Ambiental
------------------------------------------------------------------------------------
PROGRAMA CPY_PTH

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

Programa de variables de ruta de copia - Sección de declaración

------------------------------------------------------------------------------------
- - - - Sección 2: Declaraciones de constantes, variables y tipos
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CONST

ÉXITO = 0: el valor devuelto por todos los integrados cuando se realiza correctamente
ESCRIBE

estructura_nodo = ESTRUCTURA - - Crear una estructura de nodo definida por el usuario


posn_dat :XYZWPR
ESTRUCTURA FINAL
ruta_usuario = PATH nodedata = node_struc - - Crear una ruta definida por el usuario
VAR
pth1,
pth2,
pth3
pth4 :SENDERO - - Estos son PATH definidos por el sistema
upth1,
upth2,
upth3,
upth4 :ruta_usuario - - Estos son PATH definidos por el usuario

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

Programa de copia de variables de ruta: almacenamiento de variables en la memoria

- - Almacene las siguientes variables en DRAM, que es memoria temporal indx


EN DRACMA :ENTERO
prog_name EN DRACMA :CADENA[10]
tipo_prog EN DRACMA :ENTERO
n_coincidencia EN DRACMA :ENTERO
n_saltar EN DRACMA :ENTERO
formato EN DRACMA :ENTERO
ary_nam EN DRACMA :ARRAY[5] DE
prog_indx EN DRACMA CADENA[20] :INTEGER
hacer_copiar EN DRACMA :BOOLEANO
crt_kb EN DRACMA :EXPEDIENTE

%INCLUIR KLEVKMSK - - archivo proporcionado por el sistema: definición de KC_FUNC_KEY


%INCLUIR TECLAS KLEV - - archivo suministrado por el sistema: definición de KY_F1 y KY_F2

Copiar programa de variables de ruta - Supervisar la respuesta del usuario

------------------------------------------------------------------------------------
- - - - 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

LEER_KB (crt_kb, str, 0, 0, kc_func_key, -1,


'', n_chars, key_press, l_status)
- - key_press debe convertirse de un carácter CRT "en bruto" a la enseñanza
- - colgante carácter equivalente.g key_press =
$CRT_KEY_TBL[key_press+1]
IF (key_press = ky_f1) THEN -- El usuario presionó F1
F1_presionar = verdadero
TERMINARA SI

IF (key_press = ky_f2) THEN -- El usuario presionó F2


F2_presionar = verdadero
TERMINARA SI

HASTA ((f1_presionar = VERDADERO) O (F2_presionar = VERDADERO))


ESCRIBIR CRTFUNC (CHR(128),CHR(137)) - - - Borrar ventana, cursor de inicio
ESCRIBIR CRTPROMPT (CHR(128),CHR(137)) - - - Borrar ventana, cursor de inicio
FIN SÍ_NO

Programa Copiar Variables de Ruta - Copiar Variables de Ruta

------------------------------------------------------------------------------------
- - - - 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

ESCRIBE ('Llevar a cabo ¿copiar?', CR)


sí No
do_it = F1_press -- F1_press será verdadero solo si el usuario seleccionó

SI (hazlo entonces
- - Copie la ruta completa de src_path a des_path COPY_PATH
(src_path, 0,0, des_path, l_stat)
SI (l_stat <> 0) ENTONCES
ESCRIBIR ('Error en COPY_PATH', l_stat, CR) ELSE

WRITE ('Función de copia de ruta completada',cr) ENDIF

MÁS

B–22
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL

WRITE ('Función de copia de ruta cancelada por elección',cr,cr) ENDIF

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

do_copy = F1_press -- F1_press es verdadero solo si el usuario lo seleccionó


B–23
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H

- - Copiar sin guardar variables.


TERMINARA SI

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

do_copy = F1_press -- F1_press es verdadero solo si el usuario lo seleccionó



TERMINARA SI - - Copiar sin guardar variables.
TERMINARA SI

Programa de copia de variables de ruta: inicialización de ruta de cheques

SI (estado = ÉXITO) ENTONCES


- - Esta es una forma de establecer variables dentro de otro programa sin
- - utilizando la cláusula FROM en la sección de variables.
- - Es muy útil si desea tener un código independiente en tiempo de ejecución,
- - donde el programa o el nombre de la variable que está configurando no es
- - conocido hasta el tiempo de
ejecución. cur_name = CURR_PROG
SET_VAR (entrada, prog_name, 'del_vr', TRUE, estado) SET_VAR (entrada,
prog_name, 'prog_name',cur_name, estado) SET_VAR (entrada, prog_name,
'sav_type', 1, estado)
SET_VAR (entrada, prog_name, 'dev', 'FLPY:', estado) WRITE
('Guardando variables de programa antes de copiar', CR)
CALL_PROG(prog_name,prog_indx) -- llamar a SAVE_VRS ENDIF

---------------------------------------------------------------------------------
- - - - 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

ESCRIBIR ('Comprobando la inicialización de la variable',cr)


- - Comprobar si las variables pth están inicializadas. p1_len =
RUTA_LEN(pth1) ; p2_len = PATH_LEN(pth2) SI ( (p1_len = 0) O
(p2_len = 0) )ENTONCES
ESCRIBE ('PTH1 o PTH2 es una ruta vacía',cr)
ESCRIBE ('Asegúrese de que se enseñen ambas rutas y luego reinicie', cr)

B-24
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL

ABORT: no se pueden copiar variables no inicializadas.


TERMINARA SI
- - Comprobar si la variable pth3 está inicializada. SI
(RUTA_LEN(pth3) <> 0) ENTONCES
ESCRIBIR ('Eliminar nodos de pth3',cr) -- Eliminar la ruta anterior de pth3 FOR indx =
PATH_LEN(pth3) DOWNTO 1 DO
- - es fácil eliminar nodos del final en lugar de eliminar nodos de
- - la parte delantera. Ya que después de cada borrado se renumeran los nodos.
DELETE_NODE(pth3, indx, status) -- Elimina el último nodo de pth3
SI estado <> ÉXITO ENTONCES
ESCRIBIR ('Al eliminar', indx, ' nodo', cr)
ESCRIBIR ('DELETE_NODE fallido: Estado = ',status,cr) ENDIF

ENDFOR
TERMINARA SI

Copiar programa de variables de ruta - Inicialización de ruta

-----------------------------------------------------------------------------------
---- 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

- - Cree el número necesario de nodos para pth3.


- - Sabemos que pth3 ahora tiene nodos PATH_LEN(pth3). ESCRIBIR
('Agregando nodos a pth3',cr)
FOR indx = p1_len+1 TO total_node DO -- Agrega el número correcto de nodos.
APPEND_NODE(pth3, estado) SI
(estado <> 0) ENTONCES
ESCRIBIR ('Al agregar', indx, ' nodo', cr)
ESCRIBIR ('APPEND_NODE sin éxito: Estado = ',status,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

ESCRIBIR ('ERROR en COPY_PATH', estado, CR)


ENDIF--- Muévase a lo largo de pth4 que es un orden inverso de pth3.
ESCRIBIR ('Moviéndose a lo largo de la ruta pth4',cr)
PARA node_ind = 1 A PATH_LEN (pth4) HACER
tmp_xyz = pth4[ind_nodo]
SET_POS_REG(1, tmp_xyz, estado)
move_to_pr -- Llame al programa TP para moverse a PR[1]
ENDFOR

Copiar programa de variables de ruta - Copiar rutas definidas por el usuario

-----------------------------------------------------------------------------------
---- 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

FOR indx = 1 TO n_match DO


IF (SUB_STR (ary_nam[indx], 1, 4) = 'UPTH') THEN -- Verifique que sea uno de
- - las rutas definidas por el usuario
ESCRIBIR (nombre_ario[indx], CR)
ENDIF
ENDFOR
n_skip = n_skip + n_match HASTA (n_match <
ARRAY_LEN(ary_nam)) Write ('Ingrese el número de
ruta de origen:')
LEER(núm_origen);
Escribir ('Ingrese el número de la ruta de destino:')
LEER(núm_des);
CNV_INT_STR(src_num,2,0,dummy_str) - - Convertir número de fuente a cadena
src_var = 'UPTH'+ SUB_STR(dummy_str,2,1) -- SUB_STR eliminará el encabezado
- - en blanco de dummy_str antes
- - concatenando para crear el
tipo_var = 0 - - nombre de la variable fuente
VAR_LIST ('CPY_PTH', src_var, var_type, 0, 2, ary_nam, n_match, status) SI (estado <> ÉXITO)
ENTONCES
ESCRIBIR ('Var_list fallida para src_var: estado', estado, cr) ENDIF

Copiar programa de variables de ruta - Copiar rutas definidas por el usuario (continuación)

- - Si la variable no existe créela. SI (n_coincidencia = 0)


ENTONCES
CREATE_VAR ('', src_var, '', 'USER_RUTA', 1, 0, 0, 0, estado, mem_loc) SI (estado <> ÉXITO)
ENTONCES
ESCRIBIR ('Error al crear', src_var, ':', estado, cr) ENDIF

TERMINARA SI

- - Crear el nombre de la variable de destino


CNV_INT_STR(des_num,2,0,dummy_str) - - Convertir des_num a una cadena
des_var = 'UPTH'+ SUB_STR(dummy_str,2,1)-- SUB_STR eliminará el encabezado
- - en blanco de dummy_str antes
- - concatenando para crear el
- - nombre de la variable fuente
- - Verifique que exista la variable des_var.
VAR_LIST ('CPY_PTH', des_var, var_type, 0, 2, ary_nam, n_match, status) SI (estado <> ÉXITO)
ENTONCES
WRITE ('Var_list fallida para des_vr: estado', estado, cr) ENDIF

- - Si la variable no existe créela. SI (n_coincidencia = 0)


ENTONCES
CREATE_VAR ('', des_var, '', 'RUTA_USUARIO', 1, 0, 0, 0, estado, mem_loc) SI (estado <> ÉXITO)
ENTONCES

B-27
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H

ESCRIBIR ('Error al crear', des_var, ':', estado, cr) ENDIF

TERMINARA SI

- - Copie la ruta de origen especificada a la ruta de destino especificada


pth_cpy(BYNAME('', src_var, indx), BYNAME('', des_var, indx) )
- - Cerrar archivo antes de salir CERRAR
ARCHIVO crt_kb
ESCRIBIR ('CPY_PTH ejemplo completado',cr) END
CPY_PTH

B.3 GUARDAR DATOS EN EL DISPOSITIVO POR DEFECTO

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.

Programa de ahorro de datos - Descripción general

-----------------------------------------------------------------------------------
- - - - 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

---- EMPEZAR Segundo 4


---- CONSTITUCIÓN Segundo 2
---- RC Segundo 4-B
---- FINAL Segundo 4-B
---- PROGRAMA Segundo 1
---- VAR Segundo 2

Programa de Ahorro de Datos - Sección Declaraciones

--------------------------------------------------------------------------------
- - - - 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
--------------------------------------------------------------------------------

Guardar Programa de Datos - Crear Especificación de Archivo

--------------------------------------------------------------------------------
- - - - 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

Guardar Programa de Datos - Borrar/Sobrescribir

---------------------------------------------------------------------------------
---- 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

- - Si prog_name se especifica como un '*' para archivos .tp o .vr, entonces


- - el SAVE incorporado guardará los archivos/programas apropiados con el
- - nombres correctos.
GUARDAR (prog_name, file_spec, status) -- Guardar la variable/programa SI (estado <>
ÉXITO) ENTONCES - - Verifique que GUARDAR haya sido exitoso
ESCRIBIR ('error al guardar', file_spec, 'variables', estado, cr) ENDIF

B–30
Traducido del inglés al español - www.onlinedoctranslator.com

MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL

FIN DE GUARDAR_VRS

B.4 RUTINAS ESTÁNDAR

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:

• CRT_CLS Borra la pantalla del menú de usuario de CRT/KB

• TP_CLS Borra la pantalla de menú de USUARIO de la consola portátil

Rutinas estándar - Descripción general

-------------------------------------------------------------------------------
- - - - 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

Rutinas estándar - Sección de declaración

----------------------------------------------------------------------------
- - - - 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

Rutinas estándar: borra la pantalla y muestra el menú

-----------------------------------------------------------------------------
- - - - 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

WRITE (CHR(128),CHR(137)) -- De forma predeterminada, esto borrará TPDISPLAY WRITE


TPERROR(CR,' CR)
ESCRIBE ESTADOTP(CR,' CR)
ESCRIBE TPPROMPT(CR,' CR)
ESCRIBE TPFUNC (CR,' CR)
FORCE_SPMENU(TP_PANEL,SPI_TPUSER,1) -- Fuerza la pantalla del menú de USUARIO
- - ser visible en último lugar.
- - Esto evitará que la pantalla
- - parpadeando ya que la pantalla
- - sé limpio cuando lo veas.
FIN TP_CLS
-----------------------------------------------------------------------------
- - - - Sección 4: Programa principal
----------------------------------------------------------------------------
EMPEZAR- - RUTA_EX
FINAL RUTA_EX

B.5 USO DEL REGISTRO INCORPORADO

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].

Después de completar PROG_VAL, REG_EX.KL recupera la posición PR[1]. Luego, la posición se


manipula y restaura en PR[2], y se almacena un número INTEGER en R[1]. Se ejecuta un programa
colgante diferente, PROG_1.TP, que recorre algunas posiciones y almacena un valor en R[2]. El
número de bucles depende del valor de R[1] (que fue establecido inicialmente por el programa
KAREL).

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.

PROG_VAL CONJUNTO 10%

1: !VALOR DE REGISTRO DE POSICIÓN ;


2:JP[1:ARRIBA DE LA JUNTA] 100% FINO; 3:
PR[1,2]=600 ;
4:L PR[1] 100,0 pulgadas/mm FINO;
5:JP[1:ARRIBA DE LA JUNTA]100% FINO;

El programa colgante de aprendizaje PROG_VAL.TP hace lo siguiente:

B-33
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H

• Se mueve a la posición 1 en modo conjunto.

• 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).

• Se mueve a la nueva posición PR[1].

• Finalmente vuelve a la posición 1.

El programa del colgante de enseñanza PROG_1.TP debería ser similar al siguiente.

PROG_1 CONJUNTO 10%

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 ;

El programa de consola portátil PROG_1.TP hace lo siguiente:

• Comprueba el valor de R[1].

• Si el valor de R[1] no es 0, se mueve a JP[1] y JP[2] y disminuye el valor de R[1]. PROG_1.TP


continúa en este ciclo hasta que el Registro R[1] es cero.
• Una vez que se completa el ciclo, PROG_1.TP almacena el valor 1 en R[2], que será verificado por
el programa KAREL.

Uso del programa integrado de registro: descripción general

--------------------------------------------------------------------------------
- - - - 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

---- Funciones y procedimientos integrados:


---- CALL_PROGLIN Segundo 4-A, 4-C
---- CDH Segundo 4
---- CURSOS Segundo 4-A
---- FORCE_SPMENÚ Segundo 4
---- GET_POS_REG Segundo 4-B
---- GET_JPOS_REG Segundo 4-B
---- OBTENER_REG Segundo 4-C
---- POS_REG_TYP Segundo 4-B
---- SET_JPOS_REG Segundo 4-B
---- SET_INT_REG Segundo 4-B
---- SET_POS_REG Segundo 4-A
---- Declaraciones:
---- ESCRIBE Segundo 4, 4-A,B,C
---- SI..ENTONCES..ELSE..ENDIF Segundo 4-A,B,C
---- SELECCIONAR... CASO... FIN SELECCIONAR Segundo 4-B
---- Reserva de palabras:
---- EMPEZAR Segundo 4
---- CONSTITUCIÓN Segundo 2
---- RC Segundo 4-A,B,C
---- FINAL Segundo 4-C
---- PROGRAMA Segundo 4
---- VAR Segundo 2

Uso del programa integrado de registro: sección de declaración

-------------------------------------------------------------------------------
- - - - 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

Uso de registros incorporados: almacenamiento y manipulación de posiciones

----------------------------------------------------------------------------------
- - - - 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

MÁS - - GET_REG NO tuvo éxito


ESCRIBIR('Error en GET_REG',cr,' Estado = ',estado,cr) ENDIF

MÁS - - SET_INT_REG NO fue exitoso


ESCRIBIR('Error en SET_INT_REG, Estado = ',estado,cr)

B–37
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H

TERMINARA SI

MÁS - - SET_JPOS_REG NO fue exitoso


ESCRIBIR('Error en SET_JPOS_REG, Estado = ',estado,cr) ENDIF

MÁS - - GET_POS_REG NO fue exitoso


ESCRIBIR('Error en GET_POS_REG, Estado = ',estado,cr) ENDIF

MÁS
ESCRIBIR ('POS_REG_TYPE Error, Estado =', estado, cr) ENDIF

MÁS - - SET_POS_REG NO fue exitoso


ESCRIBIR('Error en SET_POS_REG, Estado = ',status,cr) ENDIF

SI (estado = cc_éxito) ENTONCES; ESCRIBIR ('Programa completado con


éxito',cr)
MÁS ; ESCRIBIR ('Programa cancelado debido a un error',cr)
TERMINARA SI

FIN reg_ex

B.6 PROGRAMA DE CONTROLADORES DE CONDICIONES Y VARIABLES DE RUTA

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.

Este ejemplo también configura dos controladores de condiciones globales.

• El primer manejador de condiciones detecta si el usuario ha presionado una tecla de programación y, de ser así, aborta el
programa.

• El segundo controlador de condiciones establece una variable cuando se aborta el programa.

Programa de manejadores de condiciones y variables de ruta: descripción general

---------------------------------------------------------------------------
- - - - PTH_MOVE.Kl
---------------------------------------------------------------------------
---------------------------------------------------------------------------
- - - - Sección 0: Detalle sobre PTH_MOVE.kl
---------------------------------------------------------------------------
- - - - Elementos de KAREL Idioma cubierto: En la sección:
---- Comportamiento:

---- ABORTAR Segundo 4-A


---- Cláusulas:
---- CUANDO Segundo 4-A
---- DE Segundo 3-A
---- Condiciones:

B–38
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL

---- ABORTAR Segundo 4-A


---- Datos tipos:
---- FORMACIÓN DE REAL Segundo 2
---- BOOLEANO Segundo 2
---- ENTERO Segundo 2
---- CONJUNTOPOS6 Segundo 2
---- SENDERO Segundo 2
---- XYZWPR Segundo 2
---- Directivas:
---- ALFABETIZAR Segundo 1
---- COMENTARIO Segundo 1
---- AMBIENTE Segundo 1
---- Funciones y procedimientos integrados:
---- PATH_LEN Segundo 4-C
---- CDH Segundo 3-B; 4-B,D
---- CNV_REL_JPOS Segundo 4-D
---- SET_CURSOR Segundo 4-B
---- SET_POS_REG 4-D

Programa Controladores de condiciones y variables de ruta: descripción general (continuación)

---- 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

Programa de manejadores de condiciones y variables de ruta - Sección de declaración

------------------------------------------------------------------------------------
- - - - Sección 1: Programa y Declaración Ambiental
------------------------------------------------------------------------------------

B–39
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H

PROGRAMA PTH_MOVE - - Definir el nombre del programa


%ALFABETIZAR - - Crear las variables en orden alfabético
%COMENTARIO = 'RUTA SE MUEVE
% RUTA AMBIENTAL - - Necesario para PATH_LEN
%UIF DEL MEDIO AMBIENTE - - Necesario para SET_CURSOR
------------------------------------------------------------------------------------
- - - - Sección 2: Declaraciones de constantes y variables
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CONST

CH_ABORT =1 - - Número asociado al


- - abortar Manejador de condiciones
CH_F1 =2 - - Número asociado al
- - Tecla F1 Manejador de condiciones
VAR
estado :ENTERO - - Estado de las llamadas integradas
nodo_ind :ENTERO - - Índice utilizado al moverse a lo largo de la ruta
loop_pth :ENTERO - - Utilizado en un contador de bucle FOR
prg_abrt :BOOLEANO - - Establecer cuando se aborta el programa
pth1 :SENDERO

strt_jnt :JOINTPOS6 - - Posición inicial de un movimiento


via_pos :XYZWPR - - Punto vía para un movimiento circular
des_pos :XYZWPR - - punto de destino
tmp_xyz :XYZWPR - - XYZWPR temporal
real_ario :ARRAY[6] DE REALES - - Esto se utiliza para crear
- - una posición conjunta con 6 ejes
índice :ENTERO - - Contador de bucle FOR

Programa de manejadores de condiciones y variables de ruta: declaración de rutinas

------------------------------------------------------------------------------------
- - - - 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

ESCRIBIR TPFUNC (CHR(137)) - - Cursor de inicio en la ventana de función


ESCRIBIR TPFUNC (' ABORTAR CONT') - - Mostrar opciones de teclas de función
ESPERAR TPIN[131] - - Esperar a que el usuario responda
- - Seguir. Si el usuario presiona
- - Manejador de condición F1 (abortar)
- - CH_ABORT cancelará el programa.
ESCRIBIR TPFUNC (CHR(137)) ESCRIBIR - - Cursor de inicio en la ventana de función
TPFUNC ('ABORTAR',chr(129)) - - Vuelva a mostrar solo la opción Abortar y
- - borrar el resto de la ventana de función
FIN SÍ_NO
----------------------------------------------------------------------------------
---- Sección 3-C: Las rutinas move_to_pr y move_circ 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 move_circ
DESDE move_circ - - move_circ también debe cargarse.
-- 1:C PR[1]
-- : PR[2] 100 mm/seg FINO ;

Variables de ruta y programa de manejadores de condiciones - Declarar manejadores de condiciones

-----------------------------------------------------------------------------------
- - - - 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

- - - Escriba el encabezado en el video INVERSO, luego desactive el video inverso


ESCRIBIR (chr(139),' FAVOR DE LEER ',chr(143),CR)
WRITE (cr,' *** La tecla F1 está etiquetada como tecla ABORT *** ') WRITE (cr,'
Cada vez que se presiona la tecla F1, el programa') WRITE (cr,' se cancelará.
Sin embargo, la tecla F2 es active ') WRITE (cr,' solo cuando la tecla de función
está etiquetada.',cr,cr) YES_NO -- Espere la respuesta del usuario

Programa de manejadores de condiciones y variables de ruta - Enseñar y moverse a lo largo de la ruta

----------------------------------------------------------------------------------
- - - - 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

MÁS - - La conversión de la posición conjunta fue


- - exitoso.
- - La posición de inicio, strt_jnt, se ha creado y se encuentra en
- - ejes 1-4 = 0,0, ejes 5 = 90,0, ejes 6 = 0,0. vía_pos = strt_jnt
- - Copie el strt_jnt a via_pos
via_pos.x = via_pos.x +200 - - Agregar compensación a la ubicación x
via_pos.y = via_pos.y +200 - - Agregar compensación a la ubicación y
- - La posición via, via_pos, ha sido creada para ser la misma posición
- - como strt_jnt excepto que ha sido desplazado en las ubicaciones x e y por
- - 200 mm.
des_pos = strt_jnt - - Copie el strt_jnt a des_pos
des_pos.x = des_pos.x + 400 - - Agregar compensación a la ubicación x
- - La posición de destino, des_pos, se ha creado para que sea la misma
- - posición como strt_jnt excepto que se ha desplazado en la ubicación x por
- - 400 mm.

Programa Controladores de condiciones y variables de ruta - Mover a lo largo de la ruta

tmp_xyz = strt_jnt - - Convertir la posición de inicio a XYZWPR


SET_POS_REG(1, tmp_xyz, status) -- Poner la posición inicial en PR[1] move_to_pr
- - Llamar programa TP para pasar a PR[1]
tmp_xyz = des_pos - - Convertir posición de destino a XYZWPR
SET_POS_REG(1, tmp_xyz, status) -- Poner la posición de destino en PR[1] tmp_xyz = via_pos
- - Convertir vía posición a XYZWPR
SET_POS_REG(2, tmp_xyz, status) -- Poner a través de la posición en PR[2] WRITE
(cr,'Movimiento circular a la posición de destino',cr) move_circ
- - Llame al programa TP para
- - Mover robot a destino
- - posición con movimiento circular
- - a través de via_pos
TERMINARA SI

- - - Ejecutar la misma ruta 5 veces. PARA loop_pth =


1 A 5 HACER
ESCRIBIR ('Moviéndose a lo largo de pth1',loop_pth::2, 'veces',cr)
- - Mostrar la iteración del bucle
- - AVISO: que "loop_pth::2" hará que se muestren 2 espacios en blanco
- - mostrado después de "pth1 '" y antes de loop_pth.
PARA node_ind = 1 A PATH_LEN (pth1) HACER
tmp_xyz = pth1[ind_nodo]
SET_POS_REG(1, tmp_xyz, estado)
move_to_pr
ENDFOR
ENDFOR
ESCRIBIR TPFFUN (CHR(128),CHR(137)) -- Cursor de Inicio y Borrar para
- - Fin de la línea. Esta voluntad retirar
- - el ABORT mostrado encima de F1.

B-43
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H

ESCRIBIR ('pth_move Completado con Éxito',cr) END


PTH_MOVE

B.7 LISTADO DE ARCHIVOS Y PROGRAMAS Y MANIPULACIÓN DE


CADENAS

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.

Listado de archivos y programas y manipulación de cadenas: descripción general

------------------------------------------------------------------------------------
- - - - 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

Listado de archivos y programas y manipulación de cadenas: descripción general, continuación

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 '+'
----

Listado de archivos y programas y manipulación de cadenas - Sección de declaraciones

------------------------------------------------------------------------------------
- - - - 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

inicio :BOOLEANO - - Se usa para ver si las variables se inicializaron


indx1 :ENTERO - - Índice de bucle FOR
casos, - - Número aleatorio devuelto
max_number, - - Número aleatorio máximo
semilla :ENTERO - - Semilla para generar un número aleatorio
file_spec :STRING[20] -- Especificación de archivo para
n_archivos FILE_LIST :INTEGER - - Número de archivos devueltos de FILE_LIST
n_saltar :ENTERO - - Número a omitir para FILE_LIST & PROG_LIST
formato :ENTERO - - Formato de los nombres devueltos
- - Para FILE_LIST y PROG_LIST
ary_nam :ARRAY[9] OF STRING[20] -- Nombres devueltos
- - de FILE_LIST y PROG_LIST
prog_name :STRING[10] -- Nombres de programas a listar de
tipo_prog PROG_LIST :INTEGER - - Tipos de programa para listar formulario PROG_LIST
n_progs :ENTERO - - Número de programas devueltos desde PROG_LIST
estado :INTEGER - - Estado de la llamada a procedimiento incorporado

Listado de archivos y programas y manipulación de cadenas: declaración de rutinas

-----------------------------------------------------------------------------------
- - - - 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

semilla = (semilla * MULTIPLICADOR + INCREMENTO) MOD MODULUS


RETURN (semilla/65535.0)
FIN al azar
-----------------------------------------------------------------------------------
---- Sección 3-B: Declaración DISPL_LIST
---- Muestra el número máximo de elementos de ary_nam.
-----------------------------------------------------------------------------------
ROUTINE displ_list(maxnum :INTEGER)
EMPEZAR

FOR indx1 = 1 TO maxnum DO ; ESCRIBIR (nombre_ario[indx1],cr); ENDFOR


- - Observe el uso del punto y coma, que permite múltiples declaraciones
- - en una línea.
FIN mostrar_lista
-----------------------------------------------------------------------------------
---- Sección 3-C: Declaración TP_CLS
---- Esta rutina es de ROUT_EX.KL y será
---- borre la pantalla del menú TP USER y fuerce su visibilidad.
-----------------------------------------------------------------------------------

B–46
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL

RUTINA tp_cls DESDE rout_ex

Listado de archivos y programas y manipulación de cadenas - Programa principal

------------------------------------------------------------------------------------
- - - - 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.

Listado de archivos y programas y manipulación de cadenas - Crear y cargar programa

------------------------------------------------------------------------------------
- - - - 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

WRITE ('Cargando de', 'MYPROG' + pr_cases + '.VR', 'error',cr) WRITE ('Estado=',estado);

TERMINARA SI

MÁS - - Falló la carga del programa


SI (estado = 10003) ENTONCES - - El archivo no existe
ESCRIBIR (prg_nm, 'archivo no existe',cr) DE LO
CONTRARIO
ESCRIBIR ('Carga de ',prg_nm, 'falló',cr,'Estado = ',estado); TERMINARA SI

TERMINARA SI

MÁS - - El programa ya está cargado


SI (NO inicial) ENTONCES - - Variables no inicializadas
WRITE ('Loading','MYPROG' + pr_cases + '.VR',cr) LOAD('MYPROG' + pr_cases + '.VR', 0,
status) -- Carga en variables IF (status <> 0 ) THEN
- - Carga de variables fallida
WRITE ('Cargando de', 'MYPROG' + pr_cases + '.VR', 'error',cr) WRITE ('Estado=',estado);

TERMINARA SI

TERMINARA SI

TERMINARA SI

Listado de archivos y programas y manipulación de cadenas - Listar programas

------------------------------------------------------------------------------------
- - - - 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

mostrar_lista(n_archivos) - - Escribir los nombres en el menú USUARIO TP


n_skip = n_skip + n_files -- Omite los archivos que ya tenemos. TERMINARA SI

HASTA (ARRAY_LEN(ary_nam) <> n_files) -- Cuando n_files no es igual


- - tamaño declarado de ary_name entonces
- - todos los archivos han sido listados.
------------------------------------------------------------------------------------
- - - - Sección 4-D: Mostrar los programas cargados en el controlador
------------------------------------------------------------------------------------

B–48
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL

- - - Mostrar la lista de programas cargados en el controlador prog_name =


'*' - - Todos los nombres de los programas deben aparecer en la lista
tipo_prog = 6 - - Solo se deben enumerar los archivos de tipo PC
n_saltar = 0 - - Primera vez no salte ningún archivo
formato = 2 - - Lista de devolución en formato filename.filetype
ESCRIBIR ('Lista de programas en ejecución',cr)
REPETIR - - HASTA que se hayan enumerado todos los programas
PROG_LIST(prog_name, prog_type, n_skip, format, ary_nam, n_progs, status)
- - Los nombres de los programas se almacenan en ary_nam
- - n_progs es el número de nombres de programas almacenados en ary_nam
SI (estado <>0) ENTONCES
WRITE ('PROG_LIST incorporado falló con Status = ',status,cr) ELSE

mostrar_lista(n_progs) - - Mostrar la lista actual


n_saltar = n_saltar + n_progs - - Saltar los programas ya enumerados
ENDIF
HASTA (ARRAY_LEN(ary_nam) <> n_progs) - - Cuando n_files no es igual al
- - tamaño declarado de ary_name luego todo
- - se han enumerado los programas.
FIN DE LISTA_EX

B.8 GENERACIÓN Y MOVIMIENTO A LO LARGO DE UN TRAYECTORIA HEXAGONAL

Este programa genera un camino hexagonal y se mueve a lo largo de cada lado del hexágono.

Generar y moverse a lo largo de la ruta del hexágono - Descripción general

------------------------------------------------------------------------------------
- - - - 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

---- CHECK_EPOS Segundo 4-B


---- CNV_REL_JPOS Segundo 3-C
---- porque Segundo 3-B
---- PECADO Segundo 3-B
---- SET_POS_REG 4-B
---- SET_JPOS_REG Segundo 3–C
---- Declaraciones:
---- CONECTAR TEMPORIZADOR Segundo 4-A
---- POR ... ENDFOR Segundo 3-B,C; 4-B
---- RUTINA Segundo 3-A,B,C
---- ESCRIBE Segundo 4-A,B
---- Reservar Palabra:
---- EMPEZAR Segundo 3-B,C; 4
---- CONSTITUCIÓN Segundo 2
---- RC Segundo 4-A
---- FINAL Segundo 3-B,C; 4-B
---- PROGRAMA Segundo 1
---- VAR Segundo 2

Generar y moverse a lo largo de la ruta del hexágono - Sección de declaración

------------------------------------------------------------------------------------
- - - - Sección 1: Programa y Declaración Ambiental
------------------------------------------------------------------------------------
PROGRAMAgen_hex
%COMENTARIO = 'HEXÁGONO'
------------------------------------------------------------------------------------
- - - - Sección 2: Declaración de constantes y variables
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CONST

L_HEX_LADO = 300 - - Longitud de un lado del hexágono


NUM_EJES = 6 - - Número de ejes del robot
VAR
p_cntr : JOINTPOS6 - - Centro del hexágono
p_xyzwpr : ARRAY[NUM_AXES] DE XYZWPR
- - Seis vértices del hexágono :XYZWPR
tmp_xyz
reloj,
t_comienzo,
tender,
t_total : ENTERO
estado,
p_indx : ENTERO

B–50
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL

Generar y moverse a lo largo de la ruta del hexágono: declarar rutinas

------------------------------------------------------------------------------------
- - - - 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

p1_to_pcntr = (L_HEX_SIDE / 2) + (L_HEX_SIDE * COS(60)) p_xyzwpr[1] =


p_cntr - - p_cntr se calculó en r_hex_center
p_xyzwpr[1].y = p_xyzwpr[1].y - p1_to_pcntr --establece el primer vértice de hex FOR vertice = 2 TO
NUM_AXES DO - - comience en 2 ya que 1 ya está configurado
p_xyzwpr[vértice] = p_xyzwpr[1] ENDFOR - - Inicializar todos los vértices

- - Cálculo de componentes individuales para cada vértice del hexágono p_xyzwpr[2].x =


p_xyzwpr[1].x + (L_HEX_SIDE * SIN(60))
p_xyzwpr[2].y = p_xyzwpr[1].y + (L_HEX_SIDE * COS(60)) p_xyzwpr[3].x = p_xyzwpr[1].x +
(L_HEX_SIDE * SIN(60)) p_xyzwpr[3].y = p_xyzwpr[1].y + (L_HEX_SIDE + (L_HEX_SIDE * COS(60)))

p_xyzwpr[4].y = p_xyzwpr[1].y + (L_HEX_SIDE + (2 * (L_HEX_SIDE * COS(60))) p_xyzwpr[5].x =


p_xyzwpr[1].x - (L_HEX_SIDE * SIN(60) )
p_xyzwpr[5].y = p_xyzwpr[3].y
p_xyzwpr[6].x = p_xyzwpr[1].x - (L_HEX_SIDE * SIN(60)) p_xyzwpr[6].y =
p_xyzwpr[2].y
FIN r_calc_hex

Generar y moverse a lo largo de la ruta del hexágono: declarar rutinas

-----------------------------------------------------------------------------------
- - - - Sección 3-C: R_HEX_CENTER Declaración

B–51
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H

---- Coloca la placa frontal perpendicular al plano de


---- coordenadas universales xy.
-----------------------------------------------------------------------------------
RUTINA r_hex_center
VAR
estado, índice : ENTERO
p_cntr_arry : ARRAY[NUM_AXES] DE REALES
EMPEZAR

- - Inicializa la matriz de posición central a cero FOR indx = 1


TO NUM_AXES DO
p_cntr_arry[índice] = 0
ENDFOR
- - Establecer JOINT 3 y 5 a -45 y 45 grados p_cntr_arry[3]
= - 45
p_cntr_arry[5] = 45 - - Convierte la matriz REAL en una posición conjunta,
- - p_cntr
CNV_REL_JPOS(p_cntr_arry, p_cntr, estado)
SET_JPOS_REG(1, p_cntr, status) -- Poner p_cntr en PR[1] move_to_pr - -
Llamar al programa TP para pasar a PR[1]

FIN r_hex_center

Generar y moverse a lo largo de la ruta del hexágono - Programa principal

-----------------------------------------------------------------------------------
- - - - 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

PARA p_indx = 1 A 6 HACER


- - Verifique que la posición sea alcanzable
CHECK_EPOS ((p_xyzwpr[p_indx]), $UFRAME, $UTOOL, estado)

B–52
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL

SI (estado <> 0) ENTONCES


ESCRIBIR ('No se puede mover a p_xyzwpr[', p_indx,']',CR); MÁS

SET_POS_REG(1, p_xyzwpr[p_index], estado)


movl_to_pr - - Llamar programa TP para pasar a PR[1]
- - Mover a cada vértice del hexágono
TERMINARA SI

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

B.9 USO DEL ARCHIVO Y DISPOSITIVO INCORPORADO

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.

Programa integrado de archivos y dispositivos: descripción general

------------------------------------------------------------------------------------
- - - - 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

---- ENTERO Segundo 2


---- CUERDA Segundo 2
---- Directivas:
---- COMENTARIO Segundo 1
---- NOLOCKGROUP Segundo 1
---- Funciones y procedimientos integrados:
---- CNV_TIME_STR Segundo 4-A
---- COPIAR ARCHIVO Segundo 4-B
---- DESMONTAR_DEV Segundo 4-B
---- FORMATO_DEV Segundo 4-B
---- CONSIGUE TIEMPO Segundo 4-A
---- MOUNT_DEV Segundo 4-B
---- PURGAR_DEV Segundo 4-B
---- SUB_STR Segundo 4-A
---- Declaraciones:
---- SI... ENTONCES... DE LO CONTRARIO... Segundo 4-B
---- ENDIF REPETIR... HASTA Segundo 4-A
---- RUTINA Segundo 3
---- SELECCIONAR...FIN SELECCIONAR Segundo 4-B
---- ESCRIBE Segundo 4-A,B

Programa integrado de archivos y dispositivos: descripción general (continuación)

---- Reservar Palabras:


---- EMPEZAR Segundo 4
---- CONSTITUCIÓN Segundo 2
---- RC Segundo 4-A,B
---- FINAL Segundo 4-B
---- PROGRAMA Segundo 4
---- VAR Segundo 2
---- Dispositivos Usó:
---- FLIPY Segundo 4-B
---- MF3 Segundo 4-B
---- RD Segundo 4-B
---- FR Segundo 4-B

Programa integrado de archivos y dispositivos: sección de declaración, declaración de rutinas

------------------------------------------------------------------------------------
- - - - 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

---- Sección 2: Declaración de variables


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CONST

ÉXITO =0 - - Estado de éxito de elementos integrados


ACABADO = VERDADERO - - Copia terminada
INTENTAR OTRA VEZ = FALSO - - Intente copiar de nuevo
RD_COMPLETO = 85020 - - Disco RAM lleno
NO_MONTAR = 85005 - - Dispositivo no montado
FR_COMPLETO = 85001 - - DESDE el disco está lleno
MNT_RD = 85004 - - El disco RAM debe estar montado
- - Referirse a

Controlador de FANUC America Corporation KAREL


Manual de configuración y operaciones para un listado de códigos de error VAR

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

Programa integrado de archivos y dispositivos: montaje y copia en disco RAM

-----------------------------------------------------------------------------------
---- 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

Programa integrado de archivos y dispositivos: montaje y copia en disco RAM (continuación)

CASO (FR_COMPLETO): - - DESDE el disco está lleno


ESCRIBIR ('Del disco está lleno', CR, 'PURGANDO DE.....', CR) PURGE_DEV
('FR:', estado) - - Purgar el DESDE
SI (estado <> ÉXITO) ENTONCES
ESCRIBIR ('PURGA de FROM fallida, estado:', estado, CR)

B–56
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL

ESCRIBIR ('Copia incompleta', CR) ELSE

cpy_stat = TRY_AGAIN
TERMINARA SI

CASO (NO_MONTAJE, MNT_RD): - - El dispositivo no está montado


ESCRIBIR ('MONTAJE ',a_dispositivo,'.....',CR)
MOUNT_DEV(a_dispositivo, estado)
SI (estado <> ÉXITO) ENTONCES
WRITE ('MONTAJE de ',to_dev,': fallido, estado:', estado, CR) WRITE ('Copia
incompleta', CR)
MÁS
cpy_stat = TRY_AGAIN
TERMINARA SI

CASO (ÉXITO):
ESCRIBIR ('¡Copia completada con éxito!', CR)
MÁS:
WRITE ('Copia fallida, estado:', estado, CR) ENDSELECT

HASTA (cpy_stat = FINALIZADO) FIN


file_ex

B.10 USO DE PANTALLAS DINÁMICAS INTEGRADAS

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.

Uso de funciones integradas de visualización dinámica: descripción general

-----------------------------------------------------------------------------------
- - - - 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

---- ABORTAR Segundo 4


---- Datos tipos:
---- BOOLEANO Segundo 2
---- ENTERO Segundo 2
---- REAL Segundo 2
---- CUERDA Segundo 2
---- Directivas:
---- ALFABETIZAR Segundo 1
---- COMENTARIO Segundo 1
---- NOLOCKGROUP Segundo 1

Uso de Dynamic Display Built-ins - Descripción general (continuación)

---- Funciones y procedimientos integrados:


---- ABORTAR_TAREA Segundo 4-C
---- CNC_DYN_DISI Segundo 4-C
---- CNC_DYN_DISR Segundo 4-C
---- CNC_DYN_DISB Segundo 4-C
---- CNC_DYN_DISE Segundo 4-C
---- CNC_DYN_DISP Segundo 4-C
---- CNC_DYN_DIS Segundo 4-C
---- INI_DYN_DISI Segundo 3-A, 4-A
---- INI_DYN_DISR Segundo 3-B, 4-A
---- INI_DYN_DISB Segundo 3-C, 4-A
---- INI_DYN_DISE Segundo 3-D, 4-A
---- INI_DYN_DISP Segundo 3-E, 4-A
---- INI_DYN_DISS Segundo 3-F, 4-A
---- LOAD_STATUS Segundo 4-B
---- CARGA Segundo 4-B
---- EJECUTAR_TAREA Segundo 4-B
----
---- Declaraciones:
---- CONDICIÓN...FIN CONDICIÓN Segundo 4
---- SI...ENTONCES...FIN Segundo 4-A,B,C
---- LEER Segundo 4-C
---- RUTINA Segundo 3-A,B,C
---- ESCRIBE Segundo 4-A,B,C
----
---- Reserva de palabras:
---- EMPEZAR Segundo 3-A,B; 4
---- RC Segundo 4-A
---- CONSTITUCIÓN Segundo 2
---- FINAL Segundo 3-A,B; 4-C
---- PROGRAMA Segundo 4
---- VAR Segundo 2
---- Archivo predefinido Variables:

B–58
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL

---- TPPROMPT Segundo 4-B,C


---- Predefinido Ventanas:
---- T_FU Segundo 3-A,B

Uso de funciones integradas de visualización dinámica - Sección de declaración

-----------------------------------------------------------------------------------
- - - - 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

cc_éxito = 0 - - Estado de éxito


cc_clear_win = 128 - - Ventana limpia
cc_clear_eol = 129 - - Limpiar hasta el final de la línea
cc_clear_eow = 130 - - Limpiar hasta el final de la ventana
CH_ABORT =1 - - Controlador de condiciones para detectar cuando el programa aborta
VAR
Int_wind :CADENA[10]
Rel_viento :CADENA[10]
Ancho_del_campo :ENTERO
Attr_Mask :ENTERO
Char_Size :ENTERO
Fila :ENTERO
Columna :ENTERO
Intervalo :ENTERO
Tamaño del búfer :ENTERO
Formato :CADENA[7]
nombres_booleanos :ARRAY[2] DE CADENA[10]
enum_names :ARRAY[4] DE CADENA[10]
nombres_pval :ARRAY[2] DE CADENA[10]
bool1 EN CMOS :BOOLEANO
enum1 EN CMOS :ENTERO
tipo_puerto :ENTERO
port_no :ENTERO
Str1 EN CMOS :CADENA[10]
Int1 EN CMOS :ENTERO - - Usar IN CMOS creará las variables
Real1 EN CMOS :REAL - - en CMOS RAM, que es memoria permanente.
estado :ENTERO
cargado,

B–59
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H

inicializado :BOOLEANO
dynd_abrt :BOOLEANO - - Establecido en verdadero cuando el programa aborta.

Uso de funciones integradas de visualización dinámica: declaración de rutinas

-----------------------------------------------------------------------------------
- - - - 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

Uso de funciones integradas de visualización dinámica: declaración de rutinas (continuación)

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

B–60
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL

---- Sección 3-B: Declaración SET_REAL


---- Configure todos los parámetros de entrada para la llamada INI_DYN_DISR.
-----------------------------------------------------------------------------------
RUTINA Set_Real
Empezar
Rel_Viento = 'T_FU' - - Usar la ventana de visualización predefinida
Ancho_del_campo = 10 - - Ancho máximo de visualización.
Attr_Mask =2u8 - - parpadeo y video inverso
Char_Size =0 - - Normal
Fila =2 - - Especifique la ubicación dentro de 'TFU'
Columna = 16 - - para mostrar dinámicamente
Intervalo = 200 - - 200ms entre actualización
Tamaño del búfer = 10 - - Valor mínimo requerido.
Formato = '%2.2f'
- - - Con la especificación format y field_width el REAL será
- - - se muestra de la siguiente manera:
--- ----------|
--- xxxx.xx |
--- ----------
--- Donde se dejará justificado el valor real.
--- Siempre habrá dos dígitos después del punto decimal. Se utilizará un ancho
--- máximo de 10.
--- Si el valor real es inferior a 10 caracteres, el lado derecho se rellenará con espacios en
--- blanco de hasta 10 caracteres de ancho.
--- Si el valor real supera los 10 caracteres, el ancho de la pantalla no se expandirá pero
--- mostrará un ">" como el último carácter, lo que indica que no se muestra el valor
--- completo.
--- El valor también estará parpadeando y en video inverso. Conjunto_Real
Final

Uso de funciones integradas de visualización dinámica: declaración de rutinas (continuación)

-----------------------------------------------------------------------------------
---- 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

Ancho_del_campo = 10 - - Mostrar 10 caracteres


Attr_Mask = 2 - - Parpadeo
Char_Size = 0 - - Normal
Fila =3 - - 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
bool_nombres[1] = 'SI' - - la visualización de cadenas en bool_var es FALSO
bool_nombres[2] = 'NO' - - la visualización de cadenas en bool_var es VERDADERO
- - - Con esta especificación, el BOOLEAN se mostrará de la siguiente manera:
--- --------
--- |xxxxxxxx|
--- --------
--- Donde el valor booleano quedará justificado.
--- Las x serán una de las cadenas 'SÍ' o 'NO', dependiendo del valor de bool1. La
--- cuerda parpadeará.
Final Set_Bool

Uso de funciones integradas de visualización dinámica: declaración de rutinas (continuación)

-----------------------------------------------------------------------------------
---- 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

Uso de funciones integradas de visualización dinámica: declaración de rutinas (continuación)

-----------------------------------------------------------------------------------
---- 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

Uso de funciones integradas de visualización dinámica: declaración de rutinas (continuación)

-----------------------------------------------------------------------------------
---- 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

Uso de pantallas dinámicas incorporadas - Iniciar pantallas dinámicas

-----------------------------------------------------------------------------------
- - - - 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

HABILITAR CONDICIÓN [CH_ABORT]


-----------------------------------------------------------------------------------
- - - - Sección 4-A: Configurar variables, iniciar visualización dinámica
-----------------------------------------------------------------------------------
TP_CLS - - Borrar la pantalla USUARIO TP
- - Forzar visualización de la pantalla USUARIO TP
ESTADO = cc_éxito - - Inicializar la variable de estado
- - Inicializar las variables mostradas dinámicamente Int1
= 1
real1 = 1.0
Bool1 = FALSO
Enum1 = 0
Strl = ''
- - Mostrar mensajes en la pantalla TP USER WRITE
('Current INT1 =',CR)
ESCRIBE ('Actual REAL1=',CR)
ESCRIBE ('Actual BOOL1=',CR)
ESCRIBE ('Actual ENUM1=',CR)
ESCRIBIR ('PUERTO actual =',CR)
ESCRIBIR ('STR1 actual =',CR) Set_Int
- - Establecer los valores de los parámetros para la PANTALLA DINÁMICA DE ENTEROS
INI_DYN_DISI(Int1,Int_Wind,Field_Width,Attr_Mask,Char_Size,
fila, columna, intervalo, tamaño de búfer, formato, estado)
SI Estado <> cc_success ENTONCES -- Comprobar el estado
ESCRIBIR(' INI_DYN_DISI falló, Estado=',estado,CR) ENDIF

Set_Bool - - Establecer valores de parámetro para DINÁMICA BOOLEANA


MONITOR
INI_DYN_DISB(Bool1,Int_Wind,Field_Width,Attr_Mask,Char_Size,
fila, columna, intervalo, bool_names, estado)
SI Estado <> cc_success ENTONCES -- Comprobar el estado
ESCRIBIR(' INI_DYN_DISB falló, Estado=',estado,CR) ENDIF

Uso de pantallas dinámicas incorporadas - Iniciar pantallas dinámicas

Set_Enum - - Establecer valores de parámetro para entero enumerado


- - PANTALLA DINÁMICA
INI_DYN_DISE(Enumeración1,Int_Wind,Field_Width,Attr_Mask,Char_Size,
fila, columna, intervalo, enum_names, estado)
SI Estado <> cc_success ENTONCES -- Comprobar el estado

B–65
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H

ESCRIBIR(' INI_DYN_DISE falló, Estado=',estado,CR) ENDIF

Establecer_Puerto - - Establezca los valores de los parámetros para Port DYNAMIC


INI_DYN_DISP(tipo_puerto, DISPLAY port_no ,Int_Wind,Field_Width,Attr_Mask,Char_Size,
fila, columna, intervalo, pval_names, estado)
SI Estado <> cc_success ENTONCES -- Comprobar el estado
ESCRIBIR(' INI_DYN_DISP falló, Estado=',estado,CR) ENDIF

Conjunto_Real - - Establecer valores de parámetros para REAL DYNAMIC DISPLAY


INI_DYN_DISR(Real1,Rel_Wind,Field_Width,Attr_Mask,Char_Size,
fila, columna, intervalo, tamaño de búfer, formato, estado)
SI Estado <> cc_success ENTONCES -- Comprobar el estado
ESCRIBIR(' INI_DYN_DISR falló, Estado=',estado,CR) ENDIF

Set_Str - - Establecer valores de parámetros para STRING DYNAMIC


MONITOR
INI_DYN_DISS(Str1,Int_Wind,Field_Width,Attr_Mask,Char_Size,
fila, columna, intervalo, tamaño de búfer, formato, estado)
SI Estado <> cc_success ENTONCES -- Comprobar el estado
ESCRIBIR(' INI_DYN_DISS falló, Estado=',estado,CR) ENDIF

Uso de funciones integradas de visualización dinámica - Ejecutar tarea subordinada

-----------------------------------------------------------------------------------
- - - - 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

ESCRIBIR TPPROMPT(CHR(cc_clear_win)) - - Borrar la línea de solicitud


WRITE TPPROMPT('CHG_DATA no está cargado. Cargando ahora...')
LOAD('chg_data.pc',0,status)
SI (estado = cc_éxito) ENTONCES - - Comprobar el estado
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

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

CNC_DYN_DISI(Int1, Int_Wind,Status) SI Estado - - Cancelar visualización de Intl


<> 0 ENTONCES - - Comprobar el estado
ESCRIBIR(' CND_DYN_DISI falló, Estado=',estado,CR) ENDIF

CNC_DYN_DISR(Real1,Rel_Wind,Estado) SI - - Cancelar visualización de Real1


Estado <> 0 ENTONCES - - Comprobar el estado
ESCRIBIR(' CND_DYN_DISR falló, Estado=',estado,CR) ENDIF

CNC_DYN_DISB(Bool1, Int_Wind,Status) SI - - Cancelar visualización de Bool1


Estado <> 0 ENTONCES - - Comprobar el estado
ESCRIBIR(' CND_DYN_DISB falló, Estado=',estado,CR) ENDIF

CNC_DYN_DISE(Enumeración1, Int_Wind,Estado) SI - - Cancelar visualización de Enum1


Estado <> 0 ENTONCES - - Comprobar el estado
ESCRIBIR(' CND_DYN_DISE falló, Estado=',estado,CR) ENDIF

CNC_DYN_DISP(port_type, Port_no, Int_Wind,Status) -- Cancelar la visualización del puerto SI Estado


<> 0 ENTONCES - - Comprobar el estado
ESCRIBIR(' CND_DYN_DISP falló, Estado=',estado,CR) ENDIF

CNC_DYN_DISS(Str1, Int_Wind,Status) SI Estado - - Cancelar la visualización de String


<> 0 ENTONCES - - Comprobar el estado
ESCRIBIR(' CND_DYN_DISS falló, Estado=',estado,CR)

B–67
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H

TERMINARA SI

FIN DYN_DISP

B.11 MANIPULACIÓN DE VALORES DE VARIABLES VISUALIZADAS


DINÁMICAMENTE

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.

Manipular variables mostradas dinámicamente: descripción general

----------------------------------------------------------------------------------
- - - - 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

Manipular variables mostradas dinámicamente - Sección de declaración

-----------------------------------------------------------------------------------
- - - - Sección 2: Declaración de variables
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - VAR

- - SI las siguientes variables NO tenían EN CMOS, los siguientes errores


- - se publicaría al cargar este programa:
-- VARS-012 Error al crear var -INT1 VARS-038 No se puede cambiar el tipo de CMOS/DRAM
-- VARS-012 Error al crear var -REAL1 VARS-038 No se puede cambiar el tipo de CMOS/DRAM
- - Esto indica que hay una discrepancia entre DYN_DISP y CHG_DATA.
- - Un programa ha especificado para crear las variables en DRAM el
- - otro CMOS especificado. Int1 EN
CMOS DESDE dyn_disp Real1 EN :ENTERO - - variable mostrada dinámicamente
CMOS DESDE dyn_disp Bool1 EN :REAL - - variable mostrada dinámicamente
CMOS DESDE dyn_disp Enum1 EN :BOOLEANO - - variable mostrada dinámicamente
CMOS DESDE dyn_disp Str1 EN :ENTERO - - variable mostrada dinámicamente
CMOS DESDE dyn_disp indx :STRING[10] -- variable mostrada dinámicamente
:ENTERO
dynd_abrt DESDE dyn_disp :BOOLEANO - - Establecer en dyn_disp cuando dyn_disp
- - está abortando
-----------------------------------------------------------------------------------
- - - - Sección 3: Declaración de Rutina
-----------------------------------------------------------------------------------

Manipular variables mostradas dinámicamente - Programa principal

-----------------------------------------------------------------------------------
- - - - 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

PARA índice = -9999 a 9999 DO =


int1 (índice DIV 2) * 7
real1 = (indx DIV 3)* 3.13 bool1 = ((indx
AND 4) = 0) enum1 = (ABS(indx) DIV 5)
MOD 5
Str1 = SUB_STR('123456789A', 1, (ABS(indx) DIV 6) MOD 7 + 1) retraso 200 - - Retraso de 1/5 de
segundo como si el procesamiento estuviera en curso. ENDFOR

B–69
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H

HASTA (DYND_ABRT) - - Esta tarea se cancela desde DYN_DISP. Sin embargo, si


- - DYN_DISP aborta anormalmente (es decir, desde un KCL> ABORT), se
- - establecerá DYND_ABRT, lo que permitirá que CHG_DATA
- - ejecución completa.
FIN CHG_DATA

B.12 MOSTRAR UNA LISTA DESDE UN ARCHIVO DE DICCIONARIO

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.

NotaEl uso de DISCTRL_FORM es el método preferido para mostrar información. DISCTRL_FORM se


encargará automáticamente de todas las entradas clave y es mucho más fácil de usar. Para obtener más
información, consulteCapítulo 10DICCIONARIOS Y FORMULARIOS.

Lista de visualización del archivo de diccionario: descripción general

----------------------------------------------------------------------------------
- - - - 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

---- CLR_IO_STAT Segundo 3-A,C


---- CNV_STR_INT Segundo 4-E
---- DEF_PANTALLA Segundo 4-B
---- DET_VENTANA Segundo 4-yo
---- DISCTRL_LIST Segundo 4-G,H
---- FORCE_SPMENÚ Segundo 4-A,B,C
---- IO_ESTADO Segundo 3-A,
---- PEDIDO Segundo 4-H
---- LEER_DICT Segundo 4-E,F

Lista de visualización del archivo de diccionario: descripción general, continuación

---- REMOVE_DICT Segundo 4-yo


---- SET_FILE_ATR Segundo 4G
---- STR_LEN Segundo 4-F
---- UNINIT Segundo 3-C
---- ESCRIBIR_DICT Segundo 4-D, H, I
---- Declaraciones:
---- ABORTAR Segundo 3-B
---- CERRAR EL ARCHIVO Segundo 4-yo
---- PARA...FIN PARA Segundo 4-F
---- SI... ENTONCES... ENDIF Segundo 3-A,B,C,D; 4-F, H, I
---- ABIERTO EXPEDIENTE Segundo 3-A; 4-H
---- LEER Segundo 4-A,B,H
---- REPETIR HASTA Segundo 4-H
---- RUTINA Segundo 3-A,B,C,D,E
---- SELECCIONAR...FIN SELECCIONAR Segundo 4-H
---- ESCRIBE Segundo 3-A,B,C,D;4-A,I
---- Reservar Palabras:
---- EMPEZAR Segundo 3-A,B,C,D;4
---- RC Segundo 4-A,B,C
---- FINAL Segundo 3-A,B,C,D; 4-yo
---- PROGRAMA Segundo 1
---- VAR Segundo 2
---- Nombres de archivo predefinidos:
---- PANTALLA TP Segundo 4-D,G,H,I
---- TPFUNC Segundo 4-D,H
---- TPPROMPT Segundo 4-D, H, I
---- ESTADOTP Segundo 4-D,yo
---- Dispositivos Usó:
---- RD2U Segundo 3-B
---- Ventanas predefinidas:
---- ERRAR Segundo 4-C
---- T_ST Segundo 4-C
---- T_FU Segundo 4-C
---- T_PR Segundo 4-C

B–71
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H

---- T_FR Sec 4-C

Lista de visualización del archivo de diccionario - Sección de declaración

-----------------------------------------------------------------------------------
- - - - 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

Abrió : BOOLEANO - - archivo de registro de error abierto o no

Lista de visualización del archivo de diccionario: declaración de rutinas

-----------------------------------------------------------------------------------
- - - - 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

ABRIR ARCHIVO Err_File ('RW','RD2U:\D_LIST.ERR') -- abierto para salida SI


(IO_STATUS(Err_File) <> 0 ) ENTONCES
CLR_IO_STAT(Err_Archivo)
Escribir TPPROMPT('*** UTILIZAR VENTANA DE USUARIO PARA SALIDA DE ERROR ***',CR) DE LO CONTRARIO

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

ESCRIBIR TPPROMPT('ADD_DICT falló, ESTADO=',ESTADO,CR)


ABORT -- Sin el diccionario este programa no puede continuar. TERMINARA SI

MÁS
WRITE TPPROMPT ('Diccionario ya cargado en sistema. ENDIF ')

Final Chk_Add_Dct

Lista de visualización del archivo de diccionario - Rutinas de declaración de errores

-----------------------------------------------------------------------------------
---- 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

SI NO se abrió ENTONCES: si el archivo de registro de errores no se abrió, escriba los errores en


- - pantalla
ESCRIBE (Err_Str,Err_No,CR)
MÁS
SI NO UNINIT(Fuera) ENTONCES
CLR_IO_STAT(Fuera)
ESCRIBE Salida(Err_Str,Err_No,CR,CR)
MÁS
ESCRIBE (Err_Str,Err_No, CR)

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

Lista de visualización del archivo de diccionario: pantalla de configuración y definición

-----------------------------------------------------------------------------------
- - - - 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

-- Capítulo 7.9.1 "Menú USUARIO en el Teach Pendant, para obtener


-- más detalles sobre los nombres de ventana predefinidos.
ATT_WINDOW_S('ERROR', 'LISTA', 1, 1, estado) - - adjuntar la ventana de error
Chk_Stat('Adjuntando ERR')
ATT_WINDOW_S('T_ST', 'LIST', 2, 1, status) -- adjuntar la ventana de estado
Chk_Stat('T_ST no adjunto')
ATT_WINDOW_S('T_FU', 'LIST', 5, 1, status) -- adjuntar la ventana completa
Chk_Stat('T_FU no adjunto')
ATT_WINDOW_S('T_PR', 'LIST', 15, 1, status)-- adjuntar la ventana de solicitud
Chk_Stat('T_PR no adjunto')
ATT_WINDOW_S('T_FK', 'LIST', 16, 1, status)-- adjuntar la ventana de función
Chk_Stat('T_FK no adjunto')

Lista de visualización del archivo de diccionario - Escribir elementos en la pantalla

-----------------------------------------------------------------------------------
- - - - 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)

Lista de visualización del archivo de diccionario - Inicializar datos de visualización

-----------------------------------------------------------------------------------
---- 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

- - Leer elemento de diccionario, TPTSSP_MENU, del diccionario DLST.


- - list_data se completará con la información de la lista del menú
- - list_data[1] contendrá la primera línea de información de
- - TPTSSP_MENU y list_data[last_line] contendrán la última
- - línea de información leída del diccionario. READ_DICT('DLST', TPTSSP_MENU,
list_data, 1, last_line, estado)
Chk_Stat('Error al leer la lista del menú')
- - Determinar el elemento de lista más largo y restablecer la columna final del cursor para el primer campo.
FOR i = 1 TO last_line DO
SI (STR_LEN(lista_datos[i]) > mostrar_datos.curs_en_col[1]) ENTONCES
mostrar_datos.curs_en_col[1] = STR_LEN(lista_datos[i])

B–76
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL

TERMINARA SI

ENDFOR

Lista de visualización del archivo de diccionario: movimiento del cursor de control

-----------------------------------------------------------------------------------
- - - - 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

DISCTRL_LIST(TPDISPLAY, display_data, list_data, DC_UP, estado)


Chk_Stat ('Error al mostrar la lista') CASO (KY_DN_ARW):
-- tecla de flecha hacia abajo 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

B–77
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H

ESCRIBIR_DICT(TPFUNC, 'DLST', TPTSSP_CLRSC, estado) ENDIF

DISCTRL_LIST(TPDISPLAY, mostrar_datos, lista_datos, estado)


DC_DN,
Chk_Stat ('Error al mostrar la lista')

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

- - Borrar acción pendiente


act_pending = 0
TERMINARA SI

CASO (KY_F5): -- Tecla de función "NO" presionada


- - Borrar aviso de confirmación
ESCRIBIR_DICT(TPPROMPT, 'DLST', TPTSSP_INSTR, estado)
- - Borrar teclas de función de confirmación
ESCRIBIR_DICT(TPFUNC, 'DLST', TPTSSP_CLRSC, estado)
- - Borrar acción pendiente
act_pendiente = 0
MÁS : - - El usuario ingresó un número de artículo real. Calcula cual
- - fila en la que el cursor debe estar y volver a mostrar la lista.
SI ((tecla > 48) Y (tecla <= (48 + num_opciones))) ENTONCES
- - Traducir número a una tecla de fila
= tecla - 48
display_data.cursor_row = tecla
DISCTRL_LIST(TPDISPLAY,display_data,list_data,DC_DISP,status)
Tecla Chk_Stat ('Error al mostrar la lista')
= KY_ENTRAR
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

ESCRIBIR_DICT(TPFUNC, 'DLST', TPTSSP_FK2, estado)


- - Establecer acción pendiente para el elemento seleccionado
act_pending = display_data.cursor_row -- este es el elemento seleccionado ENDIF

HASTA terminar - - repetir hasta que el usuario seleccione la opción de salida

Lista de visualización del archivo de diccionario - Programa de limpieza y salida

-----------------------------------------------------------------------------------
- - - - 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

cerca archivo Err_Archivo


TERMINARA SI

Escribir TPPROMPT (cr,'Ejemplo Terminado')


REMOVE_DICT ('LIST', dp_default, status) -- elimina el diccionario
write ('eliminar dict', estado, cr) Chk_Stat
('Eliminar diccionario')
ACT_SCREEN(old_screen, old_screen, status) -- activa la pantalla anterior
Chk_stat ('Activando pantalla antigua')
DET_WINDOW('ERR', 'LIST', status) -- Separa todas las ventanas que estaban
Chk_stat ('Separación de la ventana ERR')
DET_WINDOW('T_ST', 'LIST', estado) -- adjunto previamente.
Chk_stat ('Separar ventana T_ST')
DET_WINDOW('T_FU', 'LIST', estado)
Chk_stat ('Separar ventana T_FU')
DET_WINDOW('T_PR', 'LIST', estado)
Chk_stat ('Separar ventana T_PR')
DET_WINDOW('T_FK', 'LIST', estado)
Chk_stat ('Separación de la ventana T_FK')
FINAL DCLST_EX

B.12.1 Archivos de diccionario

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

B.13 USO DE DISCTRL_ALPHA INCORPORADO

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.

Este programa también envía todos los errores al controlador.

Uso de DISCTRL_ALPHA incorporado: descripción general

-----------------------------------------------------------------------------------
- - - - 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

---- CONSTITUCIÓN Segundo 2


---- RC Segundo 4-A,B,C
---- FINAL Segundo 4-C
---- PROGRAMA Segundo 1
---- VAR Segundo 2
---- Archivo predefinido nombres:
---- PRODUCCIÓN Segundo 4-C
---- PANTALLA TP Segundo 4-A,B
---- Ventanas predefinidas:
---- T_FU Segundo 4-A,B
---- C_FU Segundo 4-C

Uso de DISCTRL_ALPHA incorporado - Sección de declaración

-----------------------------------------------------------------------------------
- - - - 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
-----------------------------------------------------------------------------------

Uso de DISCTRL_ALPHA incorporado - Ingrese datos desde Teach Pendant

-----------------------------------------------------------------------------------
- - - - 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

POST_ERR(estado, '', 0, cc_warn) ENDIF

SI term_char = ky_enter ENTONCES - - El usuario presionó la tecla ENTER


ESCRIBIR (CR, 'prog_name fue cambiado:', prog_name, CR) ELSE

ESCRIBIR (CR, 'prog_name no se cambió') ENDIF

ESCRIBIR (CR, 'Presione enter para continuar')


LEER (CR)
-----------------------------------------------------------------------------------
- - - - Sección 4-B: Introduzca un comentario desde el colgante de aprendizaje
-----------------------------------------------------------------------------------
ESCRIBIR (CHR(cc_home) + CHR(cc_clear_win))-- Borrar menú USUARIO TP
SET_CURSOR(TPDISPLAY, 12, 1, estado) - - cambiar la posición del cursor
comentario = ' ' - - Inicializar el comentario
ESCRIBIR ('comentario:') - - Mostrar mensaje
DISCTRL_ALPH('t_fu', 12, 10, comentario, 'COMM', 0, term_char, estado) SI estado <> 0
ENTONCES - - Verificar que DISCTRL_ALPH fue exitoso
POST_ERR(estado, '', 0, cc_warn) ENDIF - - Publicar el estado como una advertencia

SI term_char = ky_enter ENTONCES


ESCRIBIR (CR, 'el comentario fue cambiado:', comentario, CR) -- Mostrar nuevo comentario
ELSE
ESCRIBIR (CR, 'no se modificó el comentario', CR) ENDIF

ESCRIBIR (CR, 'Presione enter para continuar')


LEER (CR)

Uso de DISCTRL_ALPHA incorporado - Ingrese datos desde CRT/KB

-----------------------------------------------------------------------------------
- - - - 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

---- indicado explícitamente aquí, en lugar de utilizar el disponible


---- valores predeterminados.
-----------------------------------------------------------------------------------
- - Establecer el idioma del diccionario en inglés
- - Esto es útil si desea utilizar este mismo código para múltiples
- - idiomas. Luego, cada vez que carga en un diccionario, verifica
- - para ver cuál es el idioma actual, $language, y cargar el
- - diccionario correcto.
- - Por ejemplo, podría tener un archivo DCALPHJP.TX que
- - sería el diccionario japonés. Si el idioma actual, $idioma,
- - se configuró en japonés, cargaría este diccionario. SET_LANG
( dp_english, estado)
SI (estado <> 0) ENTONCES
POST_ERR (estado, '', 0, cc_warn) ENDIF - - Publicar el estado como una advertencia

- - Cargue el archivo dcalpheg.tx, usando ALPH como nombre del diccionario,


- - al idioma inglés, utilizando DRAM como dispositivo de almacenamiento de memoria.
ADD_DICT ('DCALPHEG', 'ALPH', dp_english, dp_dram, estado)
SI (estado <> 0) ENTONCES
POST_ERR (estado, '', 0, cc_pausa) - - Publicar el estado y pausar el
- - programa, desde el diccionario
TERMINARA SI - - debe cargarse para continuar.
dispositivo_stat = crt_panel - - Dar control al CRT/KB
SALIDA DE ESCRITURA (CHR(cc_home) + CHR(cc_clear_win))--Borrar menú de USUARIO de CRT/
KB FORCE_SPMENU (device_stat, SPI_TPUSER, 1) -- Forzar el menú de USUARIO de CRT/KB
- - ser visible
SET_CURSOR(SALIDA, 12, 1, estado) - - Reposicionar el cursor
ESCRIBIR SALIDA ('nombre_prog:')
nombre_prog = ' ' - - Inicializar el nombre del programa
DISCTRL_ALPH('c_fu',12,12,prog_name,'ALPH',alph_prog,term_char,status)
- - DISCTRL_ALPHA usa el diccionario ALPH y el elemento del diccionario ALPH_PROG IF status <> 0
THEN - - Verificar que DISCTRL_ALPH era
- - exitoso.
POST_ERR(estado, '', 0, cc_warn) ENDIF - - Publicar estado devuelto al
- - ventana de error ('err').
SI term_char = ky_enter ENTONCES
ESCRIBIR (CR, 'prog_name fue cambiado:', prog_name, CR) ELSE

WRITE (CR, 'prog_name NO se modificó', CR) ENDIF

dispositivo_stat = tp_panel - - Asegúrese de restablecer


FIN DCALP_EX

B–84
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL

B.13.1 Archivos de diccionario

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.

Archivo de diccionario DCALPHEG.UTX

. 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.

B.14 APLICACIÓN DE COMPENSACIONES A UN PROGRAMA TEACH PENDANT


COPIADO

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.

Aplicación de compensaciones al programa de Teach Pendant copiado - Descripción general

------------------------------------------------------------------------------------
- - - - 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

---- CUERDA Segundo 2


---- XYZWPR Segundo 2
---- Directivas:
---- AMBIENTE Segundo 1
---- Funciones y procedimientos integrados:
---- AVL_POS_NUM Segundo 3-E
---- CDH Segundo 3-B, 4
---- CLOSE_TPE Segundo 3-E
---- CNV_REL_JPOS Segundo 3-E
---- CNV_JPOS_REL Segundo 3-E
---- COPY_TPE Segundo 3-E
---- GET_JPOS_TPE Segundo 3-E
---- GET_POS_TYP Segundo 3-E
---- GET_POS_TPE Segundo 3-E
---- OPEN_TPE Segundo 3-E
---- PROG_LISTA Segundo 3-B
---- SELECT_TPE Segundo 3-E
---- SET_JPOS_TPE Segundo 3-E
---- SET_POS_TPE Segundo 3-E

Aplicación de compensaciones al programa de Teach Pendant copiado: descripción general continuada

---- 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

Aplicación de compensaciones al programa de Teach Pendant copiado - Sección de declaración

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

B–86
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL

- - - - Sección 1: Programa y Declaración Ambiental


------------------------------------------------------------------------------------
PROGRAMA CPY_TP
% AMBIENTE TPE - - necesario para todos los integrados xxx_TPE
%ENTORNO BYNAM - - necesario para PROG_LIST integrado
------------------------------------------------------------------------------------
- - - - Sección 2: Declaración de constantes y variables
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CONST

ER_ADVERTENCIA = 0 - - constante de advertencia para uso en POST_ERR


ÉXITO = 0 - - constante de éxito
JNT_POS = 9 - - constante para GET_POS_TYP
XYZ_POS = 2 - - constante para GET_POS_TYP
MAX_AXS = 9 - - Número máximo de ejes que tiene JOINTPOS
VAR
from_prog: CADENA[13] - - Nombre del programa TP del que se va a copiar
a_prog : CADENA[13] - - Nombre del programa TP que se copiará A
sobre_sw : BOOLEANO - - Decide si sobrescribir un archivo existente
- - programa al realizar COPY_TPE
estado : ENTERO - - Mantiene el estado de error de las llamadas integradas
off_xyz : XYZWPR - - Cantidad de compensación para las posiciones XYZWPR
jp_off : ARRAY [9] de REAL : - - Importe de compensación para las posiciones JOINT
nuevo_xyz XYZWPR - - XYZWPR que tiene compensación aplicada
org_xyz : XYZWPR - - XYZWPR original de to_prog
new_jpos : JOINTPOS - - JOINTPOS que como el desplazamiento aplicado
org_jpos : JOINTPOS - - JOINTPOS original de to_prog
id_abierto : ENTERO - - Identificador del to_prog abierto
jp_org : ARRAY [9] de REAL : - - Representación REAL de org_jpos
jp_nuevo ARRAY [9] de REAL - - Representación REAL de jp_new

Aplicación de compensaciones al programa del Teach Pendant copiado: declaración de rutinas

------------------------------------------------------------------------------------
- - - - 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

índice_f = 0 - - Inicializar el f_index


n_saltar = 0 - - Inicializar el n_skip
tp_tipo = 2 - - encontrar cualquier programa TPE
formato = 1 - - devuelve solo el nombre del programa en prg_name
n_progs = 0 - - Inicializar los n_progs
arr_tamaño = 8 - - Establecer igual al tamaño de matriz declarado de prg_name
prg_select = 0 -- Inicializa el selector de programas REPETIR

ESCRIBIR (chr(128),chr(137)) -- Borrar la pantalla de USUARIO TP


- - Obtener una lista de todos los programas TP que comienzan con "TEST"
PROG_LIST('TEST*',tp_type,n_skip,format,prg_name,n_progs,status,f_index)
chk_stat (estado) - - Comprobar el estado de PROG_LIST FOR indx =
1 a n_progs DO
WRITE (indx,':',prg_name[indx], CR) -- Escribe la lista de programas ENDFOR

SI (n_skip > 0) O (n_prog >0) ENTONCES


ESCRIBIR ('seleccione el programa a copiar:',CR) ESCRIBIR ('PULSE -1
para obtener la siguiente página de programas:') REPETIR

LEER (prg_select) -- obtener selección de programa HASTA


((prg_select >= -1) Y (prg_select <= n_progs)
Y (prg_select <> 0))
MÁS

B–88
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL

WRITE ('no hay programas TP para COPIAR', CR) WRITE


('Cancelando programa, ya que es necesario', CR) WRITE ('al
menos un programa TP para copiar', CR) ABORT

TERMINARA SI

- - Compruebe si la lista está completa y el usuario no ha realizado una selección. SI


((prg_select = -1) Y (n_progs < arr_size)) ENTONCES
índice_f = 0 - - restablecer f_index para volver a generar la lista.
n_progs = arr_size - - configúrelo para que REPEAT/UNTIL continúe
TERMINARA SI

- - Compruebe si el usuario ha realizado una selección SI


(prg_select <> -1) y luego
from_prog = prg_name[prg_select]-- Establecer from_prog para nombrar n_progs
seleccionados = 0 - - Configure n_prog para detener el bucle.
TERMINARA SI

HASTA (n_progs < arr_size) FIN


GetFromPrg

Aplicación de compensaciones al programa de Teach Pendant copiado: sobrescribir o eliminar programa

------------------------------------------------------------------------------------
---- 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

WRITE (CR, 'Si el programa ya existe, ¿desea',CR) WRITE ('sobrescribir el


archivo Sí: 1, No: 0?')
REPETIR
LEER (sí No)
HASTA ((sí = 0) O (sí = 1)) SI sí = 1 entonces
- - Configure over_sw para que el programa se sobrescriba si existe
sobre_sw = CIERTO
MÁS - - Configure over_sw para que el programa NO se sobrescriba si existe
sobre_sw = FALSO
TERMINARA SI

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

---- Haga que el usuario ingrese el desplazamiento para


---- las posiciones XYZWPR y JOINTPOS.
----------------------------------------------------------------------------------
RUTINA ObtenerCompensación
VAR
sí No : ENTERO
índice : ENTERO
EMPEZAR

- - Obtener el desplazamiento XYZWPR, off_xyz


REPETIR
ESCRIBIR ('Ingrese compensación para posiciones XYZWPR',CR)
ESCRIBIR (' X = ')
LEER (off_xyz.x)
ESCRIBIR (' Y = ')
LEER (off_xyz.y)
ESCRIBIR (' Z = ')
LEER (off_xyz.z)
ESCRIBIR (' W = ')
LEER (off_xyz.w)
ESCRIBIR (' P = ')
LEER (off_xyz.p)
ESCRIBIR (' R = ')
LEER (off_xyz.r)
- - Mostrar los valores de compensación que el usuario ingresó
ESCRIBIR ('La posición de compensación XYZWPR es',CR, off_xyz,CR)
ESCRIBIR ('¿Es correcta esta compensación? Sí: 1, No: 0? ') LEER (sí no)

HASTA (sí no = 1) - - introducir importes de compensación hasta que el usuario


- - Está satisfecho.
- - Obtener el desplazamiento JOINTPOS, jp_off
REPETIR
ESCRIBIR ('Ingresar desplazamiento para posiciones
JOINT',CR) FOR indx = 1 TO 6 DO - - bucle para el número de ejes del robot
ESCRIBIR ('J',indx,' = ') LEER
(jp_off[índice])
ENDFOR ESCRIBIR ('el desplazamiento de la posición JOINT es', CR)
PARA indx = 1 A 6 HACER
escribir (jp_off[indx],CR) ENDFOR - - Muestra los valores que ingresa el usuario

ESCRIBIR ('¿Es correcto este desplazamiento? Sí: 1, No: 0? ') LEER


(sí no)
HASTA (sí no = 1) FIN - - Ingrese montos de compensación hasta que el usuario
GetOffset - - es esté satisfecho

Aplicación de compensaciones al programa de Teach Pendant copiado - Aplicar compensaciones a posiciones

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

- - - Abra to_prog con acceso de lectura/escritura OPEN_TPE (to_prog,


TPE_RWACC, TPE_RDREJ, open_id, status) chk_stat(status)
- - comprobar el estado de OPEN_TPE
grupo_no = 1
- - - aplicar compensación a cada posición dentro de to_prog
- - - El número actual de posición que tiene el programa TPE es num_pos -1 FOR indx_pos = 1 a
num_pos-1 DO
- - Obtenga el TIPO DE DATOS de cada posición dentro de to_prog
- - Si es un JOINTPOS obtener también el número de ejes.
GET_POS_TYP (open_id, indx_pos, group_no, pos_typ, num_axs, estado) chk_stat (estado)

ESCRIBIR('get_pos_typ status', status,cr)

Aplicación de compensaciones al programa de Teach Pendant copiado: aplicación de compensaciones a las posiciones Cont.

- - Decidir si la posición, indx_pos, es un JOINTPOS o un XYZWPR SELECT pos_typ


OF
CASO (JNT_POS): - - La posición es un JOINTPOS
PARA indx_axs = 1 A MAX_AXS HACER - - inicializar con valores predeterminados
jp_org[indx_axs] = 0.0 - - Esto evita problemas con el

B–91
B. PROGRAMAS DE EJEMPLO DE KAREL MARRC75KR07091E Rev H

jp_nuevo[índx_ejes] = 0.0 - - CNV_REL_JPOS


ENDFOR
- - obtenga el JOINTPOS P[indx_pos] de to_prog ----- org_jpos =
GET_JPOS_TPE (open_id, indx_pos, status) chk_stat( status)

- - Convierta JOINTPOS en una matriz REAL para realizar el desplazamiento CNV_JPOS_REL


(org_jpos, jp_org, status)
chk_stat (estado)
- - Aplicar el desplazamiento a la matriz REAL FOR
indx_axs = 1 to num_axs DO
jp_nuevo[indx_axs] = jp_org[indx_axs] + jp_off[indx_axs] ENDFOR

- - Convertido de nuevo a un JOINTPOS.


- - La matriz de entrada, jp_new, no debe tener ningún valor sin inicializar
- - o se publicará el error 12311 - "Datos no inicializados".
- - Es por esto que previamente ponemos todos los valores a cero.
CNV_REL_JPOS (jp_nuevo, nuevo_jpos, estado)
chk_stat(estado)
- - Establezca la nueva posición de desplazamiento, new_jpos, en indx_pos
SET_JPOS_TPE (open_id, indx_pos, new_jpos, status) chk_stat(status)

write ('indx_pos', indx_pos, 'new_jpos',cr, new_jpos,cr) CASO (XYZ_POS): -- La


posición es XYZWPR
- - Obtener la posición XYZWPR P[indx_pos] de to_prog org_xyz =
GET_POS_TPE (open_id , indx_pos, status) chk_stat( status)
- - Comprobar el estado de GET_POS_TPE

Aplicación de compensaciones al programa de Teach Pendant copiado - Borra el menú de usuario de TP

- - Aplicar compensación al XYZWPR new_xyz.x =


org_xyz.x + off_xyz.x new_xyz.y = org_xyz.y +
off_xyz.y new_xyz.z = org_xyz.z + off_xyz.z
new_xyz.w = org_xyz.w + off_xyz. w
nuevo_xyz.p = org_xyz.p + apagado_xyz.p
nuevo_xyz.r = org_xyz.r + apagado_xyz.r

- - Establezca la nueva posición de desplazamiento, new_xyz, en indx_pos


SET_POS_TPE (open_id, indx_pos, new_xyz, status) chk_stat (estado)
- - Comprobar el estado de SET_POS_TPE
ENDSELECT
ENDFOR
- - - Cierre el programa TP antes de salir del programa
CLOSE_TPE (open_id, estado)
chk_stat (estado) - - Comprobar el estado de CLOSE_TPE
FIN ModificarPrg
-----------------------------------------------------------------------------------

B–92
MARRC75KR07091E Rev H B. PROGRAMAS DE EJEMPLO DE KAREL

---- Sección 3-F: Declaración TP_CLS


---- Borra la pantalla del Menú USUARIO TP y fuerza su visibilidad.
---- El código real reside en
RUTA_EX.KL
-----------------------------------------------------------------------------------
RUTINA TP_CLS DESDE rout_ex
-----------------------------------------------------------------------------------
- - - - Sección 4: Programa principal
-----------------------------------------------------------------------------------
COMENZAR -- CPY_TP
tp_cls - - Limpiar la pantalla del Menú USUARIO TP
ObtenerDePrg - - Obtener el programa TPE para copiar DESDE
ObtenerOvrSw - - Obtener el nombre del programa TPE para copiar TO
ObtenerCompensación - - Obtener el desplazamiento para modificar
- - el programa colgante de enseñanza
Modificar Prg - - Modificar el programa copiado por el desplazamiento
FIN CPY_TP

B–93
Apéndice C
COMANDO KCL DESCRIPCIÓN
ALFABÉTICA

Contenido

Apéndice C COMANDO KCL DESCRIPCIÓN ALFABÉTICA ..................................................... C-1


C.1 Comando ABORTAR.................................................... .................................................... ..... C-6
C.2 Comando ANEXAR ARCHIVO.................................................... ............................................. C-6
C.3 Comando AÑADIR NODO.................................................... .......................................... C-6
C.4 Comando CHDIR.................................................... .................................................... ...... C–7
C.5 Comando BORRAR TODO.................................................... ................................................ C–7
C.6 Comando CLEAR BREAK CONDITION.................................................... ....................... C–8
C.7 Comando CLEAR BREAK PROGRAM.................................................... ........................ C–8
C.8 Comando BORRAR DICT.................................................... .......................................................... C–9
C.9 Comando BORRAR PROGRAMA.................................................... ..................................... C–9
C.10 Comando BORRAR VARS.................................................... ............................................. C–9
C.11 Comando COMPRIMIR DICT.................................................... ..................................... C–10
C.12 Comando COMPRIMIR FORMULARIO.................................................... .................................... C–10
C.13 Comando CONTINUAR.................................................... .......................................................... C-11
C.14 Comando COPIAR ARCHIVO.................................................... .......................................................... C-11
C.15 Comando CREAR VARIABLE.................................................... .................................. C–12
C.16 comando ELIMINAR ARCHIVO.................................................... ............................................ C–13
C.17 Comando ELIMINAR NODO.................................................... ........................................ C–13
C.18 Comando ELIMINAR VARIABLE.................................................... .................................... C–14
C.19 comando DIRECTORIO.................................................... ............................................. C–14
C.20 Comando DISABLE BREAK PROGRAM.................................................... ................... C-15

C-1
C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL MARRC75KR07091E Rev H

C.21 Comando DESHABILITAR CONDICIÓN.................................................... ............................... C-15


C.22 Comando DESMONTAR.................................................... .......................................................... C-15
C.23 Comando EDITAR.................................................... .................................................... ...... C–16
C.24 HABILITAR PROGRAMA DE DESCANSO.................................................... ..................................... C–16
C.25 Comando HABILITAR CONDICIÓN.................................................... ................................ C–16
C.26 Comando FORMATO.................................................... .................................................... . C-17
C.27 Comando AYUDA.................................................... .................................................... ...... C-17
C.28 comando MANTENER.................................................... .................................................... ..... C–18
C.29 Comando INSERTAR NODO.................................................... ............................................. C–18
C.30 comando CARGAR TODO.................................................... ................................................ C–18
C.31 Comando CARGAR DICT.................................................... .......................................................... C-19
C.32 Comando CARGAR FORMULARIO.................................................... ............................................. C-19
C.33 Comando CARGAR MAESTRO.................................................... ........................................ C–20
C.34 Comando CARGAR PROGRAMA.................................................... ..................................... C–20
C.35 Comando CARGAR SERVO.................................................... .......................................... C–21
C.36 Comando CARGAR SISTEMA.................................................... ........................................ C–21
C.37 Comando CARGAR TP.................................................... .......................................................... C-22
C.38 Comando CARGAR VARS.................................................... ............................................. C-23
C.39 comando SALIR.................................................... .................................................... C–24
C.40 Comando MKDIR.................................................... .................................................... ... C–24
C.41 Comando MONTAR.................................................... .................................................... .. C–24
C.42 Comando MOVER ARCHIVO.................................................... ............................................................. C–25
C.43 Comando PAUSA.................................................... .................................................... ... C–25
C.44 comando PURGAR.................................................... .................................................... .. C–26
C.45 comando IMPRIMIR.................................................... .................................................... .... C–26
C.46 comando GRABAR.................................................... .................................................... C–27
C.47 Comando RENOMBRAR ARCHIVO.................................................... ............................................. C–27
C.48 Comando RENOMBRAR VARIABLE.................................................... ................................ C–28
C.49 Comando RENOMBRAR VARS.................................................... ........................................ C–28
C.50 Comando REINICIAR.................................................... .................................................... ... C–29
C.51 Comando RMDIR.................................................... .................................................... ... C–29
C.52 comando EJECUTAR.................................................... .................................................... ....... C–30
C.53 Comando RUNCF.................................................... .................................................... .. C–30
C.54 Comando GUARDAR MAESTRO.................................................... ........................................ C-31
C.55 Comando GUARDAR SERVO.................................................... .......................................... C-31
C.56 Comando GUARDAR SISTEMA.................................................... ............................................. C-31
C.57 Comando GUARDAR TP.................................................... .................................................... C-32
C.58 Comando GUARDAR VARS.................................................... ............................................. C-33
C.59 Comando SET BREAK CONDITION.................................................... ......................... C-33
C.60 Comando SET BREAK PROGRAM.................................................... .......................... C-34
C.61 Comando ESTABLECER RELOJ.................................................... ............................................. C-35

C-2
MARRC75KR07091E Rev H C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL

C.62 Comando ESTABLECER POR DEFECTO.................................................... ............................................. C-35


C.63 Comando ESTABLECER GRUPO.................................................... ............................................ C-35
C.64 Comando ESTABLECER IDIOMA.................................................... ..................................... C-36
C.65 Comando ESTABLECER VARIABLE LOCAL.................................................... .......................... C-36
C.66 Comando ESTABLECER PUERTO.................................................... .......................................................... C–37
C.67 Comando ESTABLECER TAREA.................................................... ................................................ C–37
C.68 Comando ESTABLECER RASTREO.................................................... ............................................. C-38
C.69 Comando ESTABLECER VARIABLES.................................................... ........................................ C-38
C.70 Comando ESTABLECER VERIFICAR.................................................... ............................................. C–39
C.71 comando MOSTRAR CORTE.................................................... ............................................. C–39
C.72 comando MOSTRAR EDIFICIOS.................................................... ...................................... C-40
C.73 comando MOSTRAR CONDICIÓN.................................................... .................................... C-40
C.74 comando MOSTRAR RELOJ.................................................... ............................................. C-40
C.75 comando MOSTRAR CURPOS.................................................... ...................................... C-41
C.76 comando MOSTRAR POR DEFECTO.................................................... ...................................... C-41
C.77 comando MOSTRAR DISPOSITIVO.................................................... ........................................ C-41
C.78 comando MOSTRAR DICTOS....................................................
.......................................... C-41
C.79 comando MOSTRAR GRUPO.................................................... ........................................ C-41
C.80 comando MOSTRAR HISTORIAL.................................................... ...................................... C-42
C.81 comando MOSTRAR IDIOMA.................................................... .......................................... C-42
C.82 comando MOSTRAR IDIOMAS.................................................... ............................................. C-42
C.83 Comando MOSTRAR VARIABLE LOCAL.................................................... ....................... C-42
C.84 Comando MOSTRAR VARS LOCALES.................................................... ............................... C-44
C.85 comando MOSTRAR MEMORIA.......................................................................................... C-44
C.86 comando MOSTRAR PROGRAMA.................................................... .................................... C-44
C.87 comando MOSTRAR PROGRAMAS.................................................... .................................. C-45
C.88 comando MOSTRAR SISTEMA.................................................... ............................................. C-45
C.89 comando MOSTRAR TAREA.................................................... ............................................ C-45
C.90 comando MOSTRAR TAREAS.................................................... .......................................... C-46
C.91 comando MOSTRAR RASTREO.................................................... ............................................. C-46
C.92 Comando MOSTRAR TIPOS.................................................... .......................................... C-46
C.93 comando MOSTRAR VARIABLE.................................................... ..................................... C–47
C.94 comando MOSTRAR VARS.................................................... ............................................ C–47
C.95 Comando SHOW tipo_datos.................................................... ..................................... C–48
C.96 comando SIMULAR.................................................... .......................................................... C–48
C.97 Comando SALTAR.................................................... .................................................... ...... C-49
C.98 Comando PASO APAGADO.................................................... ................................................ C-50
C.99 PASO EN comando.................................................... .......................................................... C-50
C.100 Comando TRADUCIR.................................................... ............................................ C-50
C.101 comando TIPO.................................................... .................................................... ..... C-51
C.102 Comando UNSIMULATE.................................................... .......................................... C-51

C–3
C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL MARRC75KR07091E Rev H

C.103 Comando ESPERAR.................................................... .................................................... ......C–52

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.

La siguiente notación se utiliza para describir la sintaxis del comando KCL:

• < >indica argumentos opcionales a un comando

• |indica una elección que debe hacerse


• { }indica que un elemento se puede repetir

• file_spec: <nombre_dispositivo:><\\nombre_host\><nombre_ruta\>nombre_archivo.tipo_archivo |

<nombre_dispositivo:><\\nombre_host\>'nombre_específico_host'

• nombre_ruta: <nombre_archivo\><dir\dir\. . .>

• file_name: máximo de 36 caracteres, sin tipo de archivo

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.

ruta_nombre: file_name\<path_name>: es un campo opcional definido recursivamente, cada campo consta de un


máximo de 36 caracteres. Se utiliza para seleccionar el subdirectorio del archivo. El directorio raíz o de origen se
maneja como un caso especial. Se designa mediante un nombre_archivo de longitud cero. Por ejemplo, el acceso al
subdirectorio SYS vinculado fuera de la raíz tendría el nombre de ruta '\SYS'. Una especificación de archivo completa
que use este nombre de ruta se vería así, 'C1:\HOST\SYS\FILE.KL'.

Nombre del archivo:de uno a 36 caracteres

Tipo de archivo:de cero a tres caracteres

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

C.1 Comando ABORTAR

Sintaxis:ABORTAR < (prog_name) |TODOS) > <FUERZA>

dónde:

prog_name:el nombre de cualquier programa KAREL o TP que sea una tarea

TODO: aborta todas las tareas en ejecución o en pausa

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.

Ejemplos:KCL> ABORTAR test_prog FORCE

KCL> ABORTAR TODO

C.2 Comando ANEXAR ARCHIVO

Sintaxis:ANEXAR ARCHIVOinput_file_specAespecificación_archivo_salida

dónde:

input_file_spec:una especificación de archivo válida

especificación_archivo_de_salida:una especificación de archivo válida

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.

Ejemplos:KCL> ANEXAR ARCHIVO flpy:test.kl A productn.kl

KCL> ANEXAR ARCHIVO test.kl A productn.kl

C.3 Comando AÑADIR NODO

Sintaxis:AÑADIR NODO <[prog_name]>nombre_var

dónde:

C-6
Traducido del inglés al español - www.onlinedoctranslator.com

MARRC75KR07091E Rev H C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL

prog_name:el nombre de cualquier programa KAREL o TP

nombre_var:el nombre de cualquier variable de tipo PATH

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.

Ejemplos:KCL> AÑADIR NODO [test_prog]weld_pth

KCL> AÑADIR NODO soldadura_pth

C.4 Comando CHDIR

Sintaxis:CHDIR <nombre del dispositivo>\<ruta_nombre>\o CD <nombre del dispositivo>\<ruta_nombre>

dónde:

nombre del dispositivo:un dispositivo especificado

ruta_nombre:un subdirectorio creado previamente en el dispositivo de la tarjeta de memoria usando el comando


mkdir. Cuando se usa el comando chdir para cambiar a un subdirectorio, la ruta completa se mostrará en la pantalla del
colgante de aprendizaje como mc:\new_dir\new_file.

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.

Ejemplos:KCL> CHDIR rd:\

KCL>CD

KCL> CD mc:\a

KCL > CD ..

C.5 Comando BORRAR TODO

Sintaxis:BORRAR TODO <SÍ>

dónde:

SÍ:no se pide confirmación

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

Ejemplos:KCL> BORRAR TODO

¿Está seguro? SÍ

KCL> BORRAR TODO Y

C.6 Comando CLEAR BREAK CONDITION

Sintaxis:BORRAR CONDICIÓN DE ROTURA <prog_name> (brk_pnt_no|TODOS)

dónde:

prog_name:el nombre de cualquier programa KAREL en memoria

brk_pnt_no:un punto de ruptura de condición particular

TODO: borra todos los puntos de ruptura de condición

Objetivo:Borra los puntos de ruptura de condición especificados del programa predeterminado o especificado.

Un punto de interrupción de condición solo afecta al programa en el que se establece.

Ejemplos:KCL> BORRAR CONDICIÓN DE ROTURA test_prog 3

KCL> BORRAR BREAK COND TODO

C.7 Comando CLEAR BREAK PROGRAM

Sintaxis:BORRAR PROGRAMA DE DESCANSO <prog_name> (brk_pnt_no|TODOS)

dónde:

prog_name:el nombre de cualquier programa KAREL en memoria

brk_pnt_no:un punto de interrupción de programa en particular

TODO: borra todos los puntos de ruptura

Objetivo:Borra los puntos de interrupción especificados del programa especificado o predeterminado.

Un punto de interrupción solo afecta al programa en el que se establece.

Ejemplos:KCL> BORRAR PROGRAMA DE DESCANSO test_prog 3

KCL> BORRAR BREAK PROG TODO

C–8
MARRC75KR07091E Rev H C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL

C.8 Comando BORRAR DICT

Sintaxis:BORRAR DICTOnombre_dict<(nombre_idioma|TODOS)>

dónde:

nombre_dict:el nombre de cualquier diccionario a borrar

nombre_idioma:el nombre de la lengua. Las opciones disponibles son INGLÉS, JAPONÉS, FRANCÉS,
ALEMÁN, ESPAÑOL o PREDETERMINADO.

TODO: borra el diccionario de todos los idiomas

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.

Ejemplos:KCL> BORRAR DICT tpsy INGLÉS

KCL> BORRAR DICT tpsy

C.9 Comando BORRAR PROGRAMA

Sintaxis:BORRAR PROGRAMA <prog_name> <SÍ>

dónde:

prog_name:el nombre de cualquier KAREL o programa colgante de enseñanza en la memoria

SÍ: no se solicita confirmación

Objetivo:Borra los datos del programa de la memoria para el programa predeterminado o especificado.

Ejemplos:KCL> BORRAR PROGRAMA test_prog

¿Está seguro? SÍ

KCL> BORRAR PROG test_prog Y

C.10 Comando BORRAR VARS

Sintaxis:BORRAR VARS <prog_name> <SÍ>

dónde:

prog_name:el nombre de cualquier KAREL o programa de enseñanza colgante con variables

C–9
C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL MARRC75KR07091E Rev H

SÍ: no se solicita confirmación

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.

Ejemplos:KCL> BORRAR VARS test_prog

¿Está seguro? SÍ

KCL> BORRAR VARS test_prog Y

C.11 Comando COMPRIMIR DICT

Sintaxis:COMPRIMIR DICTOfile_name

dónde:

Nombre del archivo:el nombre de archivo del diccionario de usuario que desea comprimir.

Objetivo:Comprime un archivo de diccionario desde el dispositivo de almacenamiento predeterminado, utilizando el nombre de


diccionario especificado. El tipo de archivo del diccionario del usuario debe ser “.UTX”. El archivo de diccionario comprimido tendrá el
mismo nombre de archivo que el diccionario del usuario y será del tipo “.TX”.

Ver también:Capítulo 10DICCIONARIOS Y FORMULARIOS

Ejemplo:KCL> COMPRIMIR DICT tphcmneg

C.12 Comando COMPRIMIR FORMULARIO

Sintaxis:COMPRIMIR FORMULARIO <file_name>

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

nombre de archivo de formulario, se utiliza el nombre “FORMULARIO”.

Ver también:Capítulo 10DICCIONARIOS Y FORMULARIOS

Ejemplos:KCL> COMPRIMIR FORMULARIO

C–10
MARRC75KR07091E Rev H C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL

KCL> COMPRIMIR FORMULARIO mnpalteg

C.13 Comando CONTINUAR


Sintaxis:CONTINUAR <(prog_name) |TODOS)>

dónde:

prog_name:el nombre de cualquier KAREL o programa de enseñanza colgante que sea una tarea

TODO: continúa todas las tareas en pausa

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.

Ejemplos:KCL> CONTINUAR prueba_prog

KCL> CONT TODO

C.14 Comando COPIAR ARCHIVO

Sintaxis:COPIAR <ARCHIVO>from_file_specAto_file_spec<SOBREESCRIBIR>

dónde:

from_file_spec:una especificación de archivo válida

to_file_spec:una especificación de archivo válida

OVERWRITE: especifica copiar (sobrescribir) un archivo existente

Objetivo:Copia el contenido de un archivo a otro con la opción de sobrescribir. Permite transferencias de


archivos entre diferentes dispositivos y entre el controlador y un sistema host.

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.

Ejemplos:KCL> COPIAR flpy:\test.kl A rdu:newtest.kl

KCL> COPIAR mc:\test_dir\test.kl TO mc:\test_dir\newtest.kl

KCL> COPIAR ARCHIVO flpy:\*.kl A rd:*.kl

KCL> COPIAR *.* A fr:

KCL> COPIAR ARCHIVO *.kl A rd:\*.bak SOBREESCRIBIR

KCL> COPIAR ARCHIVO flpy:\*main*.kl TO rd:* OV

KCL> COPIAR mdb:*.tp A mc:

C.15 Comando CREAR VARIABLE


Sintaxis:CREAR VARIABLE <[prog_name]>var_name <IN (CMOS | DRAM)> : tipo_datos

dónde:

prog_name:el nombre de cualquier programa KAREL o TP

var_name:tipo_de_datos:un nombre de variable y un tipo de datos válidos

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.

Si se especifica IN CMOS, la variable se creará en la memoria permanente. El valor de la variable se


recuperará cada vez que se encienda el controlador.

Ver también:Comando ESTABLECER VARIABLES

C–12
MARRC75KR07091E Rev H C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL

Ejemplos:KCL> CREAR VAR [test_prog]recuento EN CMOS: ENTERO

KCL> CREAR VAR vec:ARRAY[3,2,4] DEL VECTOR

C.16 comando ELIMINAR ARCHIVO

Sintaxis:BORRAR ARCHIVOfile_spec<SÍ>

dónde:

file_spec:una especificación de archivo válida

SÍ: no se solicita confirmación

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.

Ejemplos:KCL> ELIMINAR ARCHIVO testprog.pc

¿Está seguro? SÍ

KCL> ELIMINAR ARCHIVO rd:\testprog.pc SI

KCL> ELIMINAR ARCHIVO rd:\*.* Y

C.17 Comando ELIMINAR NODO


Sintaxis:ELIMINAR NODO <[prog_name]>nombre_var [índice_nodo]

dónde:

prog_name:el nombre de cualquier programa KAREL o TP

nombre_var:el nombre de cualquier variable de tipo PATH

[índice_nodo] :un nodo en el camino

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.

Ejemplos:KCL> ELIMINAR NODO [test_prog]weld_pth[4]

KCL> ELIMINAR NODO soldar_pth[3]

C–13
C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL MARRC75KR07091E Rev H

C.18 Comando ELIMINAR VARIABLE

Sintaxis:ELIMINAR VARIABLE <[prog_name]>nombre_var

dónde:

prog_name:el nombre de cualquier programa KAREL o TP con variables

nombre_var:el nombre de cualquier variable de programa

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.

Ejemplos:KCL> ELIMINAR VARIABLE [test_prog]weld_pth

KCL> ELIMINAR VAR soldadura_pth

C.19 comando DIRECTORIO

Sintaxis:DIRECTORIO <file_spec>

dónde:

file_spec:una especificación de archivo válida

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)

El nombre del subdirectorio, si está disponible

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.

Ejemplos:KCL> DIRECTORIO rd:

KCL> DIR *.kl

KCL> DIR *SPOT*.kl

C–14
MARRC75KR07091E Rev H C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL

KCL> CD MC: \test_dir

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.

C.20 Comando DISABLE BREAK PROGRAM

Sintaxis:DESACTIVAR PROGRAMA DE DESCANSO <prog_name>brk_pnt_no

dónde:

prog_name:el nombre de cualquier programa KAREL o TP en memoria

brk_pnt_no:un punto de interrupción de programa en particular

Objetivo:Deshabilita el punto de interrupción especificado en el programa especificado o predeterminado.

Ejemplos:KCL> DESHABILITAR PROGRAMA DE DESCANSO test_prog 3

KCL> DESHABILITAR PAUSA PROG 3

C.21 Comando DESHABILITAR CONDICIÓN

Sintaxis:CONDICIÓN DE DESHABILITACIÓN <prog_name>condition_no

dónde:

prog_name:el nombre de cualquier programa KAREL en memoria

condition_no:una condición particular

Objetivo:Deshabilita la condición especificada en el programa especificado o predeterminado.

Ejemplos:KCL> DESHABILITAR CONDICIÓN test_prog

KCL> DESHABILITAR COND 3

C.22 Comando DESMONTAR

Sintaxis:DESMONTARnombre del dispositivo:

dónde:

nombre del dispositivo:dispositivo a desmontar

C–15
C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL MARRC75KR07091E Rev H

Objetivo:Desmonta un dispositivo de almacenamiento montado e indica al controlador que un dispositivo de almacenamiento


ya no está disponible para leer o escribir datos.

Ejemplo:KCL> DESMONTAR rd:

C.23 Comando EDITAR


Sintaxis:EDITAR <file_spec>

dónde:

file_spec:una especificación de archivo válida

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.

Ejemplos:KCL> EDITAR startup.cf

KCL> ED

C.24 HABILITAR PROGRAMA DE DESCANSO

Sintaxis:HABILITAR PROGRAMA DE DESCANSO <prog_name>brk_pnt_no

dónde:

prog_name:el nombre de cualquier programa KAREL o TP en memoria

brk_pnt_no:un punto de interrupción de programa en particular

Objetivo:Habilita el punto de interrupción especificado en el programa especificado o predeterminado.

Ejemplos:KCL> HABILITAR PROGRAMA DE DESCANSO test_prog 3

KCL> HABILITAR PAUSA PROG 3

C.25 Comando HABILITAR CONDICIÓN

Sintaxis:HABILITAR CONDICIÓN <prog_name>condition_no

dónde:

C–16
MARRC75KR07091E Rev H C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL

prog_name:el nombre de cualquier programa KAREL en memoria

condition_no:una condición particular

Objetivo:Habilita la condición especificada en el programa especificado o predeterminado.

Ejemplos:KCL> HABILITAR CONDICIÓN test_prog

KCL> HABILITAR COND 3

C.26 Comando FORMATO

Sintaxis:FORMATOnombre del dispositivo:<nombre_volumen> <SÍ>

dónde:

nombre del dispositivo:el dispositivo especificado a ser inicializado

nombre_volumen:etiqueta para el dispositivo

SÍ: no se solicita confirmación

Objetivo:Formatea un dispositivo especificado. Se debe formatear un dispositivo antes de almacenar archivos en él.

Ejemplos:KCL> FORMATO rd:

¿Está seguro? SÍ

KCL> FORMATO rd: Y

C.27 Comando AYUDA

Sintaxis:AYUDA <nombre_comando>

dónde:

nombre_comando:un comando KCL

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.

Ejemplos:KCL> AYUDA CARGAR PROG

KCL> AYUDA

C-17
C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL MARRC75KR07091E Rev H

C.28 comando MANTENER

Sintaxis:MANTENER <(prog_name|TODOS)>

dónde:

prog_name:el nombre de cualquier programa KAREL o TP

ALL: contiene todos los programas en ejecución

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.

Ejemplos:KCL> MANTENER test_prog

KCL> HO TODO

C.29 Comando INSERTAR NODO


Sintaxis:INSERTAR NODO <[prog_name]>nombre_var [índice_nodo]

dónde:

prog_name:el nombre de cualquier programa KAREL o TP

nombre_var:el nombre de cualquier variable de tipo PATH

[índice_nodo]:un nodo en el camino

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.

Ejemplos:KCL> INSERTAR NODO [test_prog]weld_pth[2]

KCL> INSERTAR NODO soldar_pth[3]

C.30 comando CARGAR TODO

Sintaxis:CARGAR TODO <file_name> <CONVERTIR>

C–18
MARRC75KR07091E Rev H C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL

dónde:

Nombre del archivo:un nombre de archivo válido

CONVERTIR: convierte las variables a la definición del sistema

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

variables son ".PC" y ".VR", respectivamente.

Sifile_nameno se especifica, se utiliza el programa predeterminado. Si no se ha establecido el valor predeterminado, aparecerá el


mensaje "Nombre de programa predeterminado no establecido".

Ejemplos:KCL> CARGAR TODO test_prog

KCL> CARGAR TODO

C.31 Comando CARGAR DICT

Sintaxis:CARGAR DICTfile_name dict_name<nombre_idioma>

dónde:

Nombre del archivo:el nombre del archivo a cargar

nombre_dict:el nombre de cualquier diccionario a cargar. El nombre se truncará a 4 caracteres.

nombre_idioma:un idioma en particular. Las opciones disponibles son INGLÉS, JAPONÉS, FRANCÉS, ALEMÁN,
ESPAÑOL o PREDETERMINADO.

Objetivo:Carga un archivo de diccionario desde el dispositivo de almacenamiento predeterminado y el directorio predeterminado en la

memoria usando el nombre de archivo especificado. Se supone que el tipo de archivo es ".TX".

Ver también:Capítulo 10DICCIONARIOS Y FORMULARIOS

Ejemplos:KCL> CARGAR DICT tpaleg tpal FRANCÉS

KCL> CARGAR DICT tpaleg tpal

C.32 Comando CARGAR FORMULARIO

Sintaxis:CARGAR FORMULARIO <nombre del formulario>

dónde:

nombre del formulario:el nombre del formulario a cargar

C-19
C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL MARRC75KR07091E Rev H

Objetivo:Carga el formulario especificado, desde el dispositivo de almacenamiento predeterminado, en la memoria. Un formulario


consta de un archivo de diccionario comprimido y un archivo de variables. Si no se especifica ningún nombre, se cargan 'FORM.TX' y
'FORM.VR'.

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

Ejemplo:KCL> CARGAR FORMULARIO

Cargando FORM.TX con el nombre de diccionario FORM

Cargando FORMULARIO.VR

KCL> CARGAR FORMULARIO tpexameg

Cargando TPEXAMEG.TX con nombre de diccionario EXAMEN

Cargando EXAMEN.VR

C.33 Comando CARGAR MAESTRO

Sintaxis:CARGAR MAESTRO <file_name> <CONVERTIR>

dónde:

Nombre del archivo:un nombre de archivo válido

CONVERTIR: convierte las variables a la definición del sistema

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".

Sifile_nameno se especifica, se utiliza el nombre de archivo predeterminado, “SYSMAST.SV”.

Ejemplo:KCL> CARGAR MAESTRO

C.34 Comando CARGAR PROGRAMA


Sintaxis:CARGAR PROGRAMA <file_name>

dónde:

Nombre del archivo:un nombre de archivo válido

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

nombre de archivo especificado o predeterminado. Se supone que el tipo de archivo es ".PC".

Sifile_specno se especifica, se utiliza el programa predeterminado. Si no se ha establecido el valor predeterminado, aparecerá el


mensaje "Nombre de programa predeterminado no establecido".

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.

Ejemplos:KCL> CARGAR PROGRAMA test_prog

KCL> CARGAR PROG

C.35 Comando CARGAR SERVO


Sintaxis:CARGAR SERVOS <file_name> <CONVERTIR>

dónde:

Nombre del archivo:un nombre de archivo válido

CONVERTIR: convierte las variables a la definición del sistema

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".

Sifile_nameno se especifica, se utiliza el nombre de archivo predeterminado, “SYSSERVO.SV”.

Ejemplo:KCL> CARGAR SERVO

C.36 Comando CARGAR SISTEMA


Sintaxis:SISTEMA DE CARGA <file_name> <CONVERTIR>

dónde:

Nombre del archivo:un nombre de archivo válido

CONVERTIR: convierte las variables a la definición del sistema

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

predeterminado. Se supone que el tipo de archivo es ".SV".

C–21
C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL MARRC75KR07091E Rev H

Sifile_nameno se especifica, se utiliza el nombre de archivo predeterminado, “SYSVARS.SV”.

Ejemplos:KCL> SISTEMA DE CARGA awdef

KCL> CONVERTIR SISTEMA DE CARGA

Las siguientes reglas se aplican a las variables del sistema:

• 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.

C.37 Comando CARGAR TP

Sintaxis:CARGAR TP <file_name> <SOBREESCRIBIR>

dónde:

Nombre del archivo:un nombre de archivo válido

OVERWRITE: si se especifica, puede sobrescribir un programa TP previamente cargado con el mismo nombre

Objetivo:Carga un programa TP 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 ".TP".

C-22
MARRC75KR07091E Rev H C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL

Sifile_nameno se especifica, se utiliza el programa predeterminado. Si no se ha establecido el valor predeterminado, aparecerá el


mensaje "Nombre de programa predeterminado no establecido".

Ejemplos:KCL> LOAD TP programa de prueba

KCL> CARGAR TP

C.38 Comando CARGAR VARS


Sintaxis:CARGAR VARIABLES <file_name> <CONVERTIR>

dónde:

Nombre del archivo:un nombre de archivo válido

CONVERTIR: convierte las variables a la definición del sistema

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".

Sifile_nameno se especifica, se utiliza el programa predeterminado. Si no se ha establecido el valor predeterminado, aparecerá el


mensaje "Nombre de programa predeterminado no establecido".

Ejemplos:KCL> CARGAR VARS test_prog

KCL> CARGAR VARS

Las siguientes reglas se aplican a las variables de matriz:

• 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".

C.39 comando SALIR

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

(El mensaje de alarma: "Cierre de sesión (SAM) CONFIGURACIÓN de KCL")

Nombre de usuario de KCL>

C.40 Comando MKDIR


Sintaxis:MKDIR<nombre_dispositivo>\nombre_ruta

dónde:

nombre del dispositivo:un dispositivo de almacenamiento válido

ruta_nombre:un subdirectorio creado previamente en el dispositivo de la tarjeta de memoria usando el comando mkdir.

Objetivo:MKDIR crea un subdirectorio en el dispositivo de la tarjeta de memoria (MC:). FANUC America


Corporation recomienda anidar subdirectorios solo en 8 niveles.

Ejemplo:KCL> MKDIR mc:\test_dir

KCL> MKDIR mc:\prog_dir\tpnx_dir

C.41 Comando MONTAR


Sintaxis:MONTARnombre del dispositivo

dónde:

nombre del dispositivo:un dispositivo de almacenamiento válido

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.

Ejemplo:KCL> MONTAJE rd:

C.42 Comando MOVER ARCHIVO

Sintaxis:MOVER <ARCHIVO>file_spec

dónde:

file_spec:una especificación de archivo válida.

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.

Ejemplos:KCL> MOVER ARCHIVO fr:*.kl

KCL> MOVER rd:*.*

C.43 Comando PAUSA


Sintaxis:PAUSA <(prog_name|TODOS)> <FUERZA>

dónde:

prog_name:el nombre de cualquier programa KAREL o TP que sea una tarea

TODO: pausa todas las tareas en ejecución

FORCE: pausa la tarea incluso si se establece el atributo NOPAUSE

Objetivo:Pausa la tarea en ejecución especificada. Siprog_nameno se especifica, se utiliza el programa predeterminado.

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.

Ejemplos:KCL> PAUSA prueba_prog FORZAR

KCL> PAUSAR TODO

C.44 comando PURGAR


Sintaxis:PURGAnombre del dispositivo

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.

Ejemplos:KCL> PURGA de:

KCL> PURGAR mf:

C.45 comando IMPRIMIR

Sintaxis:IMPRESIÓNfile_spec

dónde:

C–26
MARRC75KR07091E Rev H C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL

file_spec:una especificación de archivo válida

Objetivo:Le permite imprimir el contenido de un archivo ASCII en el dispositivo predeterminado.

Ejemplo:KCL> IMPRIMIR testprog.kl

C.46 comando GRABAR


Sintaxis:GRABAR <[prog_name]>nombre_var

dónde:

prog_name:el nombre de cualquier programa KAREL o TP

nombre_var:el nombre de cualquier variable POSITION, XYZWPR o JOINTPOS

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.

Ejemplo:KCL> GRABAR [paint_prog]start_pos

KCL> REGISTRAR $GRUPO[1].$uframe

C.47 Comando RENOMBRAR ARCHIVO

Sintaxis:RENOMBRAR ARCHIVOespecificación_archivo_antiguoAespecificación_archivo_nuevo

dónde:

especificación_archivo_antiguo:una especificación de archivo válida

new_file_spec:una especificación de archivo válida

Objetivo:cambia elespecificación_archivo_antiguohacianew_file_spec.El archivo ya no existirá bajo el


especificación_archivo_antiguo.losespecificación_archivo_antiguoy elnew_file_specdebe incluir tanto el nombre del archivo como el
tipo de archivo. Se debe usar el mismo tipo de archivo en ambos file_specs pero no pueden ser el mismo archivo.

Utilice el comando KCL> COPIAR ARCHIVO para cambiar el nombre de dispositivo de un archivo.

Ejemplos:KCL> RENOMBRAR ARCHIVO test.kl A productn.kl

KCL> CAMBIAR EL NOMBRE DEL ARCHIVO mycmd.cf A yourcmd.cf

C–27
C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL MARRC75KR07091E Rev H

C.48 Comando RENOMBRAR VARIABLE

Sintaxis:RENOMBRAR VARIABLE <[prog_name]>antiguo_var_ nombre nuevo_var_nombre

dónde:

prog_name:el nombre de cualquier programa KAREL o TP

antiguo_nombre_var:el nombre de cualquier variable de programa

nuevo_nombre_var:un nombre de variable de programa válido

Objetivo:cambia elantiguo_nombre_varhacianuevo_nombre_varen el programa especificado con el


antiguo_nombre_var.La variable ya no existirá bajo elantiguo_nombre_var.La variable debe existir en la
memoria bajo elantiguo_nombre_varen el programa especificado.

losnuevo_nombre_varya no puede existir en la memoria. La variable sigue perteneciendo al mismo programa.


No puede especificar unprog_namecon elnuevo_nombre_var.

Debe ingresar el comando KCL> GUARDAR VARS para que el cambio sea permanente.

Ejemplos:KCL> RENOMBRAR VARIABLE [test_prog]count part_count

KCL> RENOMBRAR VAR cuenta part_count

C.49 Comando RENOMBRAR VARS


Sintaxis:RENOMBRAR VARSantiguo_prog_nombre nuevo_prog_nombre

dónde:

antiguo_nombre_prog:el nombre de cualquier programa KAREL o TP

nombre_nuevo_prog:el nombre de cualquier programa KAREL o TP

Objetivo:Cambia el nombre de los datos variables asociados con elantiguo_nombre_proghacia


nombre_nuevo_prog.Los datos variables ya no existirán bajo elantiguo_nombre_prog.

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

Ejemplo:KCL> RENOMBRAR VARS prueba_1 prueba_2

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

RENOMBRAR VARSprog_1 prog_2

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.

C.50 Comando REINICIAR

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

C.51 Comando RMDIR


Sintaxis:RMDIR<nombre_dispositivo>\nombre_ruta

dónde:

nombre del dispositivo:un dispositivo de almacenamiento válido

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

Ejemplo:KCL> RMDIR mc:\test_dir

KCL> RMDIR mc:\test_dir\prog_dir

C.52 comando EJECUTAR

Sintaxis:EJECUTAR <prog_name>

dónde:

prog_name:el nombre de cualquier programa KAREL o TP

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.

Ejemplo:KCL> EJECUTAR prueba_prog

C.53 Comando RUNCF


Sintaxis:RUNCFinput_file_spec<especificación_archivo_de_salida>

dónde:

input_file_spec:una especificación de archivo válida

especificación_archivo_de_salida:una especificación de archivo válida

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.

Siespecificación_archivo_de_salidano se especifica, la salida se mostrará en la ventana de salida de KCL.

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

Ejemplos:Salida de inicio KCL> RUNCF

KCL> Arranque RUNCF

C.54 Comando GUARDAR MAESTRO

Sintaxis:GUARDAR MAESTRO <file_name>

dónde:

Nombre del archivo:un nombre de archivo válido

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".

Sifile_nameno se especifica, se utiliza el nombre de archivo predeterminado, “SYSMAST.SV”.

Ejemplo:KCL> GUARDAR MAESTRO

C.55 Comando GUARDAR SERVO


Sintaxis:GUARDAR SERVOS <file_name>

dónde:

Nombre del archivo:un nombre de archivo válido

Objetivo:Guarda los parámetros del servo en el dispositivo de almacenamiento predeterminado utilizando el nombre de archivo especificado

o predeterminado. El tipo de archivo será ".SV".

Sifile_nameno se especifica, se utiliza el nombre de archivo predeterminado, “SYSSERVO.SV”.

Ejemplo:KCL> GUARDAR SERVO

C.56 Comando GUARDAR SISTEMA

Sintaxis:GUARDAR SISTEMA <file_name>

dónde:

Nombre del archivo:un nombre de archivo válido

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”.

Ejemplos:KCL> GUARDAR SISTEMA archivo_1

KCL> GUARDAR SISTEMA

C.57 Comando GUARDAR TP

Sintaxis:GUARDAR TP <file_name> <=prog_name>

dónde:

Nombre del archivo:un nombre de archivo válido

prog_name:el nombre de cualquier programa TP

Objetivo:Guarda el programa TP especificado en el archivo especificado (.TP). Si no especifica unfile_name o un


prog_name,se utiliza el nombre del programa predeterminado. Si solo unfile_namese especifica, ese nombre también
se utilizará paraprog_name.Por ejemplo:

GUARDAR TPfile_1

En este caso, el programa TPfile_1se guarda en un archivo llamadofile_1.TP.

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 (=).

Ejemplos:KCL> GUARDAR TP archivo_1 = prog_1

KCL> GUARDAR archivo TP_1

KCL> GUARDAR TP = prog_1

KCL> GUARDAR TP

C-32
MARRC75KR07091E Rev H C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL

C.58 Comando GUARDAR VARS

Sintaxis:GUARDAR VARIALES <file_name> <=prog_name>

dónde:

Nombre del archivo:un nombre de archivo válido

prog_name:el nombre de cualquier programa KAREL o TP

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.

GUARDAR VARS =prog_1

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.

Ejemplos:KCL> GUARDAR VARS archivo_1 = prog_1

KCL> GUARDAR VARS archivo_1

KCL> GUARDAR VARS = prog_1

KCL> GUARDAR VARS

C.59 Comando SET BREAK CONDITION


Sintaxis:ESTABLECER CONDICIÓN DE PARO <prog_name>condition_no

dónde:

prog_name:el nombre de cualquier programa KAREL en ejecución o en pausa

condition_no:una condición particular

C-33
C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL MARRC75KR07091E Rev H

Objetivo:Le permite establecer un punto de interrupción en la condición especificada en el programa especificado o el


programa predeterminado. La condición especificada ya debe existir, por lo que el programa debe estar ejecutándose o en
pausa. Cuando se activa el punto de interrupción, se publicará un mensaje en el registro de errores y se borrará el punto de
interrupción.

Ejemplos:KCL> ESTABLECER CONDICIÓN DE DESCANSO test_prog 1

KCL> SET BREAK COND 2

C.60 Comando SET BREAK PROGRAM


Sintaxis:CONFIGURAR PROGRAMA DE DESCANSO <prog_name>brk_pnt_no line_no<(PAUSA | PANTALLA |
SEGUIMIENTO EN | RASTREO)>

dónde:

prog_name:el nombre de cualquier programa KAREL o TP en memoria

brk_pnt_no:un punto de interrupción de programa en particular

línea_no:un número de línea

PAUSA: la tarea se detiene cuando se ejecuta el punto de interrupción

PANTALLA: el mensaje se muestra en el menú USUARIO de la consola portátil cuando se ejecuta el punto de interrupción

TRACE ON: el seguimiento se habilita cuando se ejecuta el punto de interrupción

TRACE OFF: el seguimiento está deshabilitado 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.

Ejemplos:KCL> SET PAUSA PROGRAMA test_prog 1 22 PANTALLA

C-34
MARRC75KR07091E Rev H C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL

KCL> SET BREAK PROG 3 30

C.61 Comando ESTABLECER RELOJ

Sintaxis:AJUSTAR RELOJ'dd-mmm-aa hh:mm'

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.

Objetivo:Establece la fecha y la hora del reloj del controlador interno.

La fecha y la hora se incluyen en las listas de directorios y traductores.

Ver también:comando MOSTRAR RELOJ

Ejemplo:KCL> AJUSTAR RELOJ '02-ENE-xx 21:45'

C.62 Comando ESTABLECER POR DEFECTO

Sintaxis:ESTABLECER PREDETERMINADOprog_name

dónde:

prog_name:el nombre de cualquier programa KAREL o TP

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.

Ver también:Sección 14.1.1, "Programa preestablecido"

Ejemplos:KCL> ESTABLECER PREDETERMINADO prueba_prog

KCL> SET DEF test_prog

C.63 Comando ESTABLECER GRUPO

Sintaxis:ESTABLECER GRUPOgrupo_no

dónde:

grupo_no:un número de grupo válido

C-35
C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL MARRC75KR07091E Rev H

Objetivo:Establece el número de grupo predeterminado para usar en otros comandos.

Ejemplo:KCL> ESTABLECER GRUPO 1

C.64 Comando ESTABLECER IDIOMA


Sintaxis:ELEGIR LENGUAJEnombre_idioma

dónde:

nombre_idioma:un idioma en particular. Las opciones disponibles son INGLÉS, JAPONÉS, FRANCÉS, ALEMÁN,
ESPAÑOL o PREDETERMINADO.

Objetivo:Establece la variable de sistema $LANGUAGE que determina el idioma a utilizar.

Ejemplo:KCL> ESTABLECER IDIOMA INGLÉS

C.65 Comando ESTABLECER VARIABLE LOCAL

Sintaxis:ESTABLECER VARIABLES LOCALESnombre_var<ENruta_nombre> <DEprog_name> < nombre


de la tarea> =valor<{,valor}>

dónde:

nombre_var:una variable local o nombre de parámetro

ruta_nombre:el nombre de cualquier rutina KAREL

prog_name:el nombre de cualquier programa KAREL

nombre de la tarea:el nombre de cualquier tarea KAREL

valor:nuevo valor para la variable

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.

NotaEl archivo RD:prog_name.rsse requiere para obtener información variable local.

Ejemplo:Consulte el comando MOSTRAR VARIABLE LOCAL.

C-36
MARRC75KR07091E Rev H C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL

Ver también:MOSTRAR VARIABLE LOCAL y comando TRADUCIR.

C.66 Comando ESTABLECER PUERTO

Sintaxis:ESTABLECER PUERTOnombre_puerto [índice] = valor

dónde:

nombre_puerto[índice]:un puerto de E/S válidovalor:un nuevo valor para el puerto

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.

Los puertos válidos son:

DIN, DOUT, RDO, OPOUT, TPOUT, WDI, WDO (BOOLEANO)-AIN, AOUT, GIN, GOUT
(ENTERO)

Ver también:Comando SIMULAR, DES SIMULAR,Capítulo 15SISTEMA DE ENTRADA/SALIDA, Manual de


configuración y operaciones específico de la aplicación.

Ejemplo:KCL> ESTABLECER PUERTO DOUT [1] = ENCENDIDO

KCL> SET PUERTO SALIDA [2] = 255

KCL> SET PORT AIN [1] = 1000

C.67 Comando ESTABLECER TAREA

Sintaxis:ESTABLECER TAREA <[prog_name]>nombre_atributo=valor

dónde:

prog_name:el nombre de cualquier programa KAREL o TP que sea una tarea

nombre_atributo:PRIORIDAD o TRACELEN

valor:nuevo valor entero para el atributo

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

C.68 Comando ESTABLECER RASTREO

Sintaxis:ESTABLECER RASTREO (DESACTIVADO | ACTIVADO) <[prog_name]>

dónde:

prog_name:el nombre de cualquier programa KAREL o TP cargado en memoria

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.

Ver también:comando MOSTRAR RASTREO

C.69 Comando ESTABLECER VARIABLES

Sintaxis:ESTABLECER VARIABLE <[prog_name]>nombre_var=valor<{,valor}>

dónde:

prog_name:el nombre de cualquier programa KAREL o TP

nombre_var:una variable de programa válida

valor:nuevo valor para variable o una variable de programa o sistema

Objetivo:Asigna el valor especificado a la variable especificada. Puede asignar valores constantes o


valores variables, pero el valor debe ser del tipo de datos que se ha declarado para la variable.

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.

KCL> SET VAR position_var = 0,0,0,0,0,0

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:

KCL> SET VARIABLE var_name.X = valor

KCL> SET VARIABLE var_name.Y = valor

C-38
MARRC75KR07091E Rev H C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL

KCL> SET VARIABLE var_name.Z = valor

KCL> SET VARIABLE var_name.W = valor

KCL> SET VARIABLE var_name = valor

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:

KCL> SET VARIABLE nombre_var.X = 200

KCL> SET VARIABLE nombre_var.W = 60

KCL> SET VARIABLE nombre_var.C = '1,0'

Debe ingresar el comando KCL>SAVE VARS para que los cambios sean permanentes.

Ver también:Sección 2.3, "Tipos de datos"

Ejemplos:KCL> SET VARIABLE [prog1] escala = $MCR.$GENOVERRIDE

KCL> SET VAR soldar_pgm.ángulo = 45.0

KCL> SET VAR v[2,1,3].r = -0.897

KCL> SET VAR part_array[2] = part_array[1]

KCL> SET VAR soldadura_pos.x = 50.0

KCL> SET VAR pth_b[3].nodepos = pth_a[3].nodepos

C.70 Comando ESTABLECER VERIFICAR

Sintaxis:CONFIGURAR VERIFICAR (ENCENDIDO | APAGADO)

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.

C.71 comando MOSTRAR CORTE

Sintaxis:MOSTRAR PAUSA <prog_name>

dónde:

C–39
C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL MARRC75KR07091E Rev H

prog_name:el nombre de cualquier programa KAREL o TP en memoria

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:

• Número de punto de ruptura

• Número de línea del punto de ruptura en el programa

Ejemplos:KCL> MOSTRAR PAUSA prueba_prog

KCL> SH BREAK

C.72 comando MOSTRAR EDIFICIOS


Sintaxis:MOSTRAR EDIFICIOS

Objetivo:Muestra todas las funciones integradas de softpart que están cargadas en el controlador.

Ejemplo:KCL> MOSTRAR EDIFICIOS

C.73 comando MOSTRAR CONDICIÓN


Sintaxis:MOSTRAR CONDICIÓN <prog_name> <condition_no>

dónde:

prog_name:el nombre de cualquier programa KAREL en ejecución o en pausa

condition_no:una condición particular

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.

Ejemplos:KCL> MOSTRAR CONDICIÓN test_prog

KCL> SH COND

C.74 comando MOSTRAR RELOJ


Sintaxis:MUESTRA EL RELOJ

Objetivo:Muestra la fecha y la hora actuales del reloj del controlador.

Ver también:Comando ESTABLECER RELOJ

C-40
MARRC75KR07091E Rev H C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL

Ejemplo:KCL> MOSTRAR RELOJ

C.75 comando MOSTRAR CURPOS


Sintaxis:MOSTRAR CURSO

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.

Ejemplo:KCL> MOSTRAR CURSO

C.76 comando MOSTRAR POR DEFECTO

Sintaxis:MOSTRAR PREDETERMINADO

Objetivo:Muestra el nombre del programa predeterminado actual.

Ejemplo:KCL> MOSTRAR PREDETERMINADO

C.77 comando MOSTRAR DISPOSITIVO

Sintaxis:MOSTRAR DISPOSITIVOnombre del dispositivo:

dónde:

nombre del dispositivo:dispositivo a mostrar

Objetivo:Muestra el estado del dispositivo.

Ejemplo:KCL> MOSTRAR DISPOSITIVO rd:

C.78 comando MOSTRAR DICTOS

Sintaxis:MOSTRAR DICTOS

Objetivo:Muestra los diccionarios cargados en el sistema para el idioma especificado en la variable


de sistema $IDIOMA.

Ejemplo:KCL> MOSTRAR DICTOS

C.79 comando MOSTRAR GRUPO


Sintaxis:MOSTRAR GRUPO

C-41
C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL MARRC75KR07091E Rev H

Objetivo:Muestra el número de grupo predeterminado.

Ejemplo:KCL> MOSTRAR GRUPO

C.80 comando MOSTRAR HISTORIAL

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.

Ejemplo:KCL> MOSTRAR HIST

C.81 comando MOSTRAR IDIOMA

Sintaxis:MOSTRAR IDIOMA

Objetivo:Muestra el idioma especificado en la variable de sistema $LANGUAGE.

Ejemplo:KCL> MOSTRAR IDIOMA

C.82 comando MOSTRAR IDIOMAS

Sintaxis:MOSTRAR IDIOMAS

Objetivo:Muestra todos los idiomas actualmente disponibles en el sistema.

Ejemplo:KCL> MOSTRAR IDIOMAS

C.83 Comando MOSTRAR VARIABLE LOCAL


Sintaxis:MOSTRAR VARIABLE LOCALnombre_var<(HEXADECIMAL | BINARIO)> <ENruta_nombre
> <DESDEprog_name> <nombre de la tarea>

dónde:

nombre_var:una variable local o nombre de parámetro

ruta_nombre:el nombre de cualquier rutina KAREL

prog_name:el nombre de cualquier programa KAREL

nombre de la tarea:el nombre de cualquier tarea KAREL

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.

NotaEl archivo RD:prog_name.rsse requiere para obtener información variable local.

Ejemplo:Genere un archivo .rs desde el traductor KAREL.

KCL> TRANS programa de prueba RS

Copie el archivo .rs al dispositivo RD.

Esto se hace automáticamente cuando carga el programa desde la KCL.

KCL> SET DEF testprog

KCL> CARGAR PROG

Testprog.rs copiado a RD:testprog.rs

Para mostrar las variables locales, el programa debe estar ejecutándose, en pausa o abortado en la rutina especificada.

KCL> EJECUTAR

KCL> MOSTRAR VARIABLES LOCALES

KCL> MOSTRAR VARS LOCALES EN VALORES testprog

KCL> MOSTRAR VAR LOCAL var_1 EN rout_1 DESDE testprog testtask

KCL> MOSTRAR VAR LOCAL param_1

Para establecer variables locales, el programa debe estar en pausa.

KCL> pausa

KCL> establecer var local int_var = 12345

KCL> establecer local var strparam = "Este es un parámetro de cadena"

Ver también:comando TRADUCIR.

C–43
C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL MARRC75KR07091E Rev H

C.84 Comando MOSTRAR VARS LOCALES

Sintaxis:MOSTRAR VARS LOCALES <VALORES> <INruta_nombre> <DEprog_name> <nombre de la tarea


>

dónde:

VALORES: :especifica que se deben mostrar los valores

ruta_nombre:el nombre de cualquier rutina KAREL

prog_name:el nombre de cualquier programa KAREL

nombre de la tarea:el nombre de cualquier tarea KAREL

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

NotaEl archivo RD:prog_name.rsse requiere para obtener información variable local.

Ejemplo:Consulte el comando MOSTRAR VARIABLE LOCAL.

Ver también:comando TRADUCIR y MOSTRAR VARIABLE LOCAL.

C.85 comando MOSTRAR MEMORIA


Sintaxis:MOSTRAR MEMORIA

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:

Número total de bytes en el grupo

Número disponible de bytes en el grupo

Ejemplo:KCL> MOSTRAR MEMORIA

C.86 comando MOSTRAR PROGRAMA


Sintaxis:VER PROGRAMA <prog_name>

dónde:

C-44
MARRC75KR07091E Rev H C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL

prog_name:el nombre de cualquier programa KAREL o TP en memoria

Objetivo:Muestra la información de estado del programa especificado o predeterminado que se está ejecutando.

Ejemplo:KCL> MOSTRAR PROGRAMA test_prog

KCL> SH PROG

C.87 comando MOSTRAR PROGRAMAS


Sintaxis:MOSTRAR PROGRAMAS

Objetivo:Muestra una lista de programas y datos variables que están actualmente cargados en la memoria.

Ejemplos:KCL> MOSTRAR PROGRAMAS

KCL> SH PROG

C.88 comando MOSTRAR SISTEMA


Sintaxis:MOSTRAR SISTEMA <tipo de datos> <VALORES>

dónde:

tipo de datos:cualquier tipo de datos KAREL válido

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.

Ver también:comando MOSTRAR VARIABLE

Ejemplos:KCL> MOSTRAR VALORES REALES DEL SISTEMA

KCL> SH SIS

C.89 comando MOSTRAR TAREA


Sintaxis:MOSTRAR TAREA <prog_name>

dónde:

prog_name:el nombre de cualquier programa KAREL o TP que sea una tarea

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

Ejemplos:KCL> MOSTRAR TAREA test_prog

KCL> SH TAREA

C.90 comando MOSTRAR TAREAS


Sintaxis:MOSTRAR TAREAS

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.

Ejemplos:KCL> MOSTRAR TAREAS

C.91 comando MOSTRAR RASTREO

Sintaxis:MOSTRAR SEGUIMIENTO <prog_name>

dónde:

prog_name:el nombre de cualquier programa KAREL o TP que sea una tarea

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.

Ver también:Comando ESTABLECER RASTREO

Ejemplo:KCL> MOSTRAR SEGUIMIENTO

C.92 Comando MOSTRAR TIPOS


Sintaxis:MOSTRAR TIPOS <prog_name> <CAMPOS>

dónde:

prog_name:el nombre de cualquier programa KAREL o TP

CAMPOS:especifica que se deben mostrar los campos

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.

Ver también:comando MOSTRAR VARS, comando MOSTRAR VARIABLE

Ejemplos:KCL> MOSTRAR TIPOS test_prog CAMPOS

KCL> TIPOS SH

C.93 comando MOSTRAR VARIABLE


Sintaxis:MOSTRAR VARIABLE <[prog_name]>nombre_var<(HEXADECIMAL | BINARIO)>

dónde:

prog_name:el nombre de cualquier programa KAREL o TP

nombre_var:una variable de programa válida

Objetivo:Muestra el nombre, el tipo y el valor de la variable especificada.

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.

Ver también:comando MOSTRAR VARS, comando MOSTRAR SISTEMA

Ejemplos:KCL> MOSTRAR VARIABLE $UTOOL

KCL> SH VAR [test_prog]group_mask HEX

KCL> SH VAR [test_prog]group_mask BINARIO

KCL> SH VAR soldar_pth[3]

C.94 comando MOSTRAR VARS


Sintaxis:MOSTRAR VARIABLES <prog_name> <VALORES>

dónde:

prog_name:el nombre de cualquier programa KAREL o TP

VALORES: especifica los valores que se deben mostrar

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

Ejemplo:KCL> MOSTRAR VARS test_prog VALORES

KCL> SH VARS

C.95 Comando SHOW tipo_datos


Sintaxis:MOSTRARtipo de datos<prog_name> <VALORES>

dónde:

tipo de datos:cualquier tipo de datos KAREL válido

prog_name:el nombre de cualquier programa KAREL o TP

VALORES: especifica los valores que se deben mostrar

Objetivo:Muestra una lista de variables en el programa predeterminado o especificado (prog_name)del


tipo de datos especificado (tipo de datos).La lista incluye el nombre, el tipo y, si se especifica, el valor
actual de cada variable.

Ver también:comando MOSTRAR VARS, comando MOSTRAR VARIABLE

Ejemplos:KCL> MOSTRAR VALORES REALES test_prog

KCL> SH ENTERO

C.96 comando SIMULAR


Sintaxis:SIMULARnombre_puerto[índice]<= valor>

dónde:

nombre_puerto[índice]:un puerto de E/S válido

valor:un nuevo valor para el puerto

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

Dependiendo de cómo se utilicen las señales, la simulación de señales puede alterar la


ejecución del programa. No simule señales configuradas para comprobaciones de
seguridad. Si lo hace, podría lesionar al personal o dañar el equipo.

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.

Los puertos válidos son:

DIN, DOUT, WDI, WDO (BOOLEANO)AIN, AOUT, GIN, GOUT (ENTERO)

Ver también:Comando UNSIMULATE

Ejemplos:KCL> SIMULAR DIN[17]

KCL> SIM DIN[1] = ENCENDIDO

KCL> SIM AIN[1] = 100

C.97 Comando SALTAR


Sintaxis:SALTAR <prog_name>

dónde:

prog_name:el nombre de cualquier programa KAREL o TP que sea una tarea

Objetivo:Omite la ejecución de la instrucción actual en la tarea especificada. Siprog_nameno se especifica, se


utiliza el programa predeterminado. No tiene efecto cuando se está ejecutando una tarea o cuando el sistema está
en estado LISTO.

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.

Ejemplos:KCL> SALTAR prueba_prog

KCL> SALTAR

C.98 Comando PASO APAGADO

Sintaxis:SALIR

Objetivo:Deshabilita el paso único para el programa en el que estaba habilitado.

Ejemplo:KCL> SALIR

C.99 PASO EN comando


Sintaxis:PASE EN <prog_name>

dónde:

prog_name:el nombre de cualquier programa KAREL o TP que sea una tarea

Objetivo:Habilita paso a paso único para el programa predeterminado o especificado.

Ejemplos:KCL> PASO EN prueba_prog

KCL> PASE EN

C.100 Comando TRADUCIR

Sintaxis:TRADUCIR <file_spec> <PANTALLA> <LISTA> <RS>

dónde:

file_spec:una especificación de archivo válida

PANTALLA: muestra la fuente durante la traducción

LISTA: crear archivo de listado

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.

Ejemplos:KCL> TRADUCIR testprog LISTA DE VISUALIZACIÓN

KCL> TRAN

C.101 comando TIPO

Sintaxis:ESCRIBEfile_spec

dónde:

file_spec:una especificación de archivo válida

Objetivo:Este comando le permite mostrar el contenido del archivo ASCII especificado en el CRT/KB.
Puede especificar cualquier tipo de archivo ASCII.

Ejemplos:KCL> TIPO rd:testprog.kl

KCL> TIPO testprog.kl

C.102 Comando UNSIMULATE

Sintaxis:DESIMULAR (nombre_puerto[índice]|TODOS)

dónde:

nombre_puerto[índice]:un puerto de E/S válido

TODOS:todos los puertos de E/S simulados

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

Dependiendo de cómo se utilicen las señales, las señales no simuladas pueden


alterar la ejecución del programa o activar equipos periféricos. No anule la
simulación de una señal a menos que esté seguro del resultado. Si lo hace, podría
lesionar al personal o dañar el equipo.

Si especifica TODOS en lugar de un puerto en particular, se interrumpe la simulación en todos los puertos simulados.

Los puertos válidos son:

C-51
C. DESCRIPCIÓN ALFABÉTICA DEL COMANDO KCL MARRC75KR07091E Rev H

Estruendo, DOUT, WDI, WDOAIN, AOUT, GIN, GOTA

Ver también:comando SIMULAR

Ejemplos:KCL> SIN SIMULAR DIN[17]

KCL> UNSIM TODO

C.103 comando ESPERAR

Sintaxis:ESPERA <prog_name> (HECHO | PAUSA)

dónde:

prog_name:el nombre de cualquier programa KAREL o TP que sea una tarea

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.

Ver también:Sección 14.4, “Procedimientos de comando”

Ejemplo:El siguiente es un ejemplo de un procedimiento de comando ejecutable:


> CONJUNTO programa de prueba DEF

> CARGAR TODOS

> EJECUTAR -- ejecutar programa


> ESPERAR PAUSA
> MOSTRAR CURPOS -- muestra la posición de TCP cuando el programa se detiene
> CONTINUAR
> ESPERAR HECHO
> BORRAR TODO SÍ -- borrar después de la ejecución

C–52
Apéndice D
CÓDIGOS DE CARÁCTER

Contenido

Apéndice D CÓDIGOS DE CARÁCTER ............................................................................................... D–1


D.1 CÓDIGOS DE CARÁCTER.................................................... .......................................................... D–2

D–1
D. CÓDIGOS DE CARÁCTER MARRC75KR07091E Rev H

D.1 CÓDIGOS DE CARÁCTER

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.

Cuadro D–1. Códigos de caracteres ASCII

Decimal Personaje Decimal Valor de carácter Decimal Personaje Decimal Personaje


Código Valor Código Código Valor Código Valor

000 (NULO) 032 SP 064 @ 096 '


001 (SOL) 033 ! 065 A 097 a
002 (STX) 034 " 066 B 098 b
003 (ETX) 035 # 067 C 099 C
004 (EOT) 036 ps 068 D 100 d
005 (ESQ) 037 % 069 mi 101 mi
006 (ACK) 038 & 070 F 102 F
007 (BEL) 039 ' 071 GRAMO 103 gramo

008 (BS) 040 ( 072 H 104 h


009 (HT) 041 ) 073 yo 105 i
010 (LF) 042 * 074 j 106 j
011 (VERMONT) 043 + 075 k 107 k
012 (FF) 044 ' 076 L 108 yo
013 (CR) 045 - 077 METRO 109 metro

014 (ASI QUE) 046 . 078 norte 110 norte

015 (SI) 047 / 079 O 111 o


016 (DLE) 048 0 080 PAGS 112 pags
017 (DC1) 049 1 081 q 113 q
018 (DC2) 050 2 082 R 114 r
019 (DC3) 051 3 083 S 115 s
020 (DC4) 052 4 084 T 116 t
021 (NAK) 053 5 085 tu 117 tu
022 (SYN) 054 6 086 V 118 v
023 (ETB) 055 7 087 W 119 w
024 (PUEDEN) 056 8 088 X 120 X

D–2
MARRC75KR07091E Rev H D. CÓDIGOS DE CARÁCTER

Cuadro D–1. Códigos de caracteres ASCII (continuación)

Decimal Personaje Decimal Valor de carácter Decimal Personaje Decimal Personaje


Código Valor Código Código Valor Código Valor

025 (EM) 057 9 089 Y 121 y


026 (SUB) 058 : 090 Z 122 z
027 (ESC) 059 ; 091 [ 123 {
028 (FS) 060 < 092 \ 124 |
029 (GS) 061 = 093 ] 125 }
030 (ES) 062 > 094 ^ 126 ~
031 (A NOSOTROS) 063 ? 095 — 127 (DEL)

Cuadro D–2. Códigos de caracteres ASCII especiales

Código decimal Valor de carácter Código decimal Valor de carácter

128 Ventana limpia 154 Activar el modo multinacional

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

132 Retorno de carro 155 51 color de primer plano amarillo

133 Linea de alimentación 155 52 Color de primer plano azul

134 Avance de línea inverso 155 53 Color de primer plano magenta

135 Retorno de carro y avance de 155 54 Color de primer plano cian


línea

136 Retroceso 155 55 Color de primer plano blanco

D–3
D. CÓDIGOS DE CARÁCTER MARRC75KR07091E Rev H

Cuadro D–2. Códigos de caracteres ASCII especiales (continuación)

Código decimal Valor de carácter Código decimal Valor de carácter

137 Cursor de inicio en la ventana 155 127 Color de primer plano por defecto

138 Atributo de video parpadeante 156 48 color de fondo negro

139 Atributo de video inverso 156 49 color de fondo rojo

140 Atributo de video en negrita 156 50 color de fondo verde

141 Subrayar vídeo 156 51 color de fondo amarillo


atributo

142 Tamaño de vídeo ancho 156 52 color de fondo azul

143 Atributo de video normal 156 53 color de fondo magenta

Activar el modo Gráficos 156 54 Color de fondo cian


146 en
147 Activar el modo ASCII 156 55 color de fondo blanco

148 Tamaño de video alto/ancho 156 127 Color de fondo predeterminado

153 Tamaño de vídeo normal

Cuadro D–3. Códigos de caracteres multinacionales

Decimal Personaje Decimal Personaje Decimal Personaje Decimal Valor de carácter


Códigos Valor Códigos Valor Códigos Valor Códigos

000 032 064 A 096 a

001 033 ¡ 065 A 097 a

002 034 © 066 A 098 a

003 035 £ 067 A 099 a


004 (INDIANA) 036 068 A 100 a
005 (NEL) 037 ¥ 069 A 101 a
006 (SSA) 038 070 Æ 102 æ
007 (ESA) 039 § 071 C 103 C
008 (HTS) 040 ¤ 072 MI 104 mi

D–4
MARRC75KR07091E Rev H D. CÓDIGOS DE CARÁCTER

Cuadro D–3. Códigos de caracteres multinacionales (continuación)

Decimal Personaje Decimal Personaje Decimal Personaje Decimal Valor de carácter


Códigos Valor Códigos Valor Códigos Valor Códigos

009 (HTJ) 041 © 073 MI 105 mi


a
010 (VTS) 042 074 MI 106 mi

011 (PLD) 043 « 075 MI 107 mi


012 (PLU) 044 076 YO 108 i

013 (RHODE ISLAND) 045 077 YO 109 i

014 (SS2) 046 078 YO 110 i

015 (SS3) 047 079 YO 111 i


016 (DCS) 048 080 112

017 (PU1) 049 ± 081 NORTE 113 norte

2
018 (PU2) 050 082 Ò 114 o
3
019 (STS) 051 083 o 115 o

020 (CCH) 052 084 Ô 116 o

021 (MW) 053 µ 085 Õ 117 õ


022 (SPA) 054 ¶ 086 o 118 o
023 (EPA) 055 • 087 o 119 œ
024 056 088 Ø 120 ø
yo
025 057 089 Ù 121 tu

026 058 090 tu 122 tu

027 (CSI) 059 » 091 Û 123 û

028 (S T) 060 ¼ 092 Ü 124 ü


029 (OSC) 061 ½ 093 Y 125 ÿ
030 (PM) 062 094 126
031 (APC) 063 ¿ 095 ß 127

Tabla D–4. Códigos de caracteres gráficos (no disponible en R-30iB)

Decimal Personaje Decimal Personaje Decimal Personaje Decimal Valor de carácter


Códigos Valor Códigos Valor Códigos Valor Códigos

000 (NULO) 032 SP 064 @ 096 ♦

D–5
D. CÓDIGOS DE CARÁCTER MARRC75KR07091E Rev H

Tabla D–4. Códigos de caracteres gráficos (no disponible en R-30iB) (continuación)

Decimal Personaje Decimal Personaje Decimal Personaje Decimal Valor de carácter


Códigos Valor Códigos Valor Códigos Valor Códigos

001 (SOL) 033 ! 065 A 097

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

007 (BEL) 039 ' 071 GRAMO 103 ±


008 (BS) 040 ( 072 H 104 norte

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

Tabla D–4. Códigos de caracteres gráficos (no disponible en R-30iB) (continuación)

Decimal Personaje Decimal Personaje Decimal Personaje Decimal Valor de carácter


Códigos Valor Códigos Valor Códigos Valor Códigos

021 (NAK) 053 5 085 tu 117

022 (SYN) 054 6 086 V 118

023 (ETB) 055 7 087 W 119

024 (PUEDEN) 056 8 088 X 120 |


025 (EM) 057 9 089 Y 121 ≤
026 (SUB) 058 : 090 Z 122 ≥
027 (ESC) 059 ; 091 [ 123 Π
028 (FS) 060 < 092 124 ≠
029 (GS) 061 = 093 ] 125 £
030 (ES) 062 > 094 ^ 126 •
031 (A NOSOTROS) 063 ? 095 (vacío) 127 (DEL)

Cuadro D–5. Enseñar códigos de entrada del colgante

Código Valor Código Valor

0 48 174 CLAVE DE USUARIO 2

1 49 175 CLAVE DE USUARIO 3

2 50 176 CLAVE DE USUARIO 4

3 51 177 CLAVE DE USUARIO 5

4 52 178 CLAVE DE USUARIO 6

5 53 185 ADELANTE

6 54 186 BWD

D–7
D. CÓDIGOS DE CARÁCTER MARRC75KR07091E Rev H

Cuadro D–5. Códigos de entrada del colgante de enseñanza (continuación)

Código Valor Código Valor

7 55 187 COORDINADOR

8 56 188 +X
9 57 189 +Y
128 ANTERIOR 190 +Z
129 F1 191 + X rotación

131 F2 192 + Rotación Y

132 F3 193 + Rotación Z

133 F4 194 -X
134 F5 195 - si
135 SIGUIENTE 196 -Z
143 SELECCIONE 197 - Rotación X

144 MENÚS 198 - Rotación Y

145 EDITAR 199 - Rotación Z

146 DATOS 210 CLAVE DE USUARIO

147 FCTN 212 flecha arriba

148 ARTÍCULO 213 Flecha hacia abajo

149 +% 214 Flecha correcta

150 -% 215 Flecha izquierda

151 MANTENER 147 Interruptor DEADMAN, izquierda

152 PASO 248 Interruptor DEADMAN, derecho

153 REINICIAR 249 Interruptor encendido / apagado

173 CLAVE DE USUARIO 1 250 PARADA DE EMERGENCIA

Tabla D–6. Códigos de caracteres europeos

Código Valor Código Valor Código Valor

192 A' 213 O~ 234 mi^


193 A' 214 O: 235 mi:
194 un ^ 215 Equipo original 236 i'
195 A~ 216 O/ 237 i'
196 A: 217 tu 238 i
197 ao 218 tu 239 i:

D–8
MARRC75KR07091E Rev H D. CÓDIGOS DE CARÁCTER

Tabla D–6. Códigos de caracteres europeos (continuación)

Código Valor Código Valor Código Valor

198 AE 219 tu^ 240


199 CC 220 tu: 241 n~
200 MI' 221 Y: 242 o'
201 MI' 222 243 o'
202 mi^ 223 Cama y desayuno 244 o^
203 MI: 224 a' 245 o~
204 YO' 225 a' 246 o:
205 YO' 226 un^ 247 oe
206 yo^ 227 un ~ 248
207 YO: 228 a: 249 tu
208 229 ao 250 tu
209 N~ 230 ae 251 tu^
210 oh 231 252 tu:
211 oh 232 mi' 253 y:
212 O^ 233 mi' 254

A^ = A con ^ encima

A' = A con ' arriba

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

Tabla D–7. Caracteres gráficos

valor decimal Carácter ASCII Carácter gráfico

97 a caja solida

102 F diamante

D-9
D. CÓDIGOS DE CARÁCTER MARRC75KR07091E Rev H

Tabla D–7. Caracteres gráficos (continuación)

valor decimal Carácter ASCII Carácter gráfico

103 gramo mas menos

106 j esquina inferior derecha del cuadro

107 k esquina superior derecha del cuadro

108 yo esquina superior izquierda del cuadro

109 metro esquina inferior izquierda del cuadro

110 norte líneas de intersección

111 o fila de píxeles 1 línea horizontal

112 pags fila de píxeles 2 línea horizontal

113 q fila de píxeles 3 línea horizontal

114 r fila de píxeles 4 línea horizontal

115 s fila de píxeles 5 línea horizontal

116 t T desde la derecha

117 tu T desde la izquierda

119 v T desde arriba

119 w T desde abajo

120 X Linea vertical

121 y Menor o igual

122 z Mayor que o igual

123 { Pi
124 | No es igual

125 } símbolo de la libra esterlina

D-10
Apéndice E
DIAGRAMAS DE SINTAXIS

Contenido

Apéndice E DIAGRAMAS DE SINTAXIS ................................................................................................. E–1

E–1
E. DIAGRAMAS DE SINTAXIS MARRC75KR07091E Rev H

Los diagramas de sintaxis de KAREL utilizan los siguientes símbolos:

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

Un círculo encierra caracteres especiales que se ingresan exactamente como se muestra.

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

Las flechas indican las rutas permitidas y la secuencia correcta en un diagrama.

Rama
Las ramas indican caminos o secuencias opcionales.

E-2
MARRC75KR07091E Rev H E. DIAGRAMAS DE SINTAXIS

Figura E–1.

PROGRAMA definición de módulo

lista de directivas

declaración de TIPO
nombre del programa

declaración VAR
PROGRAMA identificador

^ declaración CONST

Declaración de RUTINA

cuerpo del programa nombre del programa

EMPEZAR
declaración FINAL identificador
lista

Definición de RUTINA

^-- 0 o más finales de línea

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

%GRUPO DE BLOQUEO = (entero)


^ constante

,
%NOABORTAR = ERROR + DOMINIO

%SIN PAUSA = ERROR + DOMINIO + TPENABLE

%NOBUSYLAMP

%NOLOCKGROUP

%NOPAUSESHFT

%PRIORIDAD = (entero)
constante

%TAMAÑO DE LA PILA = (entero)


constante

%PORCIÓN DE TIEMPO = (entero)


constante

%TPMOVIMIENTO

E-4
MARRC75KR07091E Rev H E. DIAGRAMAS DE SINTAXIS

Figura E–3.

CONST --declaración constante


nombre constante
+ valor

= constante
^
identificador

^
CONSTITUCIÓN

constante

nombre constante

identificador

literal

TIPO -- declaración de tipo

=^
escribe un nombre

ESCRIBE
^ identificador

nombre del programa


tipo de usuario

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

nombre del campo

identificador
: matriz de estructura
escribe

tipo de matriz de estructura

tipo de datos

BYTE

CORTO

E-6
MARRC75KR07091E Rev H E. DIAGRAMAS DE SINTAXIS

Figura E–5.

tipo de datos

escribe un nombre

identificador

nombre del tipo de sistema

identificador del sistema

ENTERO

REAL

BOOLEANO

VECTOR

VIS_PROCESO

MODELO

CAM_SETUP

EXPEDIENTE

CONFIGURAR

SENDERO

nombre del tipo de estructura

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.

tipo de datos continuación

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.

VAR -- declaración de variables

nombre de la variable

VAR :
^
datos
identificador
escribe

CMOS nombre del programa

, DE identificador
DRACMA

ROUTINE -- declaración de rutina


nombre de la rutina

RUTINA identificador

nombre del parámetro

( : parámetro ) : devolver datos


^
^,
identificador
escribe escribe

nombre del programa

DE identificador

variables locales

declaración VAR

constantes locales

declaración CONST

cuerpo de rutina nombre de la rutina

declaración
EMPEZAR FINAL identificador
lista

E-10
MARRC75KR07091E Rev H E. DIAGRAMAS DE SINTAXIS

Figura E–9.

devolver tipo de datos

escribe un nombre

identificador

nombre del tipo de sistema

identificador del sistema

ENTERO

REAL

BOOLEANO

VECTOR

CONFIGURAR

Tipo de Posición EN GRUPO [ (entero) ]


constante

CUERDA

FORMACIÓN DE matriz de estructura


escribe

[ * ]

E–11
E. DIAGRAMAS DE SINTAXIS MARRC75KR07091E Rev H

Figura E–10.

tipo de parámetro

escribe un nombre

identificador

nombre del tipo de sistema

identificador del sistema

ENTERO

REAL

BOOLEANO

VECTOR

VIS_PROCESO

MODELO

CAM_SETUP

EXPEDIENTE

CONFIGURAR

SENDERO

nombre del tipo de estructura

ENCABEZAMIENTO =
^
identificador

,
nombre del tipo de estructura

DATOS DE NODO =
^
identificador

E–12
MARRC75KR07091E Rev H E. DIAGRAMAS DE SINTAXIS

Figura E–11.

tipo de parámetro continuación

EN GRUPO [ (entero) ]
Tipo de Posición
constante

CUERDA

FORMACIÓN DE matriz de estructura


escribe

[ * ]

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 CANCELAR ARCHIVO

Declaración de CERRAR ARCHIVO

Declaración de MANO CERRADA

Declaración de CONDICIÓN

Declaración TEMPORIZADOR DE CONEXIÓN

instrucción DEMORA

Declaración DESHABILITAR

Declaración del TEMPORIZADOR DE DESCONEXIÓN

Declaración HABILITAR

PARA declaración

declaración IR A
Declaración de retención

declaración SI

Declaración de ARCHIVO ABIERTO

Declaración MANO ABIERTA

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

MARRC75KR07091E Rev H E. DIAGRAMAS DE SINTAXIS

Figura E–13.

ABORTAR - declaración
número de tarea

ABORTAR PROGRAMA [ (entero) ]


expresión

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

CANCELAR ARCHIVO - declaración


^
variable de archivo

CANCELAR EXPEDIENTE variable


acceso

CERRAR ARCHIVO - declaración

variable de archivo

CERCA EXPEDIENTE variable


acceso

CERRAR LA MANO - declaración

especificaciones de la mano

CERCA MANO (entero)


expresión

E-15
E. DIAGRAMAS DE SINTAXIS MARRC75KR07091E Rev H

Figura E–14.

Declaración de CONDICIÓN manejador de condiciones-


número
[ ] :
^
CONDICIÓN (entero)
expresión

nombre de la variable del sistema


número de grupo
CON identificador del sistema [ (entero) ] .
constante

nombre del campo valor


=
^
identificador del sistema expresión

,
^

CUANDO
^ acción

^
condición mundial HACER
CONDICIÓN FINAL

Y ,

condición mundial

^ O

TEMPORIZADOR DE CONEXIÓN - declaración

variable de reloj

CONECTAR TEMPORIZADOR A (entero)


identificador

DEMORA - declaración

especificación de tiempo (ms)

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.

TEMPORIZADOR DE DESCONEXIÓN - declaración

variable de reloj

DESCONECTAR TEMPORIZADOR (entero)


identificador

ENABLE - declaración
manejador de condiciones-
número

HABILITAR CONDICIÓN [ (entero) ]


expresión

PARA - declaración
A
variable de conteo valor inicial
= ^ (entero)

^
POR (entero) expresión
identificador
ABAJO A

valor final cuerpo de bucle


(entero) t mento
comió ENDFOR
^
expresión HACER
lista

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.

ARCHIVO ABIERTO - declaración

variable de archivo
especificación de uso
variable
( ,
^ ^
ABIERTO (cuerda)
EXPEDIENTE
acceso
expresión

especificación de archivo

(cuerda) )
expresión

MANO ABIERTA - declaración

especificaciones de la mano

ABIERTO MANO (entero)


identificador

PAUSA - declaración
número de tarea

PAUSA PROGRAMA [ (entero) ]


expresión

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

elemento de lectura - declaración

RC

1.ª especificación de formato 2da especificación de formato

variable
:: (entero) :: (entero)
acceso
expresión expresión

RELÁJATE - declaración
especificaciones de la mano

RELAX MANO (entero)


expresión

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

valor del caso


caso alternativo
(entero) DE CASO ( declaración
(entero) ):
^
SELECCIONE

^
expresión lista
constante

otra alternativa
MÁS : declaración ENDSELECT
lista

SEÑAL - declaración

numero de evento

SEÑAL EVENTO [ (entero) ]


expresión

ALTO - declaración

GRUPO [ (entero) ]
DETÉNGASE
constante

UNHOLD - declaración

GRUPO [ (entero) ]
DESMANEJAR
constante

USO - declaración estructura


variable
variable declaración ENDURANDO
USANDO acceso
HACER
lista

,
^

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 *

* solo permitido en condición de error

ABORTAR

número de tarea
PAUSA PROGRAMA [ (entero) ]
expresión

SEGUIR

ENCENDER

variable = variable
acceso
^ acceso

<>

< EVALUAR

<=

>
( Exp )
>=
constante

matriz de puertos índice de puerto


(entero)
+
nombre [ expresión ]
identificador

NO

E–22
MARRC75KR07091E Rev H E. DIAGRAMAS DE SINTAXIS

Figura E–21.

acción del controlador de condiciones

MANTENER

DESMANEJAR

REANUDAR GRUPO [ (entero) ]


constante
,

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

índice de puerto timespecificación e (ms)

DOUT [ (entero) ] (entero)


LEGUMBRES POR

RDO
expresión
^ expresión

procedimiento nombre

identificador

E–23
E. DIAGRAMAS DE SINTAXIS MARRC75KR07091E Rev H

Figura E–22.

acción del manejador de condiciones continúa

port variable na yo índice de puerto


variable
[ (entero) ] =
^
identificador acceso
expresión Exp
(entero)
(
^
EVALUAR
expresión )

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

var del sistema o nombre de campo

identificador del sistema

nombre del campo

acceso variable .
identificador

nombre del campo

identificador del sistema

índice de matriz

acceso variable [ (entero) ]


expresión

^
nombre de ruta
índice de nodo de inicio índice de nodo final

acceso variable [ (entero) .. (entero) ]


expresión expresión

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.

sistema de código de pulso absoluto


Un sistema de información posicional para servomotores que se basa en una memoria RAM respaldada por batería para almacenar los
recuentos de pulsos del codificador cuando el robot está apagado. Este sistema se calibra cuando se enciende.

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.

alarma de batería baja


Un valor programable (en unidades de ingeniería) con el que la señal de entrada analógica se compara
automáticamente en bloques de E/S Genius. Se indica una falla si el valor de entrada es igual o menor que el valor
de alarma baja.

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

Un canal a través del cual se pueden enviar datos.

E–30
Glosario MARRC75KR07091E Rev H

controlador de autobús

Una placa de interfaz de bus Genius para un controlador programable.

escaneo de autobús

Un ciclo completo de comunicaciones en el bus serie.

Módulo de conmutación de bus


Un dispositivo que cambia un grupo de bloques a un bus u otro de un bus dual.

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.

sistema de coordenadas Cartesianas


Un sistema de coordenadas cuyos ejes (x, y y z) son tres líneas rectas perpendiculares que se cruzan. El
origen es la intersección de los ejes.

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).

tubo de rayos catódicos


Un dispositivo, como un televisor, para mostrar información.

unidad Central de procesamiento


El componente principal de la computadora que se compone de una sección de control y una sección aritmético-lógica. Las otras
unidades básicas de un sistema informático son las unidades de entrada/salida y el almacenamiento primario.

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.

control de proceso continuo


El uso de transductores (sensores) para monitorear un proceso y hacer cambios automáticos en las operaciones a
través del diseño de lazos de control de retroalimentación apropiados. Si bien estos dispositivos históricamente han
sido mecánicos o electromecánicos, ahora también se utilizan microcomputadoras y control centralizado.

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.

memoria del controlador


Un medio en el que se conservan los datos. El almacenamiento primario se refiere al área interna donde los datos y
las instrucciones del programa se almacenan para uso activo, a diferencia del almacenamiento auxiliar o externo
(cinta magnética, disco, disquete, etc.)

control, lazo abierto


Una operación en la que la computadora aplica el control directamente al proceso sin intervención manual.

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.

tubo de rayos catódicos

Véase tubo de rayos catódicos.

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.

Tiempo del ciclo

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

Abreviatura de corriente continua.

Interruptor HOMBRE MUERTO

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

pintura en aerosol, etc.

herramientas de final de brazo

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.

Almacenamiento de archivos flash

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

estadística de anulación general


Un valor porcentual que gobierna la velocidad máxima de avance del robot y la velocidad de ejecución del programa.

Bus de E/S Genius


El bus serie que proporciona comunicaciones entre bloques, controladores y otros dispositivos en el sistema,
especialmente con respecto a GE FANUC Genius I/O.

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.

sistema codificador incremental


Un sistema de información posicional para servomotores que requiere calibrar el robot moviéndolo a una posición de
referencia conocida (indicada por interruptores de límite) cada vez que se enciende el robot o se pierde la calibración
debido a una condición de error.

í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.

sistema de robot industrial


Un sistema que incluye robots industriales, efectores finales, cualquier dispositivo de equipo y sensores necesarios para
que el robot realice sus tareas, así como interfaces de comunicación para interconectar, secuenciar o monitorear el
robot.

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.

tiempo de procesamiento de entrada

El tiempo requerido para que los datos de entrada lleguen al microprocesador.

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.

Aislamiento eléctrico de E/S


Un método para separar el cableado de campo del circuito de nivel lógico. Esto se hace típicamente a través de dispositivos de
aislamiento óptico.

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

La Organización Internacional de Normalización que establece las normas de interfaz ISO.

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

específica. Esto puede ser diferente del marco de coordenadas mundiales.

trotar
Presionando teclas especiales en el colgante de enseñanza para mover el robot.

E–42
Glosario MARRC75KR07091E Rev H

velocidad de trote

Es un porcentaje de la velocidad máxima a la que puede mover el robot.

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).

movimiento conjunto interpolado


Un método de coordinar el movimiento de las articulaciones para que todas las articulaciones lleguen al lugar deseado al mismo tiempo.
Este método de servocontrol produce una ruta predecible independientemente de la velocidad y da como resultado el tiempo de ciclo
más rápido para un movimiento en particular. También llamado movimiento articular.

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Ó

Consulte Diodo emisor de luz.

Pantalla LED
Una pantalla alfanumérica que consta de una matriz de LED.

Diodo emisor de luz


Un dispositivo de estado sólido que se enciende para indicar una señal en un equipo electrónico.

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.

pantalla de cristal líquido


Una pantalla digital en el dispositivo de enseñanza que consta de dos láminas de vidrio separadas por un material
de cristal líquido sellado, normalmente transparente. LCD abreviado.

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

Un registro de valores y/o acciones para una función dada.

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.

almacenamiento en disco magnético

Un dispositivo o sistema de almacenamiento que consta de discos metálicos revestidos magnéticamente.

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

Equipos o dispositivos que no están directamente conectados a una línea de comunicaciones.

operaciones fuera de línea


Operaciones de procesamiento de datos que se manejan fuera del programa de computadora regular. Por ejemplo, la
computadora podría generar un informe fuera de línea mientras la computadora estaba haciendo otro trabajo.

programación fuera de línea


El desarrollo de programas en un sistema informático que es independiente del control "a bordo" del robot. Los
programas resultantes se pueden copiar en la memoria del controlador del robot.

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.

envolvente de trabajo operativo


La parte de la envolvente de trabajo restringida que realmente utiliza el robot mientras realiza su
movimiento programado. Esto incluye como máximo el efector final, la pieza de trabajo y el propio robot.

operador
Una persona designada para iniciar, monitorear y detener la operación productiva prevista de un robot o sistema de
robot.

caja del operador


Un panel de control que está separado del robot y está diseñado como parte del sistema de robot. Consiste en los
botones, interruptores y luces indicadoras necesarias para operar el sistema.

Panel del operador


Un panel de control diseñado como parte del sistema de robot y que consta de los botones, interruptores y luces
indicadoras necesarias para operar el sistema.

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.

tarjeta de circuito impreso

Véase placa de circuito impreso.

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

Véase controlador lógico programable o controlador de celda.

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.

placa de circuito impreso


Una placa plana cuyo frente contiene ranuras para chips de circuitos integrados y conexiones para una variedad de
componentes electrónicos, y cuya parte posterior está impresa con rutas conductoras de electricidad entre los
componentes.

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.

Controlador lógico programable


Un dispositivo de control industrial de estado sólido que recibe entradas de dispositivos de control proporcionados por el usuario,
como interruptores y sensores, las implementa en un patrón preciso determinado por programas basados en diagramas de
escalera almacenados en la memoria del usuario y proporciona salidas para el control de procesos o dispositivos suministrados por
el usuario, como relés y arrancadores de motor.

Caja de herramientas del programa

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.

Memoria de acceso aleatorio


1. Memoria de estado sólido volátil utilizada para el almacenamiento de programas y ubicaciones; se requiere respaldo de batería.
2. La memoria de trabajo del controlador. Los programas y los datos variables deben cargarse en la RAM antes de
que el programa pueda ejecutarse o el programa pueda acceder a los datos.

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.

Memoria de sólo lectura


Una memoria digital que contiene un patrón fijo de bits que no puede alterar.

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

copia de seguridad de archivos, la restauración de archivos y el registro de transacciones.

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

Devolver un registro o lugar de almacenamiento a cero oa una condición inicial especificada.

sobre de trabajo restringido


La porción del área de trabajo a la que un robot está restringido por dispositivos limitadores que establecen
límites que no se excederán en caso de una falla razonablemente previsible del robot o sus controles. La
distancia máxima que el robot puede recorrer después de que se activa el dispositivo limitado define el
entorno de trabajo restringido del robot.

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.

empezar desde cero

Le permite activar y desactivar la función de recuperación automática.

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.

Inclusión del lado del servidor (SSI)


Un método para llamar o "incluir" código en una página web.

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

Salida del sistema.

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.

Panel de operador estándar (SOP).


Un panel que se compone de botones, interruptores de llave y puertos de conexión.

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

variable del sistema


Un elemento que almacena datos utilizados por el controlador para indicar cosas como las especificaciones del
robot, los requisitos de la aplicación y el estado actual del sistema.

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.

punto central de la herramienta

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.

Dispositivo de memoria USB

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.

Panel de operador de usuario


Dispositivo de control suministrado por el usuario que se utiliza en lugar o en paralelo con el panel del operador o la caja del
operador suministrados con el controlador. UOP abreviado.

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

D dispositivo de memoria, 9–7, 9–11

transferencia de datos entre robots, filtrado, 9–7


copia de seguridad del dispositivo de memoria,
12–1 DOSFILE_INF
procedimiento integrado, A– binario del dispositivo de memoria 9–11, lápiz

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

Dispositivo Ethernet, 9–7, 9–11 J740, 12–2

F PAGS
Disco F-ROM, 9–2 computadora personal, 9–2

sistema de archivos, 9–2

dispositivo de memoria filtrada, 9–7 disco de R


almacenamiento de archivos flash, 1–9
R545
Disco de almacenamiento de archivos Flash (FR), 9–
número de pedido, 9–12
7, 9–9 Flash Rom (F-ROM), 1–8
R632
dispositivo de fiebre aftosa, verfidispositivo de memoria filtrado
número de pedido, 1–2
R648
yo número de pedido, 11–2

iRVision, A–370 a A–372, A–374 a A–376, Disco RAM, 9–2


A–378 a A–381, A–383 a A–385, A–387 a Disco RAM (RD), 9–7, 9–10
A–391, A–394, A–396 a A–397, A–399
S
j semáforo, 16–9
J740 mensajería de socket

número de pedido, 12–2 configurar, 11–3


opción J957, 9–9 CAREL, 11–8
rendimiento de la red, 11–10
descripción general, 11–2
METRO
ejemplos de programación, 11–
memoria, 1–8 11 requisitos del sistema, 11–2
tarjeta de memoria, 9–2 SRAM, 1–8 a 1–9
tarjeta de memoria (MC), 9–7 almacenamiento

Índice–1
Glosario MARRC75KR07091E Rev H

sistema de archivos, 9–2 procedimiento incorporado, A–


dispositivos de almacenamiento 381 V_LED_OFF
descripción general, 9–7 procedimiento incorporado, A–
383 V_LED_ON

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

You might also like