ABB喷涂机器人IRC5P的Profinet通讯关联程序号启动
ABB喷涂机器人IRC5P通讯关联程序号启动,profinet
最近在调试ABB喷涂机器人IRC5P的时候,发现很多同行对Profinet通讯的程序号启动有点迷糊。这玩意儿说难不难,但配置细节不注意就容易掉坑里。今天咱们就边撸代码边唠嗑,看看怎么让机器人和PLC通过Profinet跳好这支"工业探戈"。
先来点硬货——配置Profinet通讯的基础框架。在RobotStudio里新建个系统配置时,记得在Industrial Networks里勾选Profinet Controller/Device。重点来了,设备名称必须和PLC那边的配置完全一致,大小写都不能错,这步要是翻车后面全白搭。
VAR devtarget dn_device;
VAR string device_name := "SprayBot_1";
VAR string ip_address := "192.168.1.10";
VAR string subnet_mask := "255.255.255.0";
! 创建设备实例
dn_device := DevCreateDevice(device_name, "Profinet");
! 设置IP参数
DevSetIPParams dn_device, ip_address, subnet_mask;
! 启动设备
DevStart dn_device;
这段RAPID代码看着简单,但有几个暗坑得注意。DevCreateDevice的第二个参数是协议类型,现在ABB新版本支持两种写法:"PROFINET"全大写或者直接写"PN"。但有些老系统只认全大写,这个大小写问题坑过不少人。还有IP地址设置,机器人当Device的时候其实PLC端分配IP更常见,这时候得把DevSetIPParams这行注释掉。
ABB喷涂机器人IRC5P通讯关联程序号启动,profinet
程序号启动的关键在于任务声明,这里有个骚操作:用任务名直接绑定程序号。比如PLC发个数字3过来,机器人就自动跑编号为3的喷涂程序。配置时在任务属性里勾选"External start",然后把任务名改成"T_ROB1@3"这种格式,数字就是程序编号。
TASK PERS loaddata load1:=[1,1,0,0,0,0];
MODULE MainModule
VAR num prog_num;
PROC main()
! 监听Profinet输入
prog_num := DINPUTS[1];
! 程序号有效性检查
IF prog_num >=1 AND prog_num <=5 THEN
StartProg prog_num;
ELSE
TPWrite "非法程序号: "+ValToStr(prog_num);
ENDIF
ENDPROC
TRAP StartProg
TEST prog_num
CASE 1:
Proc_SprayBaseCoat;
CASE 2:
Proc_SprayClearCoat;
!...其他case
ENDTEST
ENDTRAP
ENDMODULE
这个程序结构有几个亮点。首先用DINPUTS[1]直接映射Profinet的输入信号,比起用信号转变量少了一层转换。陷阱在任务优先级——Profinet通讯的中断等级要设得比程序执行等级高,否则可能出现信号接收延迟。曾经有个项目因为优先级设反了,导致每次都要按两次启动才干活。
调试时建议先用TPWrite打日志,比如在StartProg陷阱里加个TPWrite "启动程序"+ValToStr(prog_num)。等稳定了再删掉这些调试语句。遇到过最奇葩的故障是接地不良导致Profinet信号抖动,表现出来的症状就是程序号随机跳变,这种硬件问题代码层面可查不出来。
最后说个血泪教训:程序号切换时一定要处理好运动中断。曾经有个现场在切换程序时没做Abort停止,机械臂带着半罐油漆突然急停,结果把传动齿轮干废了。后来改成软停止方案:
TRAP EmergencyStop
StopMove;
Reset;
ENDTRAP
总之,Profinet通讯看着是软件配置,实际调试得软硬结合。下次碰到程序号乱跳,先别急着改代码,拿万用表量量网线屏蔽层接地可能更管用。毕竟,机器人这行当,有时候扳手比键盘好使。

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)