返回主站|会员中心|保存桌面

西门子(SIEMENS)服务商    

框架断路器、塑壳断路器、隔离开关、软启动、变频器、电机 、PLC、触摸屏

联系方式
  • 联系人:吴经理
  • 电话:18576370666
新闻分类
  • 暂无分类
站内搜索
 
首页 > 新闻中心 > S7-300与S7-1200在使用Modbus-Tcp指令!
新闻中心
S7-300与S7-1200在使用Modbus-Tcp指令!
发布时间:2025-09-24        浏览次数:4        返回列表

S7-300 与 S7-1200 均支持 Modbus-TCP 通信,但在指令使用、配置方式和功能特性上存在差异,以下从硬件要求、指令调用、典型配置步骤三方面对比说明:

一、硬件与软件环境

项目S7-300S7-1200
通信模块需配备 CP343-1(如 CP343-1 Lean)或集成 PN 口的 CPU(如 CPU 317-2PN/DP)CPU 自带 PN 口(如 CPU 1214C DC/DC/DC),无需额外模块
编程软件STEP 7 V5.5 及以上(需安装 Modbus-TCP 库)TIA Portal V13 及以上(指令集成在固件中)
协议支持需通过西门子官方 Modbus-TCP 库(如 SIMATIC_NET)实现固件内置 Modbus-TCP 指令(MB_CLIENT/MB_SERVER)

二、Modbus-TCP 指令差异

1. S7-300:依赖库指令(以客户端为例)

S7-300 需安装 Modbus-TCP 库(如MODBUS_TCP_IP_V3),通过功能块调用实现通信:

  • 客户端指令MB_CLIENT(主动读取 / 写入服务器数据)

  • 服务器指令MB_SERVER(被动响应客户端请求)

关键参数

  • MB_MODE:通信模式(1 = 读线圈,3 = 读保持寄存器,16 = 写多个寄存器)

  • IP_ADDR:服务器 IP 地址(如 "192.168.0.1")

  • DATA_ADDR:Modbus 地址(如 40001 对应保持寄存器起始地址)

  • DATA_LEN:数据长度(字节数)

  • DATA_PTR:数据指针(指向 PLC 内部存储区,如 DB 块)

调用示例(读取服务器保持寄存器):

plaintext

// 调用MB_CLIENT读取保持寄存器(40001-40004)
CALL "MB_CLIENT" , DB10
    MB_MODE := 3                  // 读保持寄存器
    IP_ADDR := "192.168.0.2"      // S7-1200服务器IP
    REM_PORT := 502               // Modbus-TCP默认端口
    DATA_ADDR := 0                // 40001对应地址0
    DATA_LEN := 4                 // 读取4个寄存器
    DATA_PTR := P#DB20.DBX0.0 BYTE 8  // 数据存储到DB20
    CONNECT := TRUE               // 建立连接
    DONE := M10.0                 // 完成标志
    ERROR := M10.1                // 错误标志
    STATUS := MW12                // 状态码(0=成功)

2. S7-1200:内置指令(TIA Portal 集成)

S7-1200 的 Modbus-TCP 指令直接集成在固件中,无需额外库,支持客户端和服务器模式:

  • 客户端指令MB_CLIENT(与 S7-300 类似,但参数更简洁)

  • 服务器指令MB_SERVER(配置本地 Modbus 地址映射)

关键参数

  • Request:触发通信(上升沿有效)

  • Server:服务器 IP 和端口(如 "192.168.0.1:502")

  • Mode:操作模式(同 S7-300)

  • Address:Modbus 起始地址

  • Count:数据长度(寄存器数量)

  • Data:数据缓冲区(如 DB 块或 M 区)

调用示例(写入服务器保持寄存器):

st

// S7-1200作为客户端,写入服务器40005-40006寄存器
"MB_CLIENT".Request := FALSE;
IF "Write_Trigger" THEN
    "MB_CLIENT".Mode := 16;               // 写多个寄存器
    "MB_CLIENT".Server := '192.168.0.3:502';  // S7-300服务器IP
    "MB_CLIENT".Address := 4;             // 40005对应地址4
    "MB_CLIENT".Count := 2;               // 写入2个寄存器
    "MB_CLIENT".Data := #WriteBuffer;     // 数据缓冲区(DB块)
    "MB_CLIENT".Request := TRUE;          // 触发写入
    "Write_Trigger" := FALSE;
END_IF;

三、配置步骤对比

1. S7-300 配置(STEP 7)

  1. 安装库文件:在 STEP 7 中安装 Modbus-TCP 库(如SIMATIC_NET),添加到项目库中。

  2. 硬件组态:在 HW Config 中配置 CP343-1 模块,设置 IP 地址(如 192.168.0.3)。

  3. 创建数据块:建立 DB 块用于存储发送 / 接收数据(如 DB20 为接收区,DB30 为发送区)。

  4. 调用指令:在 OB1 中调用MB_CLIENTMB_SERVER,关联参数与 DB 块。

  5. 测试通信:通过STATUS状态码排查问题(0 = 成功,非 0 需参考手册解码)。

2. S7-1200 配置(TIA Portal)

  1. 硬件组态:在设备组态中设置 CPU 的 IP 地址(如 192.168.0.2)。

  2. 添加指令:在 OB1 中直接拖拽MB_CLIENTMB_SERVER指令(位于 "通信 > Modbus-TCP" 目录)。

  3. 参数映射

    • 客户端:填写服务器 IP、操作模式、数据地址和缓冲区。

    • 服务器:设置本地 IP 端口(默认 502),映射 Modbus 地址到 PLC 存储区(如 40001 映射到 DB10.DBW0)。

  4. 诊断:通过指令的ErrorStatus参数监控通信状态,或使用 TIA Portal 的 "在线诊断" 功能。

四、关键注意事项

  1. 地址映射差异

    • Modbus 地址(如 40001)对应 PLC 存储区时,S7-300 需通过DATA_PTR指定绝对地址(如 P#DB20.DBX0.0),S7-1200 支持符号访问(如 "DB10".Data [0])。

  2. 数据类型匹配

    • 保持寄存器(功能码 3/16)对应 16 位无符号整数,需注意 PLC 内部数据类型(如 INT/UINT)与 Modbus 数据的转换。

  3. 性能限制

    • S7-300 的 Modbus-TCP 通信速率受 CP 模块性能限制(如 CP343-1 最大支持 100Mbps),S7-1200(固件 V4.4+)支持更高并发。

  4. 防火墙设置

    • 若通过路由器通信,需开放 502 端口,避免端口被屏蔽导致通信失败。

五、S7-300 与 S7-1200 互通信示例

场景:S7-1200(客户端)读取 S7-300(服务器)的保持寄存器 40001-40002。

  1. S7-300(服务器)配置

    • 调用MB_SERVER,设置本地 IP:192.168.0.3,端口 502。

    • 映射 40001→DB10.DBW0,40002→DB10.DBW2。

  2. S7-1200(客户端)配置

    • 调用MB_CLIENTServer设为 "192.168.0.3:502",Mode=3Address=0Count=2

    • 读取数据存储到 DB20.DBW0 和 DB20.DBW2。

通过以上配置,两者可实现稳定的 Modbus-TCP 通信。实际应用中需根据数据量调整通信周期(建议≥100ms),并通过状态码及时排查连接超时、地址错误等问题。

收缩
  • QQ咨询

  • 电话咨询

  • 18576370666
  • 添加微信客服