ABB机器人MODBUS TCP通讯案例,收藏起来
liebian365 2025-01-05 18:33 18 浏览 0 评论
在工作现场,经常会用到通讯与其它设备交互信息,而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:第二个数据值
相关推荐
- 4万多吨豪华游轮遇险 竟是因为这个原因……
-
(观察者网讯)4.7万吨豪华游轮搁浅,竟是因为油量太低?据观察者网此前报道,挪威游轮“维京天空”号上周六(23日)在挪威近海发生引擎故障搁浅。船上载有1300多人,其中28人受伤住院。经过数天的调...
- “菜鸟黑客”必用兵器之“渗透测试篇二”
-
"菜鸟黑客"必用兵器之"渗透测试篇二"上篇文章主要针对伙伴们对"渗透测试"应该如何学习?"渗透测试"的基本流程?本篇文章继续上次的分享,接着介绍一下黑客们常用的渗透测试工具有哪些?以及用实验环境让大家...
- 科幻春晚丨《震动羽翼说“Hello”》两万年星间飞行,探测器对地球的最终告白
-
作者|藤井太洋译者|祝力新【编者按】2021年科幻春晚的最后一篇小说,来自大家喜爱的日本科幻作家藤井太洋。小说将视角放在一颗太空探测器上,延续了他一贯的浪漫风格。...
- 麦子陪你做作业(二):KEGG通路数据库的正确打开姿势
-
作者:麦子KEGG是通路数据库中最庞大的,涵盖基因组网络信息,主要注释基因的功能和调控关系。当我们选到了合适的候选分子,单变量研究也已做完,接着研究机制的时便可使用到它。你需要了解你的分子目前已有哪些...
- 知存科技王绍迪:突破存储墙瓶颈,详解存算一体架构优势
-
智东西(公众号:zhidxcom)编辑|韦世玮智东西6月5日消息,近日,在落幕不久的GTIC2021嵌入式AI创新峰会上,知存科技CEO王绍迪博士以《存算一体AI芯片:AIoT设备的算力新选择》...
- 每日新闻播报(September 14)_每日新闻播报英文
-
AnOscarstatuestandscoveredwithplasticduringpreparationsleadinguptothe87thAcademyAward...
- 香港新巴城巴开放实时到站数据 供科技界研发使用
-
中新网3月22日电据香港《明报》报道,香港特区政府致力推动智慧城市,鼓励公私营机构开放数据,以便科技界研发使用。香港运输署21日与新巴及城巴(两巴)公司签署谅解备忘录,两巴将于2019年第3季度,开...
- 5款不容错过的APP: Red Bull Alert,Flipagram,WifiMapper
-
本周有不少非常出色的app推出,鸵鸟电台做了一个小合集。亮相本周榜单的有WifiMapper's安卓版的app,其中包含了RedBull的一款新型闹钟,还有一款可爱的怪物主题益智游戏。一起来看看我...
- Qt动画效果展示_qt显示图片
-
今天在这篇博文中,主要实践Qt动画,做一个实例来讲解Qt动画使用,其界面如下图所示(由于没有录制为gif动画图片,所以请各位下载查看效果):该程序使用应用程序单窗口,主窗口继承于QMainWindow...
- 如何从0到1设计实现一门自己的脚本语言
-
作者:dong...
- 三年级语文上册 仿写句子 需要的直接下载打印吧
-
描写秋天的好句好段1.秋天来了,山野变成了美丽的图画。苹果露出红红的脸庞,梨树挂起金黄的灯笼,高粱举起了燃烧的火把。大雁在天空一会儿写“人”字,一会儿写“一”字。2.花园里,菊花争奇斗艳,红的似火,粉...
- C++|那些一看就很简洁、优雅、经典的小代码段
-
目录0等概率随机洗牌:1大小写转换2字符串复制...
- 二年级上册语文必考句子仿写,家长打印,孩子照着练
-
二年级上册语文必考句子仿写,家长打印,孩子照着练。具体如下:...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- wireshark怎么抓包 (75)
- qt sleep (64)
- cs1.6指令代码大全 (55)
- factory-method (60)
- sqlite3_bind_blob (52)
- hibernate update (63)
- c++ base64 (70)
- nc 命令 (52)
- wm_close (51)
- epollin (51)
- sqlca.sqlcode (57)
- lua ipairs (60)
- tv_usec (64)
- 命令行进入文件夹 (53)
- postgresql array (57)
- statfs函数 (57)
- .project文件 (54)
- lua require (56)
- for_each (67)
- c#工厂模式 (57)
- wxsqlite3 (66)
- dmesg -c (58)
- fopen参数 (53)
- tar -zxvf -c (55)
- 速递查询 (52)