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:第二个数据值
「案例解析」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});
那么关于码垛的知识就给大家讲解到这里哦,大家有理解吗?欢迎大家探讨哦。
相关问答
abbplc编程指令?
abbplc的编程指令用于控制机器人的运动,包括直线运动、圆弧运动、旋转运动等等。其中比较常见的运动指令包括:1,用于控制机器人进行关节运动,即指定机器人的...
abbplc可以用网线编程吗?
是的,ABBPLC可以通过网线进行编程。ABB的PLC通常有一个以太网口,可以通过以太网连接到计算机或编程设备,以进行编程和监控。使用适当的软件,可以通过网线与P...
abbplc如何自己创建模块?
1.可以自己创建模块。2.因为ABBPLC提供了开发环境和相应的编程语言,用户可以根据自己的需求和要求,通过编写程序代码,创建自己的模块。3.在创建模块之前,...
如何把abbplc程序清空?
1.首先可以通过删除abbplc程序来清空。2.在ABB机器人控制器中,abbplc程序是机器人在工作时执行的程序,而且这个程序是保存在控制器中的。因此,删除abbplc程序...
abbplc通信线怎么做-盖德问答-化工人互助问答社区
用总线电缆即可,一般推荐如下:普通双绞屏蔽型电缆stp-120ω(forrs485&can)onepair20awg,电缆外径7.7mm左右,蓝色护套。适用于室内、管道.....
三菱PLC与ABB机器人如何实现信号连接?
要实现三菱PLC与ABB机器人的信号连接,可以通过以下步骤进行:首先,使用PLC的数字输出模块将信号发送到机器人控制器。然后,通过机器人控制器的数字输入模块...
abb工业机械人编程员待遇如何?
工业机器人编程员的工资大概在8000到10000。ABB机器人的功能非常强大,如果要学习ABB机器人的编程一定不要不要仅仅局限于实现机器人的动作。机器人信号的创建,...
plc怎么与网页结合?
PLC可以与网页结合通过网页服务器和PLC通信模块相互联系。使用网页服务器可以将PLC的数据和状态以网页的形式显示出来,方便人们进行监控和控制操作。通信模块...
abb变频器怎么反馈到plc?
您可以将ABB变频器的反馈接口连接到PLC的数字输入端口,然后通过编程设置PLC监控该端口的状态变化。当变频器产生故障或状态改变时,反馈接口会发送信号到PLC,P...
采用PLC控制的变频器一拖三恒压供水技术方案?
基于PLC和变频器串行通讯的变频恒压供水系统摘要:介绍了一种基于PLC和变频器采用串行总线方式通讯的变频恒压供水系统的构成和工作原理。系统采用变频调速方...