如何通过 Modbus RTU 协议实现 S7-1200 与 PAC3200 的通信 How to communication between S7-1200 and PAC3200 meter via Modbus RTU protocol Getting Started Edition (2009 年 12 月 )
摘要本文介绍了通过 Modbus 协议实现 S7-1200 与 PAC3200 的通信 关键词 Modbus 协议,S7-1200,PAC3200 Key Words Modbus RTU protocol,s7-1200,sentron PAC3200 IA&DT Service & Support Page 2-27
目录如何通过 Modbus RTU 协议实现 S7-1200 与 PAC3200 的通信... 1 1. 西门子 SENTRON PAC3200 仪表介绍... 4 1.1 SENTRON PAC3200 MODBUS RTU 通信扩展模块介绍... 4 1.2 SENTRON PAC3200 MODBUS RTU 通信扩展模块的接线... 5 1.3 SENTRON PAC3200 MODBUS RTU 通信的方式... 6 2. 西门子 SENTRON PAC3200 仪表与 S7-1200 进行通信的接线图... 7 3. 硬件需求... 7 3. 软件需求... 8 4.S7-1200 MODBUS RTU 的通信方式... 8 5.S7-1200 与 PAC3200 进行 MODBUS RTU 的通信组态... 11 5. 1 PLC 硬件组态... 11 5. 2 PAC3200 参数设置... 12 6.S71200 与 PAC3200 的 MODBUS RTU 通信原理与编程的实现... 13 6. 1 S7 1200 PLC 与 PAC3200 通过 MODBUS RTU 通信的基本原理... 13 6. 2 S7 1200 PLC 与 PAC3200 通过 MODBUS RTU 通信的编程... 16 附录 - 推荐网址... 26 IA&DT Service & Support Page 3-27
西门子 S7-1200 紧凑型 PLC 在当前的市场中有着广泛的应用, 作为经常与 SENTRON PAC3200 系列仪表共同使用的 PLC, 其 Modbus 通信协议的使用一直在市场上有着非常广泛的应用 本文将主要介绍如何使用 Modbus 通信协议来实现 S7-1200 与 SENTRON PAC3200 仪表的通信 1. 西门子 SENTRON PAC3200 仪表介绍 西门子的 SENTRON PAC3200 多功能电力仪表是一种用于面板安装的仪表, 可用来计量 显示配电系统多达 50 个测量变量, 例如电压 电流 功率 有功功率 频率以及最大值 最小值和平均值 中文大屏幕图形液晶显示使用户可远距离读表 PAC3200 仪表如下图所示 图 1: 仪表 PAC3200 1.1 SENTRON PAC3200 MODBUS RTU 通信扩展模块介绍 PAC3200 多功能仪表的本体没有 MODBUS RTU 通信的功能, 如果希望将 PAC3200 作为从站连接到 MODBUS RTU 网络与主站进行数据交换必须选用外部扩展通信模块 SENTRON PAC RS485 模块 ( 注意 : PAC RS485 扩展模块使用错误的固件版本时将不能工作 SENTRON PAC3200 电力监测设备的固件版本最低应为 FWV2.0X 较早的版本不支持 PAC RS485 扩展模块 ) 该扩展模块具有下列性能特点 : 可通过设备正面设置参数 即插即用 支持 4.8/9.6/19.2 以及 38.4 KBd 通信传输速率 通过 6 针螺钉端子接线 IA&DT Service & Support Page 4-27
不需要外接辅助电源 通过模块上的 LED 显示状态 PAC3200 MODBUS RTU 通信扩展模块如下图所示 (1) 通信接线端子 (2) 安装螺钉 (3) 通风口 (4) LED 图 2:PAC3200 MODBUS RTU 通信模块 1.2 SENTRON PAC3200 MODBUS RTU 通信扩展模块的接线 SENTRON PAC3200 MODBUS RTU 通信扩展模块的接线如下图所示 图 3:PAC3200 MODBUS RTU 通信模块的接线图 1. 将电缆连接到端子排上相应的螺栓端子 2. 将电缆屏蔽层的一端连接到保护性接地 PE 3. 将信号公共端连接到保护性接地 这样也使得扩展模块接地 4. 在第一个和最后一个通信节点上, 在正信号和负信号之间接入总线端接电阻器 为此,PAC RS485 扩展模块中集成了一个 120 Ohm 的总线端接电阻器 如果需要其它电阻值, 请使用外部总线端接电阻器 将它连接到第一个和最后一个通信节点 IA&DT Service & Support Page 5-27
1.3 SENTRON PAC3200 MODBUS RTU 通信的方式 1.SENTRON PAC3200 设备支持的功能码如下 : FC 功能码 数据类型 访问权限 02 输入的状态 位 输入 R 03 输出寄存器 寄存器 输出 R 04 输入寄存器 寄存器 输入 R 06 单一输出寄存器 寄存器 输出 RW 10 多个输出寄存器 寄存器 - RW 2B 设备识别 - - R R 可读 表 1: SENTRON PAC3200 设备支持的功能码 RW 可读写 2.SENTRON PAC3200 MODBUS RTU 与 S7-1200 进行通信 S7-1200 PLC 可以通过功能代码 0x03 和 0x04 访问仪表 PAC3200 的被测量数据 下表是一些 PAC3200 被测量的数据 表 2: SENTRON PAC3200 设备的一些被测量数据 IA&DT Service & Support Page 6-27
2. 西门子 SENTRON PAC3200 仪表与 S7-1200 进行通信的接线图 下图是 SENTRON PAC3200 仪表与 S7-1200 进行 MODBUS RTU 通信的接线图 图 4:S7-1200 与 PAC3200 进行 MODBUS RTU 进行通信的接线图 3. 硬件需求 S7-1200 PLC 目前有 3 种类型的 CPU: 1)S7-1211C CPU 2)S7-1212C CPU 3)S7-1214C CPU IA&DT Service & Support Page 7-27
这三种类型的 CPU 都可以使用 MODBUS 通信协议通过通信模块 CM1241 RS485 来实现 S7-1200 与 PAC3200 仪表的通信 本例中使用的 PLC 硬件为 : 1)PM1207 电源 ( 6EP1 332-1SH71 ) 2) S7-1214C ( 6ES7 214-1BE30-0XB0 ) 3) CM1241 RS485 ( 6ES7 241-1CH30-0XB0 ) 4) 模拟器 ( 6ES7 274-1XH30-0XA0 ) 本例中使用的 PAC3200 仪表硬件为 : 1) PAC3200 (7KM2112-0BA00-3AA0) 2) MODBUS RTU 模块 (7KM9300-0AB00-0AA0) 3) MODBUS 通信电缆 ( 6XV1830-0EH10) 3. 软件需求 1) 编程软件 Step7 Basic V10.5 ( 6ES7 822-0AA0-0YA0) 4.S7-1200 MODBUS RTU 的通信方式 S7-1200 作为 MODBUS RTU 主站的通信方式是由 DATA_ADDR 和 MODE 参数来选择 Modbus 功能类型的 DATA_ADDR( 从站中的起始 Modbus 地址 ): 指定要在 Modbus 从站中访问的数据的起始地址 MB_MASTER 使用 MODE 输入而非功能代码输入 MODE 和 Modbus 地址范围一起确定实际 Modbus 消息中使用的功能代码 IA&DT Service & Support Page 8-27
下表列出了 MB_MASTER 参数 MODE Modbus 功能代码和 Modbus 地址范围之间 的对应关系 IA&DT Service & Support Page 9-27
表 3: MB_MASTER 的 MODBUS 功能 IA&DT Service & Support Page 10-27
5.S7-1200 与 PAC3200 进行 MODBUS RTU 的通信组态 ` 我们通过一个实例来介绍如何在 Step7 Basic V10.5 中组态 S7-1214C 和 PAC3200 的 MODBUS RTU 通信 5. 1 PLC 硬件组态 首先在 Step7 Basic V10.5 中建立一个项目, 如图 1 所示 图 5: 新建 S7 1200 项目 在硬件配置中, 添加 CPU1214C 和通信模块 CM1241 RS485 模块, 如图 2 所示 图 6: S7 1200 硬件配置 IA&DT Service & Support Page 11-27
在 CPU 的属性中, 设置以太网的 IP 地址, 建立 PG 与 PLC 的连接, 如下图所示 图 7: S7 1200 IP 地址的设置 5. 2 PAC3200 参数设置在 SENTRON PAC 电力监测设备的主菜单中, 调用 设置 > RS485 模块, 出现下 面的设置画面 : 图 8: PAC3200 MODBUS RTU 通信参数的设置 1. 地址的设置范围 :1-247 本例中设为 8 2. 波特率的设置范围 :4800,9600,19200,38400 本例中设为 38400 3. 设置外部通信的数据位 奇偶校验位及停止位 : 8E1=8 个数据位, 奇偶校验位为 even, 1 个停止位 8O1=8 个数据位, 奇偶校验位为 odd, 1 个停止位 8N2=8 个数据位, 无奇偶校验位, 8N1=8 个数据位, 无奇偶校验位, 2 个停止位 1 个停止位 本例中根据 S7-1200 MODBUS MASTER 的参数设置为 8N1 4. 协议的设置 : 可选项为 :SEABUS,MODBUS RTU 本例中设为 MODBUS RTU 5. 响应时间的设置 : 注意与波特率的设置相匹配, 本例中设为 10mS IA&DT Service & Support Page 12-27
6.S71200 与 PAC3200 的 MODBUS RTU 通信原理与编程的实现 6. 1 S7 1200 PLC 与 PAC3200 通过 MODBUS RTU 通信的基本原理 S7 1200 提供了专用的 MODBUS 库进行 MODBUS 通信, 如下图所示 : 图 9: S7 1200 提供的专用 MODBUS 库 西门子 PLC S7-1200 的模块 CM1241 RS232 和 CM1241 RS485 都可以实现 MODBUS RTU 的通信, 本例中采用 CM1241 RS485 模块来实现与仪表 PAC3200 的 MODBUS RTU 的通信 S7-1200 的 MODBUS RTU 通信的基本原理是 : 首先 S7-1200 PLC 的程序调用一次 MODBUS 库中的功能块 MB_COMM_LOAD 来组态 CM1241 RS232 和 CM1241 RS485 模块上的端口, 对端口的参数进行配置 其次调用 MODBUS 库中的功能块 MB_MASTER 或者 MB_SLAVE 作为 MODBUS 主站或者从站与支持 MODBUS 协议的设备进行通信 IA&DT Service & Support Page 13-27
S7-1200 PLC 作为 MODUBUS 主站与 PAC3200 进行 MODBUS RTU 通信的控制原理 如下图所示 : 图 10:S7-1200 PLC 作为 MODUBUS 主站与 PAC3200 进行 MODBUS RTU 通信原理 IA&DT Service & Support Page 14-27
S7-1200 PLC 还可以作为 MODBUS 子站与作为 MODBUS 主站之间的 PLC 进行 MODBUS RTU 通信, 其控制原理如下图所示 : 图 11:S7-1200 PLC 作为 MODBUS 子站与作为 MODBUS 主站之间的 PLC 进 行 MODBUS RTU 的通信原理 每个 S7-1200 CPU 最多可带 3 个通信模块, 而每个 CM1241 RS485 通信模块理论上最 多支持 247 个 MODBUS 子站 但是在实际应用时需要考虑 CPU 的性能以及轮循 MODBUS 子站的时间 IA&DT Service & Support Page 15-27
6. 2 S7 1200 PLC 与 PAC3200 通过 MODBUS RTU 通信的编程 1.MODBUS RTU 通信接口参数的编程 MB_COMM_LOAD 功能块用于组态点对点 (PtP, Point-to-Point) CM 1241RS485 或 CM 1241 RS232 模块上的端口, 以进行 Modbus RTU 协议通信 程序开始运行时, 调用一次 MB_COMM_LOAD 功能块, 来实现对 MODBUS RTU 模块 的初始化组态 MB_COMM_LOAD 执行一次的编程方式采用如下图所示时钟位 M10.0 来完成 图 12:MB_COMM_LOAD 执行一次的编程时钟位的设置 IA&DT Service & Support Page 16-27
MB_COMM_LOAD 功能块的编程如下图所示 图 13:MB_COMM_LOAD 功能块的编程 PORT: 指的是通过哪个通信模块进行 MODBUS RTU 通信 BAUD: 指的是和 MODBUS 子站进行通信的速率 通信端口的波特率 取值范围为 300,600,1200,2400,4800,9600,19200, 38400,57600,76800,115200 注意 : 仪表 PAC3200 的波特率的设置范围 :4800,9600,19200,38400 因此上 S7-1200 的波特率的设置一定要和仪表 PAC3200 的波特率的设置相一致 MB_DB: 对 MB_MASTER 或 MB_SLAVE 指令所使用的背景数据块的引用 在用户程序中放置 MB_SLAVE 或 MB_MASTER 后,DB 标识符会出现在 MB_DB 功能框连接的助手下拉列表中 如 MB_MASTER_DB 或 MB_SLAVE_DB IA&DT Service & Support Page 17-27
STATUS: 端口状态代码 具体含义如下表所示 表 4: MB_COMM_LOAD 组态端口的状态代码 IA&DT Service & Support Page 18-27
2.MODBUS_MASTER 功能块的编程 MB_MASTER 功能块允许程序作为 Modbus 主站使用点对点 (PtP, Point-to-Point) CM 1241 RS485 或 CM 1241RS232 模块上的端口进行通信 可访问一个或多个 Modbus 从站设 备中的数据 MB_MASTER 功能块的编程如下图所示 图 14:MB_MASTER 功能块的编程 REQ: 数据发送请求信号 0- 无请求 1- 请求将数据传送到 MODBUS 从站 MB_ADR: 通信对象 MODBUS 从站的地址 有效地址范围为 0-247 值 0 被保留用于将消息广播到所有 Modbus 从站 只有 Modbus 功能代码 05 06 15 和 16 是可用于广播的功能代码 注意 : 此处 MODBUS 从站的地址一定要与仪表 PAC3200 的 MODBUS 地址相一致 IA&DT Service & Support Page 19-27
MODE: 模式选择 选择范围为 : 读 写 诊断 DATA_ADDR: 从站中的起始地址 : 指定要在 Modbus 从站中访问的数据的起始地址 特别注意的是 : 由于仪表 PAC3200 的寄存器与 S7-1200 MODBUS RTU 寄存器的不一致性, 读取仪表 PAC3200 的 DATA_ADDR 的地址必须从 40002 开始 注意 : S7-1200 的 MODBUS RTU 通信功能是通过使用 DATA_ADDR 和 MODE 的组合 来选择 MODBUS 功能码, 如下表所示 表 5: S7-1200 的 MODBUS RTU 通信功能码 而仪表 PAC3200 MODBUS RTU 通信功能则是通过功能码来实现的, 如下表所示 FC 功能码 数据类型 访问权限 02 输入的状态 位 输入 R 03 输出寄存器 寄存器 输出 R 04 输入寄存器 寄存器 输入 R 06 单一输出寄存器 寄存器 输出 RW 10 多个输出寄存器 寄存器 - RW 2B 设备识别 - - R 表 6: 仪表 PAC3200 MODBUS RTU 通信功能码 IA&DT Service & Support Page 20-27
因此从上述可以得出如果需要读取输出寄存器的值时, 需要使用模式 0 的 03H 功能, 即从寄存器 40001 到 49999 来读取仪表的数据, 但是由于仪表 PAC3200 的寄存器与 S7-1200 MODBUS RTU 寄存器的不一致性, 读取仪表 PAC3200 的 DATA_ADDR 的地址必须从 40002 开始 DATA_LEN: 请求访问数据的长度 位数或字节数 DATA_PTR: 数据指针 : 指向要写入或读取的数据的 CPU DB 地址 该 DB 必须为 非仅符号访问 DB 类型 NDR: 新数据就绪 : 0 事务未完成 1 表示 MB_MASTER 指令已完成所请求的有关 Modbus 从站的事务 BUSY: 忙 : 0 无正在进行的 MB_MASTER 事务 1 MB_MASTER 事务正在进行 ERROR: 错误 : 0 - 未检测到错误 1 表示检测到错误并且参数 STATUS 提供的错误代码有效 STATUS: 状态代码, 如下表所示 IA&DT Service & Support Page 21-27
表 7: MB_MASTER 进行 MODBUS RTU 通信的状态代码 IA&DT Service & Support Page 22-27
在成功地编译下载到在 S7-1200 PLC 中后, 可以从变量表中看到仪表 PAC3200 的三相 相电压数据, 如下图所示 图 15: 在 S7-1200 中通过 MODBUS RTU 通信得到的仪表 PAC3200 的三相相电压数据 Modbus 主站通信规则 : 必须先执行 MB_COMM_LOAD 组态端口, 然后 MB_MASTER 指令才能与该端口通信 如果要将某个端口用于初始化 Modbus 主站的请求, 则 MB_SLAVE 将不能使用该端口 MB_MASTER 执行的一个或多个实例可使用该端口 Modbus 指令不使用通信中断事件来控制通信过程 用户程序必须轮询 MB_MASTER 指令以了解传送和接收的完成情况 如果用户程序操作 Modbus 主站并使用 MB_MASTER 向从站发送请求, 则用户必须继续轮询 ( 执行 MB_MASTER) 直到返回从站的响应 请从同一个 OB( 或 OB 优先等级 ) 调用指定端口的所有 MB_MASTER 执行 IA&DT Service & Support Page 23-27
3.MODBUS_SLAVE 功能块的编程由于 S7-1200 与 PAC3200 进行 MODBUS RTU 通信, 没有使用 MODBUS_SLAVE 功能块, 因此在此只作简单介绍 MB_SLAVE 指令允许程序作为 Modbus 从站使用点对点 (PtP, Point-to-Point) CM 1241RS485 或 CM 1241 RS232 模块上的端口进行通信 Modbus RTU 主站可以发出请求, 然后程序通过执行 MB_SLAVE 来响应 在程序中放置 MB_SLAVE 指令时, 必须分配唯一的背景数据块 指定 MB_COMM_LOAD 指令中的 MB_DB 参数时会用到该 MB_SLAVE 背景数据块名称 Modbus 通信功能代码 (1 2 4 5 和 15) 可以在 PLC 输入过程映像及输出过程映像中直接读写位和字 图 16:MB_SLAVE 功能块 MB_ADDR:Modbus RTU 地址 (1 到 247):Modbus 从站的站地址 MB_HOLD_REG: 指向 Modbus 保持寄存器 DB 的指针 保持寄存器 DB 必须为典型的全局 DB 注意 : 在创建此数据块时, 请不要选择 Symbolic address only 仅通过符号地址访问 使用 MB_SLAVE 指令时, NDR: 新数据就绪 : 0 无新数据 1 表示 Modbus 主站已写入新数据 DR: 数据读取 : 0 无数据读取 1 表示 Modbus 主站已读取数据 ERROR: 错误 : 0 - 未检测到错误 1 表示检测到错误并且参数 STATUS 提供的错误代码有效 IA&DT Service & Support Page 24-27
STATUS: 错误代码 如下表所示 表 8: MB_SLAVE 进行 MODBUS RTU 通信的状态代码 IA&DT Service & Support Page 25-27
附录 - 推荐网址 自动化系统西门子 ( 中国 ) 有限公司工业自动化与驱动技术集团客户服务与支持中心网站首页 :www.4008104288.com.cn 自动化系统下载中心 : http://www.ad.siemens.com.cn/download/doclist.aspx?typeid=0&catfirst=1 自动化系统全球技术资源 : http://support.automation.siemens.com/cn/view/zh/10805045/130000 找答案 自动化系统版区 : http://www.ad.siemens.com.cn/service/answer/category.asp?cid=1027 驱动技术西门子 ( 中国 ) 有限公司工业自动化与驱动技术集团客户服务与支持中心网站首页 :www.4008104288.com.cn 驱动技术下载中心 : http://www.ad.siemens.com.cn/download/doclist.aspx?typeid=0&catfirst=85 驱动技术全球技术资源 : http://support.automation.siemens.com/cn/view/zh/10803928/130000 找答案 驱动技术版区 : http://www.ad.siemens.com.cn/service/answer/category.asp?cid=1038 IA&DT Service & Support Page 26-27
注意事项 应用示例与所示电路 设备及任何可能结果没有必然联系, 并不完全相关 应用示例不表示客户的具体解决方案 它们仅对典型应用提供支持 用户负责确保所述产品的正确使用 这些应用示例不能免除用户在确保安全 专业使用 安装 操作和维护设备方面的责任 当使用这些应用示例时, 应意识到西门子不对在所述责任条款范围之外的任何损坏 / 索赔承担责任 我们保留随时修改这些应用示例的权利, 恕不另行通知 如果这些应用示例与其它西门子出版物 ( 例如, 目录 ) 给出的建议不同, 则以其它文档的内容为准 声明 我们已核对过本手册的内容与所描述的硬件和软件相符 由于差错难以完全避免, 我们不能保证完全一致 我们会经常对手册中的数据进行检查, 并在后续的版本中进行必要的更正 欢迎您提出宝贵意见 版权 西门子 ( 中国 ) 有限公司 2001-2008 版权保留 复制 传播或者使用该文件或文件内容必须经过权利人书面明确同意 侵权者将承担权利人的全部损失 权利人保留一切权利, 包括复制 发行, 以及改编 汇编的权利 西门子 ( 中国 ) 有限公司 IA&DT Service & Support Page 27-27