当前栏目
西门子S7-1200与FUNUC机器人MODBUS TCP通信
PLC与机器人MB通信时,funuc作为服务器端,1200作为客户端。1200向funuc发送读写请求,funuc应答后PLC接收funuc的数据,实现数据的传递。
注意:Modbus不能同步进行通信,主机在同一时间内只能向一个从机发送请求,总线上每次只有一个数据进行传输,即主机发送,从机应答,主机不发送,总线上就没有数据通信。从机不会自己发送消息给主站,只能回复从主机发送的消息请求。
一、机器人端设置
1、硬件连接,此处我用的事端口1
IP设置:MENU-设置-设置2-主机通讯,选择TCP/IP设置
在此界面可以设置FUNUC的IP,以及固定要连接的PLC的IP,防止未授权的主机连接机器人。
端口设置:MENU-下一页-系统-变量进入MODBUSTCP设置,在PORT参数中修改端口号
2、PLC要读写的机器人的寄存器数值设定:此设定值要大于PLC要读写的存储器数量
MENU-IO-MODBUS TCP进入,此处可以设置MODBUS TCP 通信参数
比如我要写UI【1】-UI【20】需要3个16位存储器,还要写6个GI存储器,此处输入字数位4就显然不够了 可以设大一点
3、机器人存储器分配:MODBUS TCP通信时机器人机架号固定为96,槽位号为1
UO需要两个存储器 对应的MB地址位30001-30002
UI需要两个存储器 对应的MB地址位40003-40004
GI需要6个存储器 对应的MB地址位40005-40010
二、PLC端设置
1、PLC 的IP应与机器人处于同一IP段,在PLC属性里可以设置其IP
2、 PLC读写机器人数据需调用MB_CLIENT指令,位置在指令-通信-其它中可找到
MB块CONNECT的参数如图所示
此处需注意的是每一个从机连接的ID是唯一的 不同的从机或者PLC还需要做服务器时ID不能相同,且PLC做服务器端时,CONNECT参数中设置的目标客户端的IP既可以是客户端的IP也可以全设为0,但是端口一定是目标客户端的端口。
3、MODBUS TCP功能码如下图所示,可在博途的系统帮助中找到
PLC读写FUNUC数据时主要是以下几个方面:
①PLC读取FUNUC UO【1】-UO【18】状态:用的是MODBUS通信中04功能码, MB块MB_MODE参数设置为0,MB_DATA_ADDR参数为30001此处不能为40001
②PLC读取FUNUC UI【1】-UI【20】状态:用的是MODBUS通信中03功能码, MB块MB_MODE参数设置为0,MB_DATA_ADDR参数为40003
③PLC写FUNUC UI【1】-UI【20】状态:用的是MODBUS通信中16功能码, MB块MB_MODE参数设置为1,MB_DATA_ADDR参数为40003
④PLC向机器人传递坐标值,我用的是FUNUC的GI存储器存储PLC传送的坐标值:用的是MODBUS通信中16功能码, MB块MB_MODE参数设置为1,MB_DATA_ADDR参数为40005。
由于FUNUC 每一个GI存储器最大是16位而不是32位存储器,所以PLC如果向FUNUC发送实数坐标时,应把整数和小数部分转化为整数(乘以10的N次方,N为小数位数),传递给FUNUC两个GI存储器,FUNUC接收坐标数据后再在程序中转化为一个实数
注意:由于FUNUC端口号唯一,因此PLC对机器人进行多通信请求的时候(以上4个每一个都可以作为一个通信请求)必须采用轮询的方式: 此处我调用了多个MB块,以“DONE”为读写数据的完成标志位,一个块完成后再启动下一个块。不用固定存取器存储MB_DATA_ADDR等参数,调用一个MB块,赋值给这些存储器而是采用多个块的原因是跑程序时发现“DONE”信号触发传递MB_DATA_ADDR等参数后经常出现端口冲突的报警,而采用SCL编程没有这个问题,具体原因有知道的大神还请告知。
相关文章
- 前端面试 【JavaScript】— typeof 是否能正确判断类型?
- 前端面试 【JavaScript】— instanceof 能否判断基本数据类型?
- 前端面试 【JavaScript】— 能不能手动实现一下 instanceof 的功能?
- 前端面试 【JavaScript】— Object.is和=== 有什么区别?
- 前端面试 【JavaScript】— JS中类型转换有哪几种?
- 前端面试 【JavaScript】— == 和 ===有什么区别?
- 前端面试 【JavaScript】— 对象转原始类型是根据什么流程运行的?
- JavaScript 的 parseInt() 函数
- javascript实现两个数字进行组合
- JS监听键盘按键
- 大前端开发中的路由管理之五:Flutter篇
- Javascript的DOM操作
- 在Vue项目中使用WebSocket技术
- 新手向:前端程序员必学基本技能——调试JS代码
- React 毁了 Web 开发!
- 「JS 逆向百例」cnki 学术翻译 AES 加密分析
- 商标注册域名后缀用什么?商标和域名有哪些区别?
- 网站建设流程是怎样的?需要看重哪些细节?
- 网站域名商标注册流程是什么?网站域名商标有什么用?
- 如何建设一个实用性强的网站 网站上线后如何运营