中国机器人网 App
手机扫码下载 · 或点击查看
手上有个小活,6轴abb irb1200配视觉,要根据读到的条码分拣到三个工位。想用标签指令(label那种)做程序跳转,应该比一长串IF好维护吧?
我看手册说GOTO和label配合,但实际写的时候担心现场干扰大,分拣节奏一快标签名搞混了。有没有用过的兄弟给个实际写法?最好贴段RAPID看看,几个工位分别怎么走的。
另外问一句,这玩意跟ProcCall比哪个更稳?我以前习惯用例程调用了。
直接上代码,1200上我做过类似的,三工位分拣+视觉,标签写法大概这样:
PROC main() WaitTime 0.2; ! 读视觉、PLC信号那堆省略 IF diSort=1 THEN GOTO pos1; ELSEIF diSort=2 THEN GOTO pos2; ELSEIF diSort=3 THEN GOTO pos3; ELSE GOTO pos_err; ENDIF; pos1: MoveJ pPick1,v500,z10,tool0; RETURN; pos2: MoveJ pPick2,v500,z10,tool0; RETURN; pos3: MoveJ pPick3,v500,z10,tool0; RETURN; pos_err: ! 报警或者丢到废料区 RETURN; ENDPROC
几个要点:标签名字带前缀好分类,比如pos_、err_,别整a1a2a3那种,现场真会懵。RETURN别忘了加,不加的话程序会往下串行跑,那逻辑就全乱了。GOTO和label之间的距离别拉太长,超过一屏就难调试。
我个人不太推荐用GOTO。分拣这种逻辑一旦后面要加第四个第五个工位,标签全得重排,调试的时候单步执行跳来跳去眼睛都花。我厂里做这种都是直接开三个例程,IF信号等于几就ProcCall哪个,main程序干干净净一眼看完。维护起来改一处就行,不用全局搜标签名。
你说ProcCall稳不稳,其实ABB这点做得很死,例程调用就一次压栈,出错直接停在调用行,排查很快。GOTO那种用好了是神器,用不好就是给自己挖坑,新人来接手根本不敢动。
你分拣节奏多快?我之前做过1200上每分钟40次以上的分拣,标签指令倒是没问题,但GOTO前面那个IF判断的扫描周期要注意,1200的IO刷新大概4-8ms,看你视觉通信走啥,走Profinet或者DeviceNet的话再加点延迟。
另外提个醒,标签别写在运动指令中间那种位置,容易被插队打断。
等等,IRB1200本身负载才3-7公斤,你确定是用这个型号做分拣吗?这机器人臂展和工作半径分拣三个工位还凑合,但视觉装在末端负载一加,运动性能会往下掉不少。是不是项目选型就有点将就了?