S7-1200集成PN接口MODBUS TCP通信概述

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

S7-1200集成PN接口MODBUS TCP通信概述
Modbus TCP是标准的网络通信协议,通过CPU上PN接口进行TCP/IP通信,不需要额外的通信硬件模块,Modbus TCP使用开放式用户通信连接作为Modbus通信路径,所支持的混合客户机和服务器连接数最大为CPU所允许的最大开放式用户通信连接数8个。

软件STEP7 V11 SP1版本开始,S7-1200CPU 从Firmware V1.0.2开始,不再需要安装Modbus TCP的库文件,可以直接调用Modbus TCP的库指令“MB_CLIENT”和“MB_SERVER”使用实现Modbus TCP通信功能,如图1所示。

图1. Modbus TCP的库指令
S7-1200 做 Modbus Tcp Server(服务器)
“MB_SERVER”指令将处理Modbus TCP客户机的连接请求、接收Modbus功能的请求并发送响应。

1.调用MB_SERVER通信指令,进入 “Program blocks” > “OB1”主程序中调用,设置连接ID、IP端口等参数,如下图2所示。

图2.调用MB_SERVER 通信指令功能块参数意义如下表5.
表1.功能块“MB_SERVER”参数2.MB_DATA_PTR 数据块的新建
通过“Program blocks”>“Add new block”,选择“Data block”创建 DB 块,选择“标准与S7-300/400兼容”,点击“OK”键,定义数据区为100个字的数组,如图3
所示。

管脚
说明
DISCONNECT “MB_SERVER”指令建立与客户机的被动连接:0-建立与指定IP 地址和端口号的通讯连接,默认为0;1-断开通讯连接,在终止连接的过程
中,不执行任何其他功能;
CONNECT_ID 连接的ID 号:每个连接只有一个唯一的ID 号;
IP_PORT IP
端口号将定义Modbus 客户机连接请求中要监控的IP 端口号,默认值:
502;HB_HOLD_REG
指向“MB_SERVER”指令的Modbus 保持寄存器的指针:保持寄存器可以是全局DB 块或M 区,如果是DB 块则需要定义为“标准与S7-300/400兼容”的类型,如图3所示,保持寄存器包含Modbus 客户机可通过Modbus 功能FC03(读取)、FC06(写入)和FC16(读取)访问的值;
NDR 新数据就绪:0-没有新数据;1-从Modbus 客户机写入新数据;DR 数据读取:0-没有读取数据;1-从Modbus 客户机读取数据;ERROR 错误位:0-无错误;1-出现错误,错误原因查看STATUS ;
STATUS
错误代码;
图3.新建MB_DATA_PTR数据块
3.Modbus地址的对应关系
“MB_SERVER”指令允许到达的Modbus功能(FC01、FC02、FC04、FC05、FC15)直接读取和写入访问S7-1200CPU的过程映像输入/输出区(数据类型:BOOL和WORD),通过Modbus功能代码(FC03、FC06和FC16)将到达的Modbus消息写入Modbus保持寄存器或从寄存器中读取(可通过MB_SERVER指令的参数“MB_HOLD_REG”指定保持寄存器),保持寄存器的大小(MB_HOLD_REG参数)必须大于1个字节,详细参考表2.。

Modbus功能S7-1200
表2.Modbus 地址的对应关系4.客户机端Modscan32 软件设置
注意:客户机采用Modscan32软件测试,Modscan32 做 Modbus TCP Client 测试软件,是第三方软件,可以从internet 网络上下载。

将测试电脑的IP 地址设置成192.168.0.210,打开Modscan32软件,在Modscan32的“Setup->Data Definition”中设置功能码、起始地址、长度等,如图4所示。

图4.设置“Data Definition”参数
在“Connection->connect...”中打开连接属性对话框,选择“Remote modbus TCP Server”,设置服务器的IP 地址,端口号,如图5所示。

代码
功能
数据区
地址空间数据区CPU 地址FC01读取:位Output 00001到08192过程映像输出Q0.0到Q1023.7FC02读取:位Input 10001到18192过程映像输入I0.0到I1023.7FC04读取:字Input 30001到30512过程映像输入IW0到IW1022FC05写入:位Output 00001到08192过程映像输出Q0.0到Q1023.7FC15
写多入:位
Output
00001到08192
过程映像输出
Q0.0到Q1023.7
图5.设置连接属性
注意:用Modsscan32做客户机不需要考虑Device ID和服务器一致的情况,服务器自动响应客户机的Device ID。

5.通讯测试
S7-1200作服务器,客户机Modscan32用FC03功能码读取服务器的两个字,设置客户机和服务器的功能、起始地址、端口等参数相对应,具体设置如图5~6所示,
图6.S7-1200作服务器
通讯结果如下图7所示,Modscan32从服务器读到数据10,20到客户机的DB4.DBW0和
DB4.DBW2区域。

图7.FC03通讯结果
用功能FC15向服务器的Q0.0~Q0.7写8位数据,设置连接参数,Modscan32设置结果如下图8所示。

图8.使用FC15通讯,设置Modscan32
测试结果,服务器侧直接对应过程映像输出区,00001~00008对应Q0.0~Q0.7,如下图9所示。

图9.使用FC15通讯测试结果
6.HR_Start_Offset背景参数
HR_Start_Offset 是类型为字,用于指定Modbus 保持寄存器的起始地址,存储在MB_SERVER 背景数据块中,默认值是0,可以通过编程将值写入HR_Start_Offset 。

以上面FC03功能读2个字为例,将HR_Start_Offset 的偏移量设置成2,其他参数不修改,HR_Start_Offset 偏移前后地址对应关系如下表7,编程调用和结果如图10~11所示。

表3. HR_Start_Offset 偏移前后地址对应关系编程调用如下图10所示
图10.HR_Start_Offset 的偏移量设置通讯结果如下图11所示
HR_Start_Offset
地址
数据1
数据20
Modbus 地址(字)
4000140002S7-1200地址DB4.DBW0DB4.DBW22
Modbus 地址(字)
4000340004S7-1200地址
DB4.DBW0
DB4.DBW2
图11.通讯结果
7.MB_SERVER 参数STATUS 的查询参考下面列表
4.
STATUS (W#16#

发送到Modbus 客户端的响应代码(B#16#)
错误说明
7001
MB_SERVER 正在等待Modbus 客户机连接到指定的TCP 端口,仅在第一次执行连接或断开操作时才
报告此代码7002
MB_SERVER 正在等待Modbus 客户机连接到指定的TCP 端口,等待连接或断开操作完成时,将针对
任何后续执行报告此代码7003断开操作已成功完成(仅在一个PLC 扫描周期内有
效)8187参数MB_HOLD_REG 中的指针无效,数据区过小818C 参数MB_HOLD_REG 指向优化的区域(必须为“标准与S7-300/400兼容”的DB 或M 区)或因执
行超时出错(55秒)
838101不支持此功能代码
8382
03
___
表4.MB_SERVER 参数STATUS
除了上面列出的错误外,也可以从底层传输通信指令(TCON 、TDISCON 、TSEND 和TRCV )返回错误,参考相应指令的错误代码。

说明:Modbus Slave 做 Modbus TCP server 测试软件,Modscan32 做 Modbus TCP Client 测试软件,两者都是第三方软件,可以从internet 网络上下载。

数据长度错误
8383
02数据地址错误或访问了保持寄存器(MB_HOLD_REG 参数)地址以外的区域
838403数据值错误
8385
03
不支持此数据诊断代码值(功能FC08)。

相关文档
最新文档