ABB机器人Modbus/TCP 通讯

[复制链接]
查看221 | 回复0 | 2024-8-18 09:57:38 | 显示全部楼层 |阅读模式


1. modbus由MODICON公司于1979年开发,是一种工业现场总线协议标准。1996年施耐德公司推出基于以太网TCP/IP的modbus协议:modbusTCP。采用master/slave方式通信。

2. MODBUS/TCP基于以太网,故ABB机器人在使用时需要有616-1 PCINTERFACE选项

3. ABB并没有提供标准的MODBUS相关处理函数,要使用modbus/tcp,可以使用普通socket收发,结合modbus定义对数据进行处理。

4. 机器人与PLC之间的modbus通讯,通过相关功能码实现功能,功能码如下图(使用16进制表示)

5. modbusTCP数据帧解释如下:

6. 此处举例机器人向PLC请求读取地址20-38线圈状态,发送代码如下,其中(所有信息为16进制)

0x00,0x01,0x00,0x00,0x00,0x06,0x01,0x01,0x00,0x14,0x00,0x13

红色部分为第一到第七字节:

第一第二字节:事务处理标识,PLC会返回相同值

第三第四字节:00,00 ModbusTCP协议

第五第六字节,表示从第7字节开始总共字节数

第七字节:设备地址

黑色部分为具体内容:

第八字节为功能码,此处请求读取线圈状态,故为0x01

第九、十字节:起始地址(此处均为16进制)地址20,对应16进制0x14

第十一、十二字节:从起始地址开始的线圈个数,一共19个,对应16进制0x13

7. 可以下载modbusSlave软件进行仿真,点击setup完成设置如下并运行:

上图的数据设置为0xCD,0x6B, 0x05

8. 机器人向PLC发送以上数据内容后,会接收到如下信息:

0x00,0x01,0x00,0x00,0x00,0x06,0x01,0x01,0x03,0xCD,0x6B,0x05

红色部分解释同6中的发送部分

第8字节,功能为读取线圈

第9字节,0x03表示从第10字节开始的字节数

第10字节,对27-20位线圈11001101

第11字节,对35-28位线圈01101011

第12字节,对43-36位线圈00000101(获取38-36位,43-39位数据用0补齐)

9. 机器人代码如下:

运行后机器人接收到数据如下:

由于机器人此处显示为10进制,205对应0xCD,107对应0x6B, 5对应0x05

10.若要对地址20-29共10个线圈进行写入值,参考步骤4中的功能码为0x0F,发送数据如下:

0x00,0x01,0x00,0x00,0x00,0x09,0x01,0x0F,0x00,0x14,0x00,0x0A,0x02,0xFF,0x03

红色部分为第一到第七字节:

第一第二字节:事务处理标识,PLC会返回相同值

第三第四字节:00,00 ModbusTCP协议

第五第六字节,表示从第7字节开始总共字节数

第七字节:设备地址

黑色部分为具体内容:

第八字节为功能码,此处请求写入线圈状态,故为0x0F

第九、十字节:起始地址(此处均为16进制)地址20,对应16进制0x14

第十一、十二字节:从起始地址开始的线圈个数,一共10个,对应16进制0x0A

第十三字节:表示从第14字节开始的剩余总共字节数

第十四、十五字节:写入值,若10个线圈均设为1,则27-20位11111111对应16进制0xFF,35-28位00000011对应16进制0x03.

11. 发送以上内容后,机器人会接收到如下数据:

0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x01, 0x0F, 0x00,0x14,0x00, 0x0A

红色部分与10中相同,

黑色部分为具体内容:

第八字节为功能码,此处请求写入线圈状态,故为0x0F

第九、十字节:起始地址(此处均为16进制)地址20,对应16进制0x14

第十一、十二字节:从起始地址开始的线圈个数,一共10个,对应16进制0x0A

12. 机器人代码如下:

13. 运行后,可以在仿真软件看到29-20位均被设置为1

14. 机器人接受数据如下(机器人侧以10进制显示):

十进制15对应0xFF,十进制20对应0x14,十进制10对应0x0A



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则