简介:面向汇川机器人编程、调试与自动化产线运维人员的PC端示教器软件包,将示教器功能迁移到个人计算机,便于开展远程控制、程序编写、离线仿真、示教点管理和故障排查,也可作为相关专业学生熟悉机器人操作界面的练习环境。压缩包共711个文件,约5.71MB,以597张jpg和70张bmp界面及示教点素材图为主,并含21个ini配置、16个dll运行库以及xml、data、日志和可执行程序等,分别承担界面资源、参数配置与运行支撑。已有2620人学习下载,说明该工具在汇川机器人用户中具有一定参考价值。读者可据此了解电脑版示教器的文件构成与启动方式,结合图形化编程、离线路径预览和错误信息提示,搭建个人仿真调试环境,减少现场停机与试错成本。
1. 电脑版示教器软件:为什么老调试员宁愿多带一台笔记本
第一次在产线上改一段六十多行的轨迹程序,我是在示教器的小屏上一个个字符敲完的,敲到一半手腕发酸,还敲错了一个坐标系编号,整段重来。后来换成机器人电脑版示教器软件,同样的程序在笔记本上二十分钟改完,顺手把点位表导出来做了比对。这类软件干的事情很朴素:把示教器上的界面、点位表、参数页、报警页搬到 PC 上,通过以太网和控制器通信,用键盘鼠标替代薄膜按键,用大屏替代四寸小屏。
它能解决的问题集中在三块:批量编辑点位、参数页整页对照着改、程序与备份的导入导出。适合集成商调试人员、产线维保、实训教学这几类人——尤其是要反复调同一套轨迹、又需要在文档里保留参数快照的场景。不适合的场景也要说清楚:动作固定、一次示教管半年的单机设备,多装一套软件反而多一个版本要维护。
2. 装完连不上:网段、端口与控制权这三关
2.1 装之前先核对版本、权限、依赖三件事
电脑版示教器软件不是装完就能用,它和控制器之间是有版本对应关系的。控制器固件升级过、而 PC 端软件还是老安装包,最常见的表现是:连接成功,但某个参数页是空的,或者写参数时提示写入失败。这类问题不会给明确报错,只能靠版本核对排除。血泪经验是,把控制器当前的系统版本号截图存进项目文档,安装包文件名里带上版本号,别用「示教器软件_final_新」这种命名。
安装环境上有几个硬性点。第一是管理员权限,软件通常要写注册表、装驱动组件,普通用户装完会出现某些页面加载不出来。第二是运行库依赖,缺 .NET 运行时的典型现象是双击图标闪一下就没了,事件查看器里能看到缺 DLL。第三是杀毒和终端防护软件,它们对「监听端口 + 读写本地配置文件」的行为比较敏感,安装过程和首次运行都可能被拦。我一般会先临时放行安装目录再装。
还有一个容易被忽略的点:同一台电脑上不要混装多个品牌的机器人上位机软件。它们往往会往系统目录里放同名的通信库或驱动,装第二个的时候把第一个的覆盖掉,之后两个都连不上,排查起来非常费时间。条件允许就给每个品牌配一台专用调试机。
| 检查项 | 典型要求 | 不满足时的表现 |
|---|---|---|
| 控制器系统版本 | 与 PC 端软件版本对应 | 页面缺项、写参数失败 |
| 操作系统位数与版本 | 64 位主流桌面系统 | 安装中断、启动闪退 |
| 运行库 | 对应版本的运行环境 | 双击无反应、闪退 |
| 安装权限 | 管理员 | 部分模块注册失败 |
| 同机其他上位机软件 | 不建议共存 | 通信库冲突、都连不上 |
2.2 网段配不对,后面全是白费功夫
控制器和 PC 之间走的是以太网,绝大多数现场问题的根因都在这一层。控制器出厂或项目配置里通常有一个固定的示教/上位机网口地址,PC 必须配到同一网段。所谓同网段,指 IP 前三段一致、最后一段不同,子网掩码一致。
实操上有两个细节。第一,如果 PC 同时开着无线网卡和有线网卡,两个都通外网的时候路由会打架,软件发出的连接请求可能从无线网卡出去,自然连不上控制器。我习惯在调试时把无线网卡禁用,只留示教网口。第二,直连控制器用普通网线就行,现在的网卡都支持自适应,不需要特意找交叉线。
# 1. 先看清本机有几块网卡、各自什么地址,确认要用来连控制器的是哪一块 ipconfig /all # 2. 给示教网口配静态地址。示例网段按现场实际改,不要照抄 # name 后面是「网络连接」里显示的网卡名称,含空格要加引号 netsh interface ip set address name="以太网 2" static 192.168.1.100 255.255.255.0 # 3. 先 ping 通,再谈软件能不能连 ping 192.168.1.10 -n 4 # 4. ping 不通时看 ARP 表:能解析到控制器的 MAC,说明链路是通的,问题在 IP 层 arp -a上面第 2 步里的三个参数分别是「静态地址 / 子网掩码 / 网关」,直连场景网关可以留空或者填控制器地址,不影响通信。第 3 步的-n 4是发四个包,比默认的四个更直观地看出丢包。第 4 步是分水岭:ARP 里能看到控制器 MAC 但 ping 不通,多半是 IP 冲突或控制器侧网口没启用;连 MAC 都看不到,就要查网线、交换机、网口指示灯,别再折腾软件设置了。
2.3 首次连接与控制权交接
网通了之后,连接对话框里一般要填三项:控制器地址、通信端口、超时时间。端口号不要凭印象填,查控制器侧的通信配置页,或者问设备交付时给的参数表。超时时间默认值通常够用,网络经过多级交换机时可以适当放大。
真正容易出问题的是控制权。多数这类软件支持两种连接方式:只读监视和完全控制。只读模式下能看到关节角、报警、IO 状态,但参数页和点位页是灰的,改不了。很多「软件有 bug,参数改不动」的反馈,其实是没拿到控制权。切换控制权之前有两个前提:机器人处于停止状态、处于安全位置(不要在伸到设备内部的时候抢控制权)。手持示教器和 PC 端同时持有控制权的情况,有些版本会互锁、有些会直接抢占,抢占那一下如果有人在设备内部作业就是事故。
连接成功后不要急着编程,先看三样东西确认状态一致:报警列表是否为空、当前关节角读数是否与手持示教器一致、当前模式是手动还是自动。这三样对上,说明数据链路是可信的。
2.4 连上之后第一件事:做全量备份
这一步的价值在出事的时候才体现,但必须在没事的时候做。全量备份一般包含程序文件、点位数据、系统参数、IO 配置、坐标系数据几部分,软件里通常有「备份/还原」入口,选择备份到本地目录即可。
我做备份有个固定习惯:备份包解压后单独看一遍目录结构,确认程序、参数、IO 三个子目录都非空。空目录说明备份没取全,可能是权限只到只读、或者某类数据需要单独勾选。另外把控制器当前的系统版本号写进备份目录名,还原的时候一眼能对上,省掉后面「还原了但参数不对」的反复。
提示:备份目录不要放在系统盘,也不要和安装目录放一起。软件重装或卸载时清理安装目录是常规行为,备份放在里面等于没有。
3. 坐标系标定:四点法 TCP 与三点法用户坐标的验收标准
3.1 为什么这类标定放在电脑上做更稳
工具坐标系和用户坐标系的标定,本质是解一个位姿方程:机器人记录若干个姿态下的法兰位姿,配合一个共同的参考点,反解出工具中心点相对法兰的偏移。手持示教器也能做,但电脑版的优势在三个地方。
一是数值可读。标定完成后,工具坐标的 X/Y/Z 偏移、姿态角是直接显示成数字的,可以复制、可以存档、可以和上一次的标定结果对比。偏移量从 12.3mm 变成 12.8mm,说明这次标定有问题,手持示教器上你未必会注意到小数点后那位。
二是可回退。标定前把旧的坐标系数据导出,标坏了直接覆盖回去,不用重新示教。这是很实际的后悔药。
三是误差可量化。标定完把工具尖对准固定参考点,绕工具坐标轴旋转,看尖端偏移量,这个验收动作在电脑上做起来顺手得多。
3.2 工具坐标系四点法:点位怎么选才不返工
四点法的原理是用四个不同姿态让工具尖对准空间里同一个固定参考点,控制器根据四组法兰位姿解出工具中心点。四个点的姿态差异越大,方程越稳;姿态越接近,解出来的结果对测量误差越敏感。
具体做法:找一个尖锐的固定参考点(锥尖、划针尖、固定在台钳上的针),把工具尖对准它。第一个点用接近垂直的姿态,第二、三、四个点分别绕不同轴倾斜 30° 到 45°,尽量让四个点的姿态在空间里散开。每个点记录前确认工具尖和参考点确实接触,不要靠目测留缝。
| 点位 | 姿态要求 | 常见错误 |
|---|---|---|
| P1 | 接近垂直,作为基准姿态 | 工具尖与参考点有 1~2mm 间隙 |
| P2 | 绕 X 或 Y 倾斜 30°~45° | 只倾斜了 10°,解算不稳 |
| P3 | 换一个轴倾斜 30°~45° | 与 P2 倾斜方向相同,姿态退化 |
| P4 | 再换方向,与前三点的姿态都不同 | 四点姿态几乎一样,重复性差 |
标定完必须做验收,不能标完就用。验收动作是:把工具尖移到参考点上方贴合,然后手动旋转工具坐标的 Z 轴(绕工具轴自转)±90°,观察尖端相对参考点的偏移。偏移控制在 1mm 以内算合格,超过 2mm 就要重标。这一步跳过的后果是:程序里所有点位都带着一个固定偏差,等到装配对不上、涂胶偏了才发现,那时候已经示教了几十个点。
3.3 用户坐标系三点法与交叉验证
用户坐标系(也叫工件坐标系)解决的是「以工件为基准编程」的问题。三点法的三个点是:原点、X 轴方向上的一点、XY 平面上的一点(用于确定 Y 轴方向)。三点确定一个平面和两个轴向,Z 轴由右手定则推出。
选点有三个原则。第一,三点不能共线,共线时平面无法确定,软件会报错或者给出一个荒谬的姿态。第二,原点到 X 方向点的距离要够长,一般不小于 200mm,距离太短角度误差会被放大。第三,XY 平面点不要贴在 X 轴附近,与 X 轴的夹角接近 90° 时解算最稳。
验收方式比工具坐标系更直观:在用户坐标系下让机器人沿 X 方向走 100mm,拿卷尺量实际位移。量出来 98mm 说明标定尺度有问题,量出来方向偏了说明轴向点选错。再沿 Y 方向走 100mm 复核一次,两个方向都对,这个坐标系才敢用来编程。有条件的话把工件的一个已知尺寸(比如定位销间距)在用户坐标下读出来对一遍,这是最硬的验证。
3.4 负载与重心参数:跳过这步,前面全白标
这是最容易被跳过、又最容易在后面找麻烦的一步。工具重量、重心偏移、转动惯量这几个参数不填或者填错,影响的是加减速过程中的动力学补偿和过载保护。轻负载、低速场景可能看不出问题,一旦速度提上去,表现就是跟随误差报警、伺服过载、轨迹在拐角处明显外甩。
做法不复杂:称一下工具总重(含夹具、气管、线缆),量出重心相对法兰中心的三向偏移,填进工具参数页。重心不好量的,可以用软件里的重心估算功能,让机器人做几个姿态,根据各轴扭矩反算。填完之后做一次中速空跑,观察有没有过载报警、有没有明显的轨迹偏差。
需要提醒的是,工具坐标系的偏移和负载参数是两回事:前者决定「工具尖在哪」,后者决定「这东西有多重、重心在哪」。只标前者不填后者,机器人在低速下看起来一切正常,一提速就翻车。
4. 示教与编程:MOVJ/MOVL 的选型、速度单位与平滑过渡
4.1 点位采集的三种输入方式
电脑版示教器上采点,一般有三条路子,各有适用场景。
第一种是手动到位后记录。用界面上的关节键或直角坐标键把机器人移动到目标位置,点「记录」,当前位姿写入点位表。这种方式最直观,适合工件位置不固定、需要看着实物对位的场合。缺点是慢,而且对位精度受操作者手感影响。
第二种是直接输入坐标值。电脑版的大屏和键盘在这里价值最大:已知工件坐标(从图纸、从视觉系统、从上一道工序的 PLC 里读),直接把 X/Y/Z/RX/RY/RZ 填进去,机器人自己走过去。批量建点时效率高出一个量级,尤其是需要按固定间距阵列排列的点——沿 X 方向每 50mm 一个,把坐标算出来填表就行,不用一个一个去对位。
第三种是相对点位。以一个已有点为基准,给一个偏移量生成新点,比如「在 P_PICK 上方 80mm 处」。这种方式在取放料、上下料里用得最多,好处是改基准点的时候,衍生点全部跟着走,不用逐个修改。
4.2 MOVJ 与 MOVL:省不得的那条指令
这两个指令的区别,是「走关节插补」还是「走直线插补」。MOVJ 每个关节按自己的插补曲线运动,末端走出来的路径是曲线,不可预测,但速度快、不容易超程。MOVL 让末端沿空间直线运动,路径可控,但会经过中间所有位姿,容易碰上奇异点和关节限位。
选型原则很干脆:过程中机器人不接触工件、不携带工艺负载的移动,用 MOVJ;机器人末端要走一条确定的线、或者过程中有工艺动作(涂胶、焊接、插拔、压装、沿边扫描),用 MOVL。取放料里「移过去」用 MOVJ,「下探到料里」用 MOVL,是常见的组合。
速度单位是最容易踩的坑。MOVJ 的速度一般按百分比给,指的是相对各关节最大速度的比例;MOVL 的速度一般按 mm/s 给,指的是末端线速度。两个指令混在一个程序里,如果按同一套数值习惯去填,MOVJ 填 100 和 MOVL 填 100,实际速度差一个量级。加速度同理,有的是百分比,有的是 mm/s²,看参数页上的单位标识,别凭印象。
| 对比项 | MOVJ(关节插补) | MOVL(直线插补) |
|---|---|---|
| 末端路径 | 曲线,不保证 | 直线,可控 |
| 速度单位 | 多为百分比 | 多为 mm/s |
| 适用场景 | 空行程、回安全位 | 下探、涂胶、插拔、压装 |
| 主要风险 | 路径可能蹭到周边设备 | 奇异点、关节限位、超程 |
| 平滑过渡 | 一般可设较大值 | 接触工艺时建议设 0 |
4.3 平滑过渡:转弯区设多少
平滑过渡(有的界面叫转弯区、圆滑半径、SM)决定机器人经过一个点位时是「精确到位停一下」还是「提前开始拐弯」。设 0 表示精确到位,位姿误差为零,但有加减速停顿;设一个大于零的值,机器人会在距离目标点还有一段距离时就开始过渡到下一段,节拍更快,但实际轨迹会在拐角处被「切」掉一块。
设值的经验:凡是末端与工件、夹具、工装存在接触或接近接触的点位,一律设 0,宁可慢也不要撞。空行程的中间过渡点可以放大,一般按周边障碍物的余量来定,余量 100mm 就设 30~50,不要设到贴着障碍物的程度。连续轨迹加工(比如沿轮廓走一圈)时,中间点的平滑值要一致,不然轨迹在点与点之间会有速度跳变,表现出来是表面有接刀痕。
一个实用的判断方法:设完平滑值后,用软件里的轨迹预览看一遍实际路径,重点看拐角处离障碍物还有多少距离。肉眼看程序是看不出来的,预览图一看就明白。
4.4 程序结构与 IO 交互
程序不是点位堆在一起就完事,IO 时序、等待、条件判断决定了这套程序在现场稳不稳。下面是一段取放料循环的骨架,指令名和参数写法各品牌不同,结构是通用的。
// 程序名: PICK_01 用途: 料盘取料 -> 定位台放料 // 前置条件: 工具坐标 T1 已标定并验收, 用户坐标 U1 为料盘坐标系 // 参数约定: MOVJ 速度按百分比, MOVL 速度按 mm/s, SM 为平滑过渡值 MOVJ P_HOME V=30% A=30% SM=0 // 回安全位, SM=0 精确到位 MOVJ P_ABOVE_1 V=60% A=40% SM=20 // 料盘上方过渡, 允许切角 MOVL P_PICK_1 V=150 A=200 SM=0 // 直线下探到取料位, 到位停稳 IO[1] = ON // 夹爪闭合 WAIT IO[2] = ON // 等夹爪到位信号, 不要用固定延时硬等 MOVL P_PICK_1_UP V=100 A=150 SM=10 // 直线抬起, 小平滑值避免抖动 MOVJ P_ABOVE_2 V=60% A=40% SM=20 // 转到放料位上方 MOVL P_PLACE_1 V=120 A=180 SM=0 // 直线下放到定位台 IO[1] = OFF // 夹爪松开 WAIT IO[3] = ON // 等松开到位 MOVL P_PLACE_1_UP V=100 A=150 SM=10 MOVJ P_HOME V=30% A=30% SM=0 END这段程序里有几个值得说明的设计。WAIT IO[2] = ON替代固定延时,是因为夹爪的动作时间受气压、磨损影响,写死 0.3 秒在气源压力足的早上够用,下午就可能不够,表现出来是「偶尔掉件」。用信号等待,慢一点但稳。
下探和抬起的段全部用 MOVL 且 SM=0 或小值,因为这几段离工件和夹具最近,任何切角都可能撞。中间的转移段用 MOVJ 且平滑值放大,把节拍省在这里。
程序开头写了前置条件,这不是形式主义。工具坐标没验收就编程,等于所有点位都建在一个错误的基准上,后面返工是整段重来。参数约定也写清楚,因为 MOVJ 和 MOVL 的速度单位不同,隔一周再看这段程序,不写单位必然要重新查手册。
5. 避坑排查:五条现场翻车记录与对应处理
5.1 连接对话框一直转圈,最后超时
现象:软件点「连接」后进度条走完报超时,但ping控制器地址是通的。
原因:这一类多半不是网络层的问题,而是端口或进程占用。控制器侧的通信服务端口被别的上位机占用(比如另一台电脑还连着、或者手持示教器占着通道),或者本机防火墙把出站连接拦了。
解决:先在控制器侧看当前连接的客户端列表,把不用的连接踢掉;再在本机防火墙里给出站规则放行软件主程序,不是放行端口号,是放行可执行文件。做完这两步仍然不行,把软件完全退出(任务管理器里确认进程结束)再重开,有时候是上一次连接没正常释放。
5.2 参数页全是灰的,改不了
现象:软件能连上,能看关节角、能看报警,但坐标系参数页、IO 配置页整页置灰,输入框点不进去。
原因:只读连接模式。这不是权限等级不够,是连接时选的就是监视模式。
解决:断开后重连,连接方式选「控制」而不是「监视」。如果选控制时报占用,说明手持示教器还持有控制权,先在示教器上释放,或者把示教器切到非编辑状态。切换控制权前务必确认机器人在安全位置且已停止。
5.3 工具坐标系反复标定,每次结果差 3~5mm
现象:四点法标完验收,绕工具轴旋转时尖端偏移 3mm 以上;重标一次,结果又不一样。
原因有三个常见来源:一是四个点的姿态太接近,方程条件数差,测量误差被放大;二是参考点在标定过程中被碰动了(尤其是用胶带、磁力座固定的锥尖);三是机器人没有回过零位,编码器多圈数据有偏差。
解决:先确认参考点刚性固定,用台钳夹死而不是随手放。再把四个点的姿态夹角拉到 35° 以上,且四个方向都不同。最后在标定前做一次回零或原点确认。三件事都做完再标,重复性通常能进到 1mm 以内。
5.4 MOVL 走到中途报奇异点或关节限位
现象:程序单步执行时前几个点都正常,走到某一段直线突然报警,提示接近奇异点或某轴超程。
原因:直线插补要求末端沿直线走,这条直线可能穿过腕部奇异区(手腕两轴接近共线),或者要求某个关节转过超出其行程的角度。示教时手动走的是关节插补,路径是曲线,避开了这些问题,一换成 MOVL 就暴露了。
解决:在直线段的起点和终点之间插一个中间点,把一条长直线拆成两段,绕开奇异区;或者调整工具姿态,让腕部在整段运动中都不接近共线。改完用轨迹预览看一眼,确认路径上没有红色告警区。别用加大平滑值的方式硬绕,那只是把报警推迟到下一个点。
5.5 备份还原之后 IO 配置全乱了
现象:把之前备份的参数还原回去,程序能跑,但 IO 点位全错,夹爪信号接到了别的端口上。
原因:备份包和当前控制器固件版本不一致,IO 配置文件的结构变了,还原工具按旧结构解析,字段错位。或者只还原了参数文件、没还原 IO 配置文件,两套配置对不上。
解决:还原前先核对备份目录名里的版本号与控制器当前版本,不一致时不要整包还原,改成逐项还原并逐项验证。还原顺序上,先还原系统参数、再还原 IO 配置、最后还原程序与点位。还原完成后必须做一次 IO 点动测试,逐个确认输入输出对应关系,别直接上自动。
6. 从仿真到实机:低速验证与备份版本管理的一个组合习惯
新程序从软件里写完到真机跑起来,中间那段路最容易出事。我现在的固定流程是三步。
第一步在软件里做轨迹预览。把程序完整跑一遍虚拟执行,重点看三处:所有 MOVL 段的路径是否穿过夹具或料盘、拐角处的平滑切角有没有侵入障碍物、每个点的可达性有没有告警。预览图能看出来的问题,别留到实机上试。
第二步实机低速空跑。把全局速度倍率压到 10%,拆掉工件只跑空动作,一只手放在急停上,逐段确认。10% 没问题升到 30%,再升到 50%,每个速度档至少跑三个循环。这个过程中如果出现异响、抖动、轨迹明显偏移,立刻退回上一档,别抱侥幸心理往上加。
第三步是备份版本管理。这套习惯救过我几次:每次程序定型、参数调整完成、准备交给客户之前,各做一次全量备份,目录名统一成「日期_固件版本_工位号」,例如20240516_V3xx_ST02。同一工位的历次备份放在同一个父目录下,形成一条可追溯的链。
备份多了之后,人工比对不现实,我写了个小脚本做粗筛:把两次备份里的点位表导出成文本,逐行对比,把坐标或速度有变化的行标出来。不同版本导出的列顺序不一定一致,所以脚本按表头列名取值,不按位置取。
import csv def load_points(path): """读取点位表,按表头列名建立索引,避免不同版本列顺序变化导致取错列""" with open(path, newline="", encoding="utf-8-sig") as f: reader = csv.DictReader(f) # 兼容不同版本的列名写法,取不到就跳过该行 return {row.get("NAME") or row.get("名称"): row for row in reader} def diff(old_path, new_path, tol=0.5): old, new = load_points(old_path), load_points(new_path) for name in sorted(set(old) & set(new)): o, n = old[name], new[name] changed = [] for col in ("X", "Y", "Z"): if col in o and col in n: # tol 是允许的浮点误差,单位与点位表一致,一般按 mm 给 if abs(float(o[col]) - float(n[col])) > tol: changed.append(f"{col}: {o[col]} -> {n[col]}") if changed: print(name, "|", "; ".join(changed)) # 用法: diff("旧备份/points.csv", "新备份/points.csv", tol=0.5)这段脚本只做一件事:把两次备份里同名点位、坐标差异超过容差的行打出来。tol设 0.5 的意思是半毫米以内的改动当作噪声忽略,避免每次导出都刷一屏。它不判断改动是对是错,判断还是得靠人——但至少不用在几百个点里靠眼睛找。
从那以后我每次交程序之前,都会强制走一遍「低速空跑三档 + 一次全量备份 + 一次点位比对」,哪怕这次只改了一个速度参数。有一次就是靠比对发现上一版有人把某个过渡点的平滑值从 20 改成了 80,实机上表现为拐角处蹭了一下治具,肉眼完全看不出来,只有数据对得上。
希望帮到你。
本文还有配套的精品资源,点击获取