西门子S7-1200与FUNUC机器人MODBUS TCP通信

PLC与机器人MB通信时,funuc作为服务器端,1200作为客户端。1200向funuc发送读写请求,funuc应答后PLC接收funuc的数据,实现数据的传递。

注意:Modbus不能同步进行通信,主机在同一时间内只能向一个从机发送请求,总线上每次只有一个数据进行传输,即主机发送,从机应答,主机不发送,总线上就没有数据通信。从机不会自己发送消息给主站,只能回复从主机发送的消息请求

一、机器人端设置

1、硬件连接,此处我用的事端口1

西门子S7-1200与FUNUC机器人MODBUS TCP通信_第1张图片

IP设置:MENU-设置-设置2-主机通讯,选择TCP/IP设置

西门子S7-1200与FUNUC机器人MODBUS TCP通信_第2张图片西门子S7-1200与FUNUC机器人MODBUS TCP通信_第3张图片

 在此界面可以设置FUNUC的IP,以及固定要连接的PLC的IP,防止未授权的主机连接机器人。

西门子S7-1200与FUNUC机器人MODBUS TCP通信_第4张图片

端口设置:MENU-下一页-系统-变量进入MODBUSTCP设置,在PORT参数中修改端口号

西门子S7-1200与FUNUC机器人MODBUS TCP通信_第5张图片西门子S7-1200与FUNUC机器人MODBUS TCP通信_第6张图片

 西门子S7-1200与FUNUC机器人MODBUS TCP通信_第7张图片

2、PLC要读写的机器人的寄存器数值设定:此设定值要大于PLC要读写的存储器数量

MENU-IO-MODBUS TCP进入,此处可以设置MODBUS TCP 通信参数

比如我要写UI【1】-UI【20】需要3个16位存储器,还要写6个GI存储器,此处输入字数位4就显然不够了 可以设大一点

 西门子S7-1200与FUNUC机器人MODBUS TCP通信_第8张图片西门子S7-1200与FUNUC机器人MODBUS TCP通信_第9张图片

 3、机器人存储器分配:MODBUS TCP通信时机器人机架号固定为96,槽位号为1

UO需要两个存储器 对应的MB地址位40001-40002

UI需要两个存储器 对应的MB地址位40003-40004

GI需要6个存储器 对应的MB地址位40005-40010

西门子S7-1200与FUNUC机器人MODBUS TCP通信_第10张图片

 西门子S7-1200与FUNUC机器人MODBUS TCP通信_第11张图片

 西门子S7-1200与FUNUC机器人MODBUS TCP通信_第12张图片

二、PLC端设置 

1、PLC 的IP应与机器人处于同一IP段,在PLC属性里可以设置其IP

西门子S7-1200与FUNUC机器人MODBUS TCP通信_第13张图片

2、 PLC读写机器人数据需调用MB_CLIENT指令,位置在指令-通信-其它中可找到

西门子S7-1200与FUNUC机器人MODBUS TCP通信_第14张图片

 MB块CONNECT的参数如图所示

西门子S7-1200与FUNUC机器人MODBUS TCP通信_第15张图片西门子S7-1200与FUNUC机器人MODBUS TCP通信_第16张图片

 此处需注意的是每一个从机连接的ID是唯一的 不同的从机或者PLC还需要做服务器时ID不能相同,且PLC做服务器端时,CONNECT参数中设置的目标客户端的IP既可以是客户端的IP也可以全设为0,但是端口一定是目标客户端的端口。

 西门子S7-1200与FUNUC机器人MODBUS TCP通信_第17张图片西门子S7-1200与FUNUC机器人MODBUS TCP通信_第18张图片

 3、MODBUS TCP功能码如下图所示,可在博途的系统帮助中找到西门子S7-1200与FUNUC机器人MODBUS TCP通信_第19张图片

PLC读写FUNUC数据时主要是以下几个方面:

①PLC读取FUNUC UO【1】-UO【18】状态:用的是MODBUS通信中04功能码, MB块MB_MODE参数设置为0,MB_DATA_ADDR参数为30001此处不能为40001

西门子S7-1200与FUNUC机器人MODBUS TCP通信_第20张图片

 ②PLC读取FUNUC UI【1】-UI【20】状态:用的是MODBUS通信中03功能码, MB块MB_MODE参数设置为0,MB_DATA_ADDR参数为40003

西门子S7-1200与FUNUC机器人MODBUS TCP通信_第21张图片

 ③PLC写FUNUC UI【1】-UI【20】状态:用的是MODBUS通信中16功能码, MB块MB_MODE参数设置为1,MB_DATA_ADDR参数为40003

西门子S7-1200与FUNUC机器人MODBUS TCP通信_第22张图片

④PLC向机器人传递坐标值,我用的是FUNUC的GI存储器存储PLC传送的坐标值:用的是MODBUS通信中16功能码, MB块MB_MODE参数设置为1,MB_DATA_ADDR参数为40005

西门子S7-1200与FUNUC机器人MODBUS TCP通信_第23张图片

由于FUNUC 每一个GI存储器最大是16位而不是32位存储器,所以PLC如果向FUNUC发送实数坐标时,应把整数和小数部分转化为整数(乘以10的N次方,N为小数位数),传递给FUNUC两个GI存储器,FUNUC接收坐标数据后再在程序中转化为一个实数

 西门子S7-1200与FUNUC机器人MODBUS TCP通信_第24张图片

注意:由于FUNUC端口号唯一,因此PLC对机器人进行多通信请求的时候(以上4个每一个都可以作为一个通信请求)必须采用轮询的方式: 此处我调用了多个MB块,以“DONE”为读写数据的完成标志位,一个块完成后再启动下一个块。不用固定存取器存储MB_DATA_ADDR等参数,调用一个MB块,赋值给这些存储器而是采用多个块的原因是跑程序时发现“DONE”信号触发传递MB_DATA_ADDR等参数后经常出现端口冲突的报警,而采用SCL编程没有这个问题,具体原因有知道的大神还请告知

你可能感兴趣的:(FUNUC机器人与PLC通信,其他)