西门子6XV1830-0EH10电缆供应
西门子6XV1830-0EH10电缆供应
产品价格:¥电议(人民币)
  • 规格:6XV1830-0EH10
  • 发货地:上海
  • 品牌:
  • 最小起订量:1件
  • 诚信商家
    会员级别:钻石会员
    认证类型:企业认证
    企业证件:通过认证

    商铺名称:上海斌勤电气技术有限公司

    联系人:康奎(先生)

    联系手机:

    固定电话:

    企业邮箱:192061030@qq.com

    联系地址:上海市松江区三新北路1800弄(松江电子商务园区)

    邮编:201501

    联系我时,请说是在线缆网上看到的,谢谢!

    商品详情

      西门子6XV1830-0EH10电缆供应

      如何通过Modbus RTU协议实现S7-1200 与PAC3200的通信

      推荐文档: 西门子工程师推荐本文档!

      西门子S7-1200 紧凑型PLC在当前的市场中有着广泛的应用,作为经常与SENTRON PAC3200系列仪表共同使用的PLC,其Modbus通信协议的使用一直在市场上有着非常广泛的应用。本文将主要介绍如何使用Modbus 通信协议来实现S7-1200与SENTRON PAC3200仪表的通信。

      希殿电气技术(上海)有限公司(西门子合作伙伴)
      联系人 :康经理(销售工程师)
      Q Q :192061030
      手机 :18621061383(微信)
      电话 :021-60541249
      公司传真 :021-57271268
      邮箱 :192061030@qq.com


      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针螺钉端子接线
              ? 不需要外接辅助电源
              ? 通过模块上的 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 的总线端接电阻器。 如果需要其它
      电阻值,请使用外部总线端接电阻器。 将它连接到第一个和最后一个通信节点。

      1.3 SENTRON PAC3200 MODBUS RTU通信的方式

      1.SENTRON PAC3200设备支持的功能码如下:
       

      FC 功能码 数据类型 访问权限
      02 输入的状态 输入 R
      03 输出寄存器 寄存器 输出 R
      04 输入寄存器  寄存器 输入 R
      06 单一输出寄存器 寄存器 输出 RW
      10 多个输出寄存器  寄存器 RW
      2B 设备识别 R

      表1: SENTRON PAC3200设备支持的功能码

      R—可读
      RW—可读写

      2.SENTRON PAC3200 MODBUS RTU 与S7-1200进行通信
      S7-1200 PLC可以通过功能代码0x03 和0x04 访问仪表PAC3200的被测量数据。
      下表是一些PAC3200 被测量的数据。


      表2: SENTRON PAC3200设备的一些被测量数据


      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。
      这三种类型的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 消息中使用的功能代码。

      下表列出了 MB_MASTER 参数 MODE、Modbus 功能代码和 Modbus 地址范围之间的对应关系。



      表3: MB_MASTER的MODBUS 功能

      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硬件配置

      在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 个数据位,无奇偶校验位, 2 个停止位
              ? 8N1=8 个数据位,无奇偶校验位, 1 个停止位
              本例中根据S7-1200 MODBUS MASTER 的参数设置为 8N1。
      4. 协议的设置:可选项为:SEABUS,MODBUS RTU。
      本例中设为MODBUS RTU。
      5.响应时间的设置:注意与波特率的设置相匹配,本例中设为10mS。

       

      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协议的设备进行通信。

      S7-1200 PLC作为MODUBUS 主站 与PAC3200 进行MODBUS RTU 通信的控制原理如下图所示:


      图10:S7-1200 PLC作为MODUBUS 主站 与PAC3200 进行MODBUS RTU 通信原理

       

      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子站的时间。

      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执行一次的编程时钟位的设置

      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”。

      STATUS:端口状态代码。具体含义如下表所示。


      表4: MB_COMM_LOAD组态端口的状态代码

      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 地址相一致。

      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通信功能码

      因此从上述可以得出如果需要读取输出寄存器的值时,需要使用模式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:状态代码,如下表所示。

       


      表7: MB_MASTER 进行MODBUS RTU通信的状态代码

      在成功地编译下载到在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 执行。

      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 提供的错误代码有效。
      STATUS:错误代码。如下表所示。


      表8: MB_SLAVE 进行MODBUS RTU通信的状态代码

    在线询盘/留言
  • 0571-87774297