您当前位置:网站主页 > 专业知识 >

ABB机器人通过PROFINET向西门子plc发送轴数据和速度

        在ABB机器人系统集成项目中,很多时候由于控制需求,我们需要对机器人的实时位置进行监控,这样就需要机器人向主控系统实时发送当前位置数据。本例中使用组输出信号通过PROFINET将机器人的轴角度和当前速度传输给西门子PLC。由于组输出变量的传输范围只能是0-65535的整数,因此需要将机器人的轴角度取整,然后再取绝对值进行传送,至于各轴角度的正负则通过一个Bool型变量映射给PLC。PLC收到数据之后,根据代表某个轴正负的Bool型变量的状态(True或Force),判断当前轴的角度是正还是负,并将对应的轴角度进行相应处理。
 
一、硬件准备
 
1、ABB机器人(型号IRB120,并已开通PROFINET通信功能)
2、西门子PLC(型号1200)
 
二、数据准备
 
1、创建一个jointtarget型变量(jpos1),用于存放机器人当前轴数据
 
2、创建一个num型数组(rdata),用于将读出的轴数据进行拆分,每个轴的角度单独存入一个变量以便后续处理
 
3、建立7个num型变量(A1、A2、A3、A4、A5、A6、A7),处理各轴角度和当前速度时作为中间变量使用
 
4、创建一个intnum型变量(intno1),用于连接中断程序
 
5、创建7个16位的组输出变量(outa1、outa2、outa3、outa4、outa5、outa6、sudu),通过PROFINET将处理过的数据映射到PLC
 
6、创建6个数字输出变量(a1s、a2s、a3s、a4s、a5s、a6s),将各轴角度的正负反应到PLC
 
7、创建两个点位(phome10、phome20),用于在程序循环执行的时候,不断改变各轴的当前角度
 
注:组输出变量以及数字输出变量的建立方法,请参照ABB机器人与TIA V15 PROFINET通讯
 
三、指令介绍
 
1、IDelete(中断删除):用于取消(删除)中断预定,彻底擦除中断的定义。 如果中断仅临时禁用,则应当使用指令ISleep或IDisable。为了再次进行定义,必须首先将其重新连接至软中断程序。 建议从停止点开始IDelete。
 
2、CONNECT:CONNECT用于发现中断识别号,并将其与软中断程序相连。
 
3、ITimer(Interrupt Timer):用于下达和启用定时中断的指令。
 
4、CJointT(Current Joint Target):用于读取机械臂轴和外轴的当前角度。
 
5、CSpeedOverride:用于读取由来自FlexPendant示教器的运算符所设置的速度覆盖。
返回值将为0 - 100范围中的一个数值,其中,100相当于编程速度。
 
四、程序编写
 
MODULE Zhou
    PROC main()
        initia;
        x:
        MoveJ phome, v200, z50, tool0WObj:=wobj0;
        MoveJ phome20, v200, z50, tool0;
        GOTO x;       
    ENDPROC
 
PROC initia()
IDelete intno1;
CONNECT intno1 WITH infor;
ITimer 2, intno1;
ENDPROC
 
TRAP information
jpos1 := CJointT();
rdata{1} := jpos1.robax.rax_1;
rdata{2} := jpos1.robax.rax_2;
rdata{3} := jpos1.robax.rax_3;
rdata{4} := jpos1.robax.rax_4;
rdata{5} := jpos1.robax.rax_5;
rdata{6} := jpos1.robax.rax_6;
rdata{7} := CSpeedOverride();
A1 := Trunc(rdata{1});
A2 := Trunc(rdata{2});
A3 := Trunc(rdata{3});
A4 := Trunc(rdata{4});
A5 := Trunc(rdata{5});
A6 := Trunc(rdata{6});
A7 := Trunc(rdata{7});
IF A1<0 THEN
Set a1s;
A1 := Abs(A1);
ELSE
Reset a1s;
ENDIF
IF A2 < 0 THEN
Set a2s;
A2 := Abs(A2);
ELSE
Reset a2s;
ENDIF
IF A3 < 0 THEN
Set a3s;
A3 := Abs(A3);
ELSE
Reset a3s;
ENDIF
IF A4 < 0 THEN
Set a4s;
A4 := Abs(A4);
ELSE
Reset a4s;
ENDIF
IF A5 < 0 THEN
Set a5s;
A5 := Abs(A5);
ELSE
Reset a5s;
ENDIF
IF A6 < 0 THEN
Set a6s;
A6 := Abs(A6);
ELSE
Reset a6s;
ENDIF
SetGO outa1, A1;
SetGO outa2, A2;
SetGO outa3, A3;
SetGO outa4, A4;
SetGO outa5, A5;
SetGO outa6, A6;
SetGO sudu, A7;
ENDTRAP
 
ENDMODULE
 
温馨提示:关于指令详细介绍手册以及此篇文章的电子板(Word格式)已经一并提供,需要的朋友请点击下方的“点击下载附件”自行下载!!!

点击下载附件
上一篇:ABB机器人与TIA V15 PROFINET通讯
下一篇:RobotStudio如何连接ABB机器人