以下是西门子S7-300系列PLC的Modbus地址与软元件对应表,需注意S7-300本身不直接集成Modbus协议,需通过专用通信模块(如CP341、CP343-1 Advanced等)实现,地址映射需通过模块配置手动定义,灵活性较高。

Modbus地址类型 典型Modbus地址范围 可映射的PLC软元件 功能码 读写属性 说明
线圈(Coils) 00001-0XXXX(自定义) Q区(Q0.0-Qn.n)、M区(M0.0-Mn.n)、DB区位(如DB1.DBX0.0) 01(读线圈)、05(写单线圈)、15(写多线圈) 读写 1. 对应PLC的数字量输出、中间位或DB块中的位
2. 地址范围通过CP模块配置定义(如00001-00100映射Q0.0-Q12.4)
3. 示例:00001 = Q0.0,00002 = Q0.1,依位递增
离散输入(Discrete Inputs) 10001-1XXXX(自定义) I区(I0.0-In.n)、DB区只读位(如DB2.DBX0.0) 02(读离散输入) 只读 1. 对应PLC的数字量输入或DB块中的只读位
2. 地址范围自定义(如10001-10050映射I0.0-I6.1)
3. 示例:10001 = I0.0,10002 = I0.1
输入寄存器(Input Registers) 30001-3XXXX(自定义) PIW区(PIW256-PIWn)、DB区只读字(如DB3.DBW0) 04(读输入寄存器) 只读 1. 对应PLC的模拟量输入(PIW,过程输入字)或DB块中的只读字
2. 按字(16位)递增,地址间隔1(如30001=PIW256,30002=PIW258)
3. 支持32位数据(需占用2个连续寄存器,如30001-30002对应PID256)
保持寄存器(Holding Registers) 40001-4XXXX(自定义) PQW区(PQW256-PQ Wn)、DB区读写字(如DB4.DBW0)、MW区(MW0-MWn) 03(读保持寄存器)、06(写单寄存器)、16(写多寄存器) 读写 1. 对应PLC的模拟量输出(PQW,过程输出字)、中间字(MW)或DB块中的读写字
2. 按字递增,示例:40001=DB4.DBW0,40002=DB4.DBW2
3. 支持浮点数(REAL)、双整数(DINT)等,需占用2个连续寄存器(如40001-40002对应DB4.DBD0)

关键特性与配置说明:

  1. 依赖通信模块

    • 需通过CP341(支持Modbus RTU/ASCII)或CP343-1 Advanced(支持Modbus TCP)扩展,CPU本身不直接支持Modbus协议。
    • CP341需配合“Modbus RTU从站”或“主站”驱动(需安装西门子GSD文件),CP343-1 Advanced需通过TIA Portal配置Modbus TCP服务器/客户端。
  2. 地址映射配置

    • 通过TIA Portal(或STEP 7)的硬件配置(HW Config)定义映射关系:在CP模块属性中添加“地址映射表”,关联Modbus地址范围与PLC内部软元件(如将00001-00016映射到Q0.0-Q1.7)。
    • 支持多段映射:例如将00001-00050映射到Q区,00051-00100映射到M区,灵活适配实际需求。
  3. 软元件地址规则

    • 位元件(I、Q、M、DBX):Modbus地址按“位”递增(如00001对应第1位,00002对应第2位)。
    • 字元件(PIW、PQW、MW、DBW):Modbus地址按“字”递增(每个字占1个Modbus地址,地址间隔1),与PLC内部字地址(间隔2字节)对应。
  4. 数据类型处理

    • 16位数据(INT、WORD):对应1个保持寄存器(如40001 = DB1.DBW0)。
    • 32位数据(DINT、REAL):需占用2个连续寄存器(如40001-40002 = DB1.DBD0),主站需按西门子字节顺序(高位在前)解析。
    • 字符串(STRING):按字节拆分到连续寄存器,需提前定义长度。
  5. 型号与模块限制

    • CP341(RS485接口):最大支持2048个线圈、2048个离散输入、1024个输入寄存器、1024个保持寄存器(受模块性能限制)。
    • CP343-1 Advanced:支持更大地址范围(如保持寄存器可扩展至40001-465535),适合大量数据交互。
    • 不同CPU(如313C、315-2PN/DP)对通信模块的支持无差异,主要取决于CP模块型号。
  6. 调试与监控

    • 使用TIA Portal的“在线诊断”功能查看CP模块状态,确认映射是否生效。
    • 通过PLC程序中的“状态表”监控映射区域(如DB4.DBW0),验证Modbus读写是否正常。
    • 若通信异常,检查CP模块地址映射是否与主站请求地址重叠,或波特率、校验位等参数是否匹配。

S7-300的Modbus通信核心在于通过CP模块的灵活配置实现地址映射,实际应用中需根据项目需求(如数据量、读写频率)规划映射范围,避免地址冲突或超出模块性能限制。