ABB机器人MODBUS TCP通讯案例,收藏起来

要使用MODBUSTCP通讯协议就必须了解它的信息帧格式:

MODBUSTCP是结合了MODBUS协议和TCP/IP网络标准,它是MODBUS协议在TCP/IP上的具体实现,数据传输时在TCP报文中插入MODBUS应用数据单元,Modbus协议赋予TCP端口号为502,这是目前在仪表与自动化行业中唯一分配到的端口号,所使用的硬件接口为以太网接口。

MODBUSTCP信息帧包含了报文头、功能码、数据3部分内容,其中消息报文头由四部分构成,共7个字节,与MODBUSRTU相比,MODBUSTCP中不存在CRC校验,校验部分由TCP/IP协议和以太网的链路层来完成。


信息帧解读:

传输标符:2个字节长度,标志Modbus询问/应答的传输,一般默认是0000

协议标识符:2个字节长度,0000表示Modbus协议

数据长度:2个字节长度,即从单元标识符以后的数据个数

单元标识符:1个字节长度,相当于MODBUSRTU通信中的从站站号

功能码: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.机器人作为客户端,调试工具作为服务器

机器人端程序编写:

VARsocketdevsocket1;定义一个套接字数据类型Socket1

VARbytes_byte{12};定义一个字节数据类型数组s_byte{12}

VARbyterecv_byte{13};定义一个字节数据类型数组s_byte{13}

VARnums_num;定义发送数据个数s_num

VARnumrecv_num;定义接收数据个数recv_num

PROCmain()

SocketClosesocket1;关闭套接字

SocketCreatesocket1;创建套接字

SocketConnectsocket1,"127.0.0.1",502;指定连接的IP地址和端口号

s_byte{1}:=0X00;传输标识符

s_byte{2}:=0X00;传输标识符

s_byte{3}:=0X00;协议标识符

s_byte{4}:=0X00;协议标识符

s_byte{5}:=0X00;长度

s_byte{6}:=0X06;长度(0006代表的是6个字节长度)

s_byte{7}:=0XFF;单元标识符(任意设置)

s_byte{8}:=0X03;功能码

s_byte{9}:=0X00;数据地址

s_byte{10}:=0X06;数据地址(寄存器地址)

s_byte{11}:=0X00;数据个数

s_byte{12}:=0X02;数据个数

s_num:=12;

recv_num:=13;

WHILETRUEDO死循环不断收发数据

SocketSsocket1\data:=s_byte\NoOfBytes:=s_num;

注:\data代表的是数组的格式发送字节数据类型

\NoOfBytes:指定发送字节数

SocketReceivesocket1\data:=recv_byte\NoRecBytes:=recv_num;

TPErase;

TPWrite"serverwrote-"+ValToStr(recv_byte);

WaitTime2;

WHILEPROC

在MODBUDS调试工具中设置好IP地址和端口号(127.0.0.1和502),地址0006和0007这两个地址的值,分别手动赋值是5和8。


在MODBUDS调试工具“消息”这一栏中可以看到信息帧数据(蓝色字体代表机器人给到调试工具的,红色字体代表调试工具给到机器人的)


蓝色字体(从左往右):

0000传输表示符

0000协议表示符

0006数据长度

FF:单元标识符

03:功能码

0006:寄存器地址

0002:数据个数

红色字体(从左往右):

0000:传输表示符

0000:协议表示符

0007返回数据长度

01:单元标识符

03:功能码

0004:4个字节

0005:第一个数据值

0008:第二个数据值

免责声明:本文章如果文章侵权,请联系我们处理,本站仅提供信息存储空间服务如因作品内容、版权和其他问题请于本站联系