[西门子] S7-1200 Modbus-TCP 通讯配置向导说明

[复制链接]
查看267 | 回复0 | 2024-5-21 14:46:24 | 显示全部楼层 |阅读模式

01
相关使用说明:
(1) Modbus TCP 客户端通过 PROFINET 连接进行通信。
通过“MB_CLIENT”指令,可以在客户端和服务器之间建立连接、发送 Modbus 请求、接收响应并控制 Modbus TCP 客户端的连接终端。
通过“MB_SERVER”指令将处理 Modbus TCP 客户端的连接请求、接收并处理 Modbus 请求并发送响应。


(2) S7-1200 固件版本 V4.0 支持“MB_CLIENT”指令和最高 V3.1 版本的库。S7-1200 固件版本 V4.1 及更高版本和 S7-1500,支持“MB_CLIENT”指令与“MB_SERVER”指令的所有库版本。
使用该指令时,无需其它任何硬件模块。


(3) 使用各客户端连接时,请记住以下规则:
▀  每个“MB_CLIENT”连接都必须使用唯一的背景数据块。
▀   对于每个“MB_CLIENT”连接,必须指定唯一的服务器 IP 地址。


02
MB_CLIENT指令中
MB_MODE、MB_DATA_ADDR和MB_DATA_LEN三个参数组合定义了当前Modbus消息中所用的功能代码,如表





03
准备工作



(1) S7-1200作为服务器的话,端口号必须是502,作为客户端端口号是0;
(2)
硬件标识符一般是64 (16#40)





04
编程
(1)客户端





CONNECT 引脚的指针类型
先创建一个新的全局数据块DB, 双击打开新生成的DB块,定义变量名称为“aa",数据类型为“TCON_IP_v4”(可以将 TCON_IP_v4 拷贝到该对话框中),然后点击“回车”按键。该数据类型结构创建完毕( ID号的意义不大在这里,可以不考虑数值问题,主要是通过IP地址通讯)





注意: MB_DATA_PTR指定的数据缓冲区可以为DB块或M存储区地址中。DB块可以为优化的数据块,也可以为标准的数据块结构。若为优化的数据块结构,编程时需要以符号寻址的方式填写该引脚;若为标准的数据块结构(可以右键单击DB块,“属性”中将“优化的块访问”前面的勾去掉,需要以绝对地址的方式填写该引脚,这样便于写P#格式。

(2)服务器端




CONNECT 引脚的指针类型
先创建一个新的全局数据块DB, 双击打开新生成的DB块,定义变量名称为“aa",数据类型为“TCON_IP_v4”(可以将 TCON_IP_v4 拷贝到该对话框中),然后点击“回车”按键。该数据类型结构创建完毕( ID号的意义不大在这里,可以不考虑数值问题,主要是通过IP地址通讯)





05
编程注意事项:


(1)MODBUS-TCP通讯需要用分时控制各MB_CLIENT功能块,在同一时间只能有一个MB_CLIENT功能块的DISCONNET处于OFF(即:建立连接),不然会出现通讯不正常。
(2)不同的MB_CLIENT功能块寄存器地址范围注意不要一样(40001-49999),特别是读写时一定不能一样,容易造成数据混乱,因为读写的40001-49999的寄存器地址是同一个区域。
(3)“MB_SERVER”功能块在服务器侧一般只调用1次。所有客户端的读写数据全部包含在里面,所以要注意分别。
(4)在修改过CONNECT 引脚的指针参数或端口参数后一般需要PLC重新启动才有效。


06
实际案列程序:
  (1)客户端程序








  (2)服务器端程序






(3)参数状态说明



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

本帖子中包含更多资源

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

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

本版积分规则