「案例解析」ABB机器人码垛编程方法与技巧
机器人码垛应用非常常见,那我们先来认识认识码垛是什么吧?
码垛机是将已装入容器的纸箱,按一定排列码放在托盘、栈板(木质、塑胶)上,进行自动堆码,可堆码多层。
在一些的工程师中,拿到了码垛项目时,匆忙下手编程与调试,到头来自己忙的不可开交,而且效率还不高,那针对码垛这类的项目或者案例我们有没有什么方法能使我们高效编程呢?答案是有的!(以ABB机器人举例介绍)
首先,我们来分析一下,我们码垛产品的时候是有行有列的(或者说横向纵向),那么这时候我们就可以联想到数组也刚好有这一特性。由此,我们可以利用数组对机器人进行编程!要想编好程序,我们应该先理解数组了。
所谓数组,是有序的元素序列。 若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。
举例:
int a[10]; 说明整型数组a,有10个元素。若要表示第10个元素,则使用a[9]。第一个则是a[0]。
float b[10],c[20]; 说明实型数组b,有10个元素,实型数组c,有20个元素。
char ch[20]; 说明字符数组ch,有20个元素。
在ABB机器人中,数组分为一维数组、二维数组、三维数组,那它们的区别在哪里呢?我们编程需要用到几维数组呢?那我们来看看例子:
一维数组:
当数组中每个元素都只带有一个下标时,称这样的数组为一维数组。
注意:ABB机器人中第一个元素为:num1{1},而非num1{0},所以num1中有三个元素,第一个元素值为5,而非第0个元素值为5。
二维数组:
理解完了数组之后,我们来看一下,具体编程案例吧!如图中,有4个点需要计算,以第1点位基准。(每个方块的长宽都是200mm*200mm)
数组建立
接下来我们来看一下在示教器里怎么编辑吧!(新建一个数组 reg6{4,3}),建立好了数组之后编程就按上述方式即可!
1.新建一个4行3列的数组,名称为reg6。
2.把计算出来的偏移值填进去。{1,1}代表第一个产品X轴偏移值,{1,2}代表第一个产品Y轴偏移值,{1,1}代表第一个产品z轴偏移值。
如果是两层的码垛(8个产品),则只需要建立reg6{8,3}数组,XY值不变,只是Z轴位置改变了。最后我们看到的程序就是这样的:
CASE 1:
pick := Offs(p10,reg6{1,1},reg6{1,2},reg6{1,3});
CASE 2:
pick := Offs(p10,reg6{2,1},reg6{2,2},reg6{2,3});
CASE 3:
pick := Offs(p10,reg6{3,1},reg6{3,2},reg6{3,3});
CASE 4:
pick := Offs(p10,reg6{4,1},reg6{4,2},reg6{4,3});
CASE 5:
pick := Offs(p10,reg6{5,1},reg6{5,2},reg6{5,3});
CASE 6:
pick := Offs(p10,reg6{6,1},reg6{6,2},reg6{6,3});
CASE 7:
pick := Offs(p10,reg6{7,1},reg6{7,2},reg6{7,3});
CASE 8:
pick := Offs(p10,reg6{8,1},reg6{8,2},reg6{8,3});
那么关于码垛的知识就给大家讲解到这里哦,大家有理解吗?欢迎大家探讨哦。
ABB机器人MODBUS TCP通讯案例,收藏起来
在工作现场,经常会用到通讯与其它设备交互信息,而ABB机器人做为四大家族之一,通讯功能也是极其丰富。如果在现场要和PLC进行通讯,而PLC支持的是MODBUS TCP 通讯协议,ABB并没有提供标准的MODBUS相关处理函数,要使用modbus/tcp,可以使用普通socket收发,按照modbus TCP格式进行数据传输。ABB工业机器人没有专用的指令,因此只能作为客户端。客户端连接程序可以放在初始化程序中,每次运行连接一次即可。
要使用MODBUS TCP 通讯协议就必须了解它的信息帧格式:
MODBUS TCP是结合了MODBUS协议和TCP/IP网络标准,它是MODBUS协议在TCP/IP上的具体实现,数据传输时在TCP报文中插入MODBUS 应用数据单元,Modbus协议赋予TCP端口号为502,这是目前在仪表与自动化行业中唯一分配到的端口号,所使用的硬件接口为以太网接口。
MODBUS TCP信息帧包含了报文头、功能码、数据3部分内容,其中消息报文头由四部分构成,共7个字节,与MODBUS RTU相比,MODBUS TCP中不存在CRC校验,校验部分由TCP/IP协议和以太网的链路层来完成。
信息帧解读:
传输标符:2个字节长度,标志Modbus询问/应答的传输,一般默认是00 00
协议标识符:2个字节长度,00 00 表示Modbus协议
数据长度:2个字节长度,即从单元标识符以后的数据个数
单元标识符:1个字节长度,相当于MODBUS RTU通信中的从站站号
功能码:1个字节长度。可用于读取设备数据或者往设备中写入数据。
数据:根据读取数据长度的不同。由n个字节组成。
1.MODBUS/TCP基于以太网,故ABB机器人在使用时需要有616-1PCINTERFACE选项。(在机器人主菜单中,选择“系统信息”查看选项)
2.MODBUS/TCP通讯介质使用普通网线即可,但是网线连接的是机器人控制器的“X5”网口中。
案例:
1.ABB机器人现在要读取调试工具中的保持寄存器的值,从第6字节开始读取2个字,使用的功能码为0X03。(调试工具上设定IP地址127.0.0.1,端口号502)
2.读取到了数据在机器人的示教器上显示
3.机器人作为客户端,调试工具作为服务器
机器人端程序编写:
VAR socketdev socket1;定义一个套接字数据类型Socket1
VAR byte send_byte{12};定义一个字节数据类型数组send_byte{12}
VAR byte recv_byte{13};定义一个字节数据类型数组send_byte{13}
VAR num send_num; 定义发送数据个数send_num
VAR num recv_num; 定义接收数据个数recv_num
PROC main()
SocketClose socket1; 关闭套接字
SocketCreate socket1;创建套接字
SocketConnect socket1,"127.0.0.1",502;指定连接的IP地址和端口号
send_byte{1}:=0X00; 传输标识符
send_byte{2}:=0X00; 传输标识符
send_byte{3}:=0X00; 协议标识符
send_byte{4}:=0X00; 协议标识符
send_byte{5}:=0X00; 长度
send_byte{6}:=0X06; 长度(00 06代表的是6个字节长度)
send_byte{7}:=0XFF; 单元标识符(任意设置)
send_byte{8}:=0X03; 功能码
send_byte{9}:=0X00; 数据地址
send_byte{10}:=0X06;数据地址(寄存器地址)
send_byte{11}:=0X00; 数据个数
send_byte{12}:=0X02; 数据个数
send_num:=12;
recv_num:=13;
WHILE TRUE DO 死循环不断收发数据
SocketSend socket1\data:=send_byte\NoOfBytes:=send_num;
注:\data代表的是数组的格式发送字节数据类型
\NoOfBytes:指定发送字节数
SocketReceive socket1\data:=recv_byte\NoRecBytes:=recv_num;
TPErase;
TPWrite"server wrote-"+ValToStr(recv_byte);
WaitTime 2;
ENDWHILE
ENDPROC
在MODBUDS调试工具中设置好IP地址和端口号(127.0.0.1和502),地址00 06和00 07这两个地址的值,分别手动赋值是5和8。
在MODBUDS调试工具“消息”这一栏中可以看到信息帧数据(蓝色字体代表机器人给到调试工具的,红色字体代表调试工具给到机器人的)
蓝色字体(从左往右):
00 00传输表示符
00 00协议表示符
00 06 数据长度
FF: 单元标识符
03: 功能码
00 06: 寄存器地址
00 02: 数据个数
红色字体(从左往右):
00 00:传输表示符
00 00:协议表示符
00 07 返回数据长度
01:单元标识符
03:功能码
00 04:4个字节
00 05:第一个数据值
00 08:第二个数据值
相关问答
abbplc编程指令?
abbplc的编程指令用于控制机器人的运动,包括直线运动、圆弧运动、旋转运动等等。其中比较常见的运动指令包括:1,用于控制机器人进行关节运动,即指定机器人的...
abbplc编程指令byte_to_int的含义?
bytetobyteto字节类型转换指令功能是把字节类型转换为其他数据类型输入输出类型:BOOL,WORD,DWORD,SINT,INT,UINT,UDINT,REAL,TIME,DATE,T...
怎么将abbplc编程变成中文版?
将ABBPLC编程软件从英文版切换为中文版需要进行以下步骤:1.下载和安装中文版编程软件:访问ABB官方网站,找到对应的中文版编程软件,并下载安装程序。2.安...
abb变频器用plc启动怎么设置参数?
ABB变频器参数设置如下:一、变频器的简朴本地启动1.首先确定空开闭合,接触器得电;2.按LOC/REM使变频器为本地控制模式3.按PAR进入控制盘的参数设置模式...
s7300plc和abb变频器通信?
s7300plc和abb的变频器通信方法:DP通讯:在Step7中组态DP网络,调用SFB14,15读写。非西门子变频器会极大的增加成本。以太网:Prifibus-Net中组态。串口:PL...
kepserver可以采集哪些类型的plc?
你好,Kepserver可以采集多种类型的PLC,包括但不限于:1.Allen-BradleyPLCs2.SiemensPLCs3.ModbusPLCs4.Mitsubishi...
plc怎样设置modbustcp通讯?
1.将通讯模块接入PLC的通讯口,扩展的网口连接modbusTCP客户端(PC或者DCS)。2.通过IE浏览器查看BCNet模块的参数在IE浏览器中,如果BCNet模块当前的IP地址,...
abb伺服和1200怎么通讯?
您好,ABB伺服和1200通讯需要使用特定的通讯协议和软件。以下是一些可能的方法:1.使用ABB的ControlBuilder软件和Siemens的Step7软件进行通讯。在ControlBuil...
ABB变频器以太网怎么和ABPLC通讯?
abb变频器没有以太网吧?要是你用的ABPLC要是可以做Modbus主站的话,可以用Modbus通讯,ABB上设置还是很简单的,要是不行可以加一个可以做主站设备。abb变频器...
ABB机器人与三菱PLC可以用什么协议通讯?
选配支持同一种协议的模块。或者用协议转换网关,转换。选配支持同一种协议的模块。或者用协议转换网关,转换。