UnderAutomation
¿Una pregunta?

[email protected]

Contactos
UnderAutomation
⌘Q
Fanuc SDK documentation
CGTP overview
Documentation home

Program management

Create, delete, rename, run, pause, abort programs and manage their attributes (comment, owner, subtype) via CGTP.

CGTP provides rich program management features: create, delete, rename, run, pause, configure program properties, list programs, and edit source code.

List programs

Retrieve all TP or Karel programs on the controller, filtered by type and sub-type. You can also list all TP programs at once, regardless of their sub-type.

// List all TP programs on the controller (all sub-types)
string[] allTpPrograms = robot.Cgtp.ListTpPrograms();
foreach (string prog in allTpPrograms)
{
Console.WriteLine(prog);
}
// List TP programs of a specific sub-type
string[] jobs = robot.Cgtp.ListPrograms(CgtpProgramType.Tp, CgtpProgramSubType.Job);
string[] macros = robot.Cgtp.ListPrograms(CgtpProgramType.Tp, CgtpProgramSubType.Macro);
// List Karel programs
string[] karelPrograms = robot.Cgtp.ListPrograms(CgtpProgramType.Karel, CgtpProgramSubType.None);

Source code editing

Insert, replace, or delete lines in a TP program directly on the controller. Requires firmware V9.10+.

// Insert a new line before line 3 in program MY_PROGRAM
robot.Cgtp.InsertSourceLine("MY_PROGRAM", "L P[5] 100mm/sec FINE", 3);
// Replace the content of line 5
robot.Cgtp.ReplaceSourceLine("MY_PROGRAM", "J P[1] 50% FINE", 5);
// Delete 2 lines starting at line 4
robot.Cgtp.DeleteSourceLines("MY_PROGRAM", 4, 2);
// Delete a single line
robot.Cgtp.DeleteSourceLines("MY_PROGRAM", 1);

Run a program

Run a specific program starting from a given line (default: line 1). Requires firmware V9.30+.

// Run program from line 1
robot.Cgtp.RunProgram("MY_PROGRAM");
// Run from a specific line
robot.Cgtp.RunProgram("MY_PROGRAM", lineNum: 10);
// Select a program
robot.Cgtp.SelectProgram("MY_PROGRAM");
// Change the currently active program
robot.Cgtp.ChangeActiveProgram("MY_PROGRAM");
// Abort a specific task
robot.Cgtp.AbortTask("MY_PROGRAM");
// Pause all running programs
robot.Cgtp.PauseAllPrograms();

Create a program

// Create a program
robot.Cgtp.CreateProgram(
progName: "NEW_PROG",
owner: "UnderAutomation",
comment: "Created via CGTP",
defaultGroup: 1,
subType: CgtpProgramSubType.Job);
// Delete
robot.Cgtp.DeleteProgram("OLD_PROG");
// Rename
robot.Cgtp.RenameProgram("OLD_NAME", "NEW_NAME");
// Program properties
string comment = robot.Cgtp.GetProgramComment("MY_PROGRAM");
robot.Cgtp.SetProgramComment("MY_PROGRAM", "Updated comment");
string owner = robot.Cgtp.GetProgramOwner("MY_PROGRAM");
robot.Cgtp.SetProgramOwner("MY_PROGRAM", "Admin");
int stack = robot.Cgtp.GetProgramStackSize("MY_PROGRAM");
robot.Cgtp.SetProgramStackSize("MY_PROGRAM", 200);
robot.Cgtp.SetProgramIgnorePause("MY_PROGRAM", true);
robot.Cgtp.SetProgramWriteProtect("MY_PROGRAM", true);
robot.Cgtp.SetProgramSubType("MY_PROGRAM", CgtpProgramSubType.Macro);

Available sub-types: None, Job, Process, Macro, Condition.

Pause, abort, resume, get and set attributes

CGTP allows you to completely manage programs on the robot, including creation, deletion, renaming, and execution control. Here's a complete example demonstrating these features:

// Run a program
robot.Cgtp.RunProgram("MY_PROGRAM");
// Run from a specific line
robot.Cgtp.RunProgram("MY_PROGRAM", lineNum: 10);
// Select a program
robot.Cgtp.SelectProgram("MY_PROGRAM");
// Abort a task
robot.Cgtp.AbortTask("MY_PROGRAM");
// Pause all programs
robot.Cgtp.PauseAllPrograms();
// Create a program
robot.Cgtp.CreateProgram(
progName: "NEW_PROG",
owner: "UnderAutomation",
comment: "Created via CGTP",
subType: CgtpProgramSubType.Job
);
// Delete a program
robot.Cgtp.DeleteProgram("OLD_PROG");
// Rename a program
robot.Cgtp.RenameProgram("OLD_NAME", "NEW_NAME");
// List all TP programs
string[] programs = robot.Cgtp.ListTpPrograms();
// Edit source code (firmware V9.10+)
robot.Cgtp.InsertSourceLine("MY_PROGRAM", "L P[5] 100mm/sec FINE", 3);
robot.Cgtp.ReplaceSourceLine("MY_PROGRAM", "J P[1] 50% FINE", 5);
robot.Cgtp.DeleteSourceLines("MY_PROGRAM", 4, 2);
// Read program properties
string comment = robot.Cgtp.GetProgramComment("MY_PROGRAM");
string owner = robot.Cgtp.GetProgramOwner("MY_PROGRAM");
bool ignorePause = robot.Cgtp.GetProgramIgnorePause("MY_PROGRAM");
// Write program properties
robot.Cgtp.SetProgramComment("MY_PROGRAM", "Updated comment");
robot.Cgtp.SetProgramSubType("MY_PROGRAM", CgtpProgramSubType.Macro);

API reference

Members of Cgtp.CgtpProgramType :
public enum CgtpProgramType {
// Karel program
Karel = 2
// TP program
Tp = 1
}
Members of Cgtp.CgtpProgramSubType :
public enum CgtpProgramSubType {
// Condition handler program.
Condition = 4
// Job program.
Job = 1
// Macro program.
Macro = 3
// No specific sub-type.
None = 0
// Process program.
Process = 2
}

Integre fácilmente robots Universal Robots, Fanuc, Yaskawa, ABB o Staubli en sus aplicaciones .NET, Python, LabVIEW o Matlab

UnderAutomation
ContactosLegal

© All rights reserved.