跳到主要内容

点位管理

点位是机器人程序的基础数据。在 IDE 的 点位管理面板 中可以查看、编辑、导入导出所有点位。

查看点位

点位管理面板以列表形式显示所有点位:

说明
名称点位名称(如 Home、Pick1)
类型关节坐标 / 笛卡尔坐标
J1~J6各关节角度值 (度)
X/Y/ZTCP 位置 (mm)
Rx/Ry/RzTCP 姿态 (度)

创建点位

除了通过示教器记录外,还可以手动创建:

  1. 点击 新建点位
  2. 输入名称和坐标值
  3. 点击 确定
从其他系统迁移

如果已有坐标数据(如从其他品牌机器人导出),可以手动输入坐标值创建点位,无需逐一示教。

编辑点位

双击点位可以修改名称和坐标。也可以:

  • 移动到点位:机器人自动运动到该点位(低速),确认位置是否正确
  • 更新为当前位置:将机器人当前位置覆盖到该点位

分组管理

建议按功能对点位进行分组:

Home/
Home
取料工位/
Pick_Above
Pick
放料工位/
Place_Above
Place

导入导出

导出

点击 导出 按钮,支持 CSV 格式:

名称,J1,J2,J3,J4,J5,J6
Home,0.0,0.0,0.0,0.0,0.0,0.0
Pick,45.2,-30.5,60.0,0.0,-29.5,45.2
Place,-45.2,-30.5,60.0,0.0,-29.5,-45.2

导入

点击 导入 选择 CSV 文件,系统自动匹配列名并导入。同名点位会提示是否覆盖。

撤销与恢复

所有点位编辑操作支持 撤销/恢复(最多 50 步)。

  • Ctrl+Z — 撤销
  • Ctrl+Y — 恢复

点位数据结构

关节坐标点位 (JointPos)

TYPE ROBOT_JOINT :
STRUCT
J1, J2, J3, J4, J5, J6 : LREAL; // 关节角度 ° 或 mm (棱柱关节)
J7 : LREAL; // 7 轴冗余机器人用
E1, E2, E3 : LREAL; // 外部轴 (变位机)
ToolId : UINT; // 绑定工具
UserFrameId : UINT; // 绑定工件
Meta : POINT_META; // 元数据
END_STRUCT
END_TYPE

笛卡尔坐标点位 (CartesianPos)

TYPE ROBOT_POS :
STRUCT
X, Y, Z : LREAL; // 位置 mm, 相对 UserFrame
Rx, Ry, Rz : LREAL; // 姿态 ° (RPY XYZ)
// 或用四元数:
Qw, Qx, Qy, Qz : LREAL; // 四元数 (精度更高, 无万向锁)
Config : USINT; // 机器人构型标志位 (肘上/肘下, 腕上/腕下)
Turns[6] : SINT; // 每轴转数 (处理 ±360°)
ToolId : UINT;
UserFrameId : UINT;
Meta : POINT_META;
END_STRUCT
END_TYPE

点位元数据 (Meta)

TYPE POINT_META :
STRUCT
Name : STRING(64);
Group : STRING(64);
Author : STRING(32); // 最后修改人
CreatedAt : DT;
ModifiedAt : DT;
Comment : STRING(256);
RefCount : UDINT; // 被程序引用次数
LockStatus : BOOL; // 是否锁定不可改
END_STRUCT
END_TYPE

关节点位 vs 笛卡尔点位

类型优点缺点适用
关节点位精确可重现, 不受工件 / 工具影响换工具 / 工件后全失效Home / 折叠姿态
笛卡尔点位换工具 / 工件自动偏移需选机器人构型工作点, 绝大多数

推荐做法:

  • Home / Trans 过渡点: 关节点位
  • Pick / Place / Weld N: 笛卡尔点位 (相对工件)

构型标志 (Config / Turn)

同一 TCP 位姿可能有多个关节解 (通常 8 个, 6 轴机器人). 构型标志 Config 3 位指定:

  • 位 0: 肘上 (0) / 肘下 (1)
  • 位 1: 腕上 (0) / 腕下 (1)
  • 位 2: 肩前 (0) / 肩后 (1)

Turn 数组记录各轴超 ±180° 的转数 (±2 表示转了 720°), 确保回放姿态严格一致。

记录笛卡尔点位时, 系统自动保存 Config + Turn, 回放时机器人选择相同解, 避免突然换构型导致关节大角度回转。

点位修改记录 (审计)

每次编辑保存自动产生记录:

时间用户点位修改前修改后
2026-04-18 14:32张三Pick_Station_A(300, 0, 500)(300.5, 0.1, 500.2)
2026-04-18 15:10李四Weld_Start-新建 (800, 200, 600)

记录保留 3 年, 用于责任追溯回滚.

点位锁定

生产线调试完成后, 锁定关键点位防止误改:

  1. 点位管理 → 右键点位 → 锁定
  2. 锁定后点位不可编辑, 除非解锁 (需权限)
  3. 程序中引用不受影响

批量操作

选中多个点位

  • Ctrl+点击: 逐个选
  • Shift+点击: 范围选
  • Ctrl+A: 全选

批量功能

  • 批量重命名: 按规则替换字段 (如 Pick_*ProductA_Pick_*)
  • 批量平移: 所有选中点位在某方向偏移 N mm
  • 批量旋转: 绕某点旋转 N°
  • 批量切换工具 / 工件号: 改 ToolId / UserFrameId
  • 批量导出: 导出选中点为 CSV

点位引用追踪

在 IDE 引用查找 (Ctrl+F12) 功能:

点位 `Pick_Station_A` 被以下程序引用:
- MainProgram 第 42 行
- PickPlaceFB 第 15 行
- TestRoutine 第 8 行
总引用次数: 3

删除被引用的点位会提示确认, 避免运行时报错。

导入导出进阶

CSV 格式规范

Name,Type,J1,J2,J3,J4,J5,J6,X,Y,Z,Rx,Ry,Rz,ToolId,UserFrameId,Config,Comment
Home,Joint,0,-90,90,0,-90,0,,,,,,0,0,0,折叠姿态
Pick_A,Cartesian,,,,,,,300.5,0.1,500.2,0,180,0,1,1,5,取料位 A

JSON 格式

{
"version": "1.0",
"points": [
{
"name": "Home",
"type": "joint",
"joint": [0, -90, 90, 0, -90, 0],
"toolId": 0,
"userFrameId": 0,
"comment": "折叠姿态"
},
{
"name": "Pick_A",
"type": "cartesian",
"position": [300.5, 0.1, 500.2],
"orientation_rpy": [0, 180, 0],
"toolId": 1,
"userFrameId": 1,
"config": 5,
"comment": "取料位 A"
}
]
}

导入冲突策略

导入时同名点位处理:

  • 覆盖: 直接替换 (危险, 旧值丢失)
  • 跳过: 保留现有
  • 改名: 自动加后缀 _imported
  • 提示: 每条都问 (数量大时慢)

推荐: 改名, 后续人工审查合并。

程序中的点位引用

直接按名引用

MoveJ(TargetName := 'Home', Velocity := 100);

按变量引用

VAR
pWork : ROBOT_POS;
END_VAR

pWork := GetPoint('Pick_Station_A');
MoveL(TargetPosition := pWork, Velocity := 50);

按数组引用 (码垛)

VAR
aPoints : ARRAY[1..50] OF ROBOT_POS;
i : INT;
END_VAR

LoadPointGroup(Group := 'Weld_Seam_Group', Points := ADR(aPoints));

FOR i := 1 TO 50 DO
MoveL(TargetPosition := aPoints[i], Velocity := 50);
END_FOR;

参数表

参数类型说明
PointCountUDINT项目内点位总数 (上限 10000)
GroupCountUDINT分组数 (上限 500)
AutoSaveIntervalUDINT自动保存秒数 (默认 300)
UndoDepthUDINT撤销栈深度 (默认 50)
LockRequirePasswordBOOL锁 / 解锁是否要密码
AuditLogRetentionUDINT审计日志保留天数 (默认 1095 = 3 年)

排错清单

现象原因解决
导入 CSV 失败列名不匹配用标准模板导出后编辑
点位引用但运行报 "Point not found"点位被删但程序没更新重新关联或用新名
笛卡尔点位换工件后位置不对UserFrameId 绑定错检查点位属性
关节点位换工具后机器人动作变关节点位不受工具影响, 是程序逻辑变检查逻辑
批量偏移后姿态也变了偏移时勾了"连姿态旋转"只选"平移"
导出文件中文乱码编码不是 UTF-8导出时选 UTF-8 with BOM

最佳实践

  1. 命名规范: <区域>_<功能>_<序号>, 如 StnA_Weld_01
  2. 分组管理: 按工位 / 工序分组, 方便批量操作
  3. 生产点位锁定: 调试通过就锁, 防误改
  4. 版本化备份: 每周导出 CSV / JSON 提交 git
  5. 批量生成用脚本: 码垛 / 网格 5 个以上点, 脚本生成比手工快
  6. 点位不重复: 看到多个点位坐标 < 1 mm, 合并一个
  7. 审计必启用: 多人协作必须开启审计, 责任清晰
  8. 不在程序里直接写坐标: 所有坐标进点位库, 改一处生效全程序

相关文档