6ES7953-8LF31-0AA0
SIMATIC S7,微型存储卡 用于 S7-300/C7/ET 200, 3,3V Nflash,64
1.1 SENTRON PAC3200 MODBUS RTU通信扩展模块介绍
PAC3200多功能仪表的本体没有MODBUS RTU通信的功能,如果希望将PAC3200作为从站连接到MODBUS RTU网络与主站进行数据交换必须选用外部扩展通信模块――SENTRON PAC RS485模块。(注意: PAC RS485 扩展模块使用错误的固件版本时将不能工作
PAC3200 MODBUS RTU通信扩展模块如下图所示。
(1) 通信接线端子
(2) 安装螺钉
(3) 通风口
(4) LED
1.2 SENTRON PAC3200 MODBUS RTU通信扩展模块的接线
SENTRON PAC3200 MODBUS RTU通信扩展模块的接线如下图所示
1. 将电缆连接到端子排上相应的螺栓端子。
1.3 SENTRON PAC3200 MODBUS RTU通信的方式
1.SENTRON PAC3200设备支持的功能码如下:
表1: SENTRON PAC3200设备支持的功能码
R—可读
2.SENTRON PAC3200 MODBUS RTU 与S7-1200进行通信
下图是SENTRON PAC3200仪表与S7-1200进行MODBUS RTU 通信的接线图。
本例中使用的PLC硬件为:
本例中使用的PAC3200仪表硬件为:
3.软件需求
1) 编程软件 Step7 Basic V10.5 ( 6ES7 822-0AA0-0YA0)
下表列出了 MB_MASTER 参数 MODE、Modbus 功能代码和 Modbus 地址范围之间的对应关系。
5.S7-1200 与PAC3200 进行MODBUS RTU的通信组态
我们通过一个实例来介绍如何在Step7 Basic V10.5 中组态S7-1214C 和PAC3200的MODBUS RTU通信。
5. 1 PLC 硬件组态
首先在Step7 Basic V10.5中建立一个项目,如图1所示。
在硬件配置中,添加CPU1214C和通信模块CM1241 RS485模块,如图2所示。
在CPU的属性中,设置以太网的IP地址,建立PG与PLC的连接,如下图所示。
5. 2 PAC3200参数设置
1. 地址的设置范围:1-247。本例中设为8。
6.S71200 与PAC3200的MODBUS RTU通信原理与编程的实现
6. 1 S7 1200 PLC与PAC3200 通过MODBUS RTU 通信的基本原理
S7 1200提供了**的MODBUS库进行MODBUS通信,如下图所示:
西门子PLC S7-1200的模块CM1241 RS232和CM1241 RS485都可以实现MODBUS RTU的通信,本例中采用CM1241 RS485模块来实现与仪表PAC3200的MODBUS RTU 的通信。
S7-1200 PLC作为MODUBUS 主站 与PAC3200 进行MODBUS RTU 通信的控制原理如下图所示:
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功能块的编程如下图所示。
PORT:指的是通过哪个通信模块进行MODBUS RTU通信。
STATUS:端口状态代码。具体含义如下表所示。
2.MODBUS_MASTER功能块的编程
MB_MASTER 功能块允许程序作为Modbus 主站使用点对点 (PtP, Point-to-Point) CM 1241 RS485 或 CM 1241RS232 模块上的端口进行通信。 可访问一个或多个 Modbus 从站设备中的数据。
MB_MASTER功能块的编程如下图所示。
REQ:数据发送请求信号。0-无请求。1-请求将数据传送到MODBUS从站。
MODE:模式选择。选择范围为:读、写、诊断。
注意: S7-1200的MODBUS RTU通信功能是通过使用“DATA_ADDR”和“MODE”的组合
而仪表PAC3200 MODBUS RTU通信功能则是通过功能码来实现的,如下表所示。
表6: 仪表PAC3200 MODBUS RTU通信功能码
因此从上述可以得出如果需要读取输出寄存器的值时,需要使用模式0的03H功能,即
DATA_LEN:请求访问数据的长度。位数或字节数。
在成功地编译下载到在S7-1200 PLC中后,可以从变量表中看到仪表PAC3200的三相相电压数据,如下图所示。
Modbus 主站通信规则:
3.MODBUS_SLAVE功能块的编程
SENTRON PAC3200 电力监测设备的固件版本较低应为FWV2.0X。 较早的版本不支持
PAC RS485 扩展模块。)该扩展模块具有下列性能特点:
? 可通过设备正面设置参数
? 即插即用
? 支持 4.8/9.6/19.2 以及 38.4 KBd 通信传输速率
? 通过6针螺钉端子接线
? 不需要外接辅助电源
? 通过模块上的 LED 显示状态
图2:PAC3200 MODBUS RTU 通信模块
图3:PAC3200 MODBUS RTU 通信模块的接线图
2. 将电缆屏蔽层的一端连接到保护性接地PE。
3. 将信号公共端连接到保护性接地。 这样也使得扩展模块接地。
4. 在**个和最后一个通信节点上,在正信号和负信号之间接入总线端接电阻器。 为
此,PAC RS485 扩展模块中集成了一个120 Ohm 的总线端接电阻器。 如果需要其它
电阻值,请使用外部总线端接电阻器。 将它连接到**个和最后一个通信节点。
FC
功能码
数据类型
访问权限
02
输入的状态
位
输入
R
03
输出寄存器
寄存器
输出
R
04
输入寄存器
寄存器
输入
R
06
单一输出寄存器
寄存器
输出
RW
10
多个输出寄存器
寄存器
-
RW
2B
设备识别
-
-
R
RW—可读写
S7-1200 PLC可以通过功能代码0x03 和0x04 访问仪表PAC3200的被测量数据。
下表是一些PAC3200 被测量的数据。
表2: SENTRON PAC3200设备的一些被测量数据
2.西门子SENTRON PAC3200 仪表与S7-1200进行通信的接线图
图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仪表的通信。
1)PM1207电源 ( 6EP1 332-1SH71 )
2) S7-1214C ( 6ES7 214 -1BE30 -0XB0 )
3) CM1241 RS485 ( 6ES7 241 -1CH30 -0XB0 )
4) 模拟器 ( 6ES7 274 -1XH30 -0XA0 )
1) PAC3200 (7KM2112-0BA00-3AA0)
2) MODBUS RTU 模块 (7KM9300-0AB00-0AA0)
3) MODBUS 通信电缆 ( 6XV1830-0EH10)
4.S7-1200 MODBUS RTU的通信方式
S7-1200作为MODBUS RTU主站的通信方式是由DATA_ADDR 和 MODE 参数来选择 Modbus 功能类型的。
DATA_ADDR(从站中的起始 Modbus 地址): *要在 Modbus 从站中访问的数据的起始地址。MB_MASTER 使用 MODE 输入而非功能代码输入。 MODE 和 Modbus 地址范围一起确定实际 Modbus 消息中使用的功能代码。
6ES7953-8LF31-0AA0
表3: MB_MASTER的MODBUS 功能
图5: 新建S7 1200项目
图6: S7 1200硬件配置
图7: S7 1200 IP地址的设置
在SENTRON PAC 电力监测设备的主菜单中,调用“设置”>“RS485 模块”,出现下面的设置画面:
图8: PAC3200 MODBUS RTU 通信参数的设置
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。
图9: S7 1200提供的**MODBUS库
S7-1200的MODBUS RTU通信的基本原理是:
首先S7-1200 PLC的程序调用一次MODBUS 库中的功能块MB_COMM_LOAD来组态CM1241 RS232和CM1241 RS485模块上的端口,对端口的参数进行配置。
其次调用MODBUS 库中的功能块MB_MASTER或者MB_SLAVE作为MODBUS 主站或者从站与支持MODBUS协议的设备进行通信。
图10:S7-1200 PLC作为MODUBUS 主站 与PAC3200 进行MODBUS RTU 通信原理
图11:S7-1200 PLC作为MODBUS子站与作为MODBUS主站之间的PLC进行MODBUS RTU的通信原理
的初始化组态。
MB_COMM_LOAD执行一次的编程方式采用如下图所示时钟位M10.0来完成。
图12:MB_COMM_LOAD执行一次的编程时钟位的设置
图13:MB_COMM_LOAD功能块的编程
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”。
表4: MB_COMM_LOAD组态端口的状态代码
图14:MB_MASTER功能块的编程
MB_ADR:通信对象MODBUS从站的地址。有效地址范围为0-247。值 0 被保留用于将消息广播到所有 Modbus 从站。 只有Modbus 功能代码 05、06、15 和 16 是可用于广播的功能代码。
注意:此处MODBUS从站的地址一定要与仪表PAC3200 的MODBUS 地址相一致。
DATA_ADDR:从站中的起始地址: *要在 Modbus 从站中访问的数据的起始地址。
来选择MODBUS功能码,如下表所示。
表5: S7-1200的MODBUS RTU通信功能码
FC
功能码
数据类型
访问权限
02
输入的状态
位
输入
R
03
输出寄存器
寄存器
输出
R
04
输入寄存器
寄存器
输入
R
06
单一输出寄存器
寄存器
输出
RW
10
多个输出寄存器
寄存器
-
RW
2B
设备识别
-
-
R
从寄存器40001到49999来读取仪表的数据,但是由于仪表PAC3200的寄存器与S7-1200
MODBUS RTU寄存器的不一致性,读取仪表PAC3200的DATA_ADDR的地址必须从40002开
始。
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通信的状态代码
图15:在S7-1200中通过MODBUS RTU通信得到的仪表PAC3200的三相相电压数据
● 必须先执行 MB_COMM_LOAD 组态端口,然后 MB_MASTER 指令才能与该端口通
信。
● 如果要将某个端口用于初始化 Modbus 主站的请求,则 MB_SLAVE 将不能使用该端
口。MB_MASTER 执行的一个或多个实例可使用该端口。
● Modbus 指令不使用通信中断事件来控制通信过程。 用户程序必须轮询
MB_MASTER 指令以了解传送和接收的完成情况。
● 如果用户程序操作 Modbus 主站并使用 MB_MASTER 向从站发送请求,则用户必须
继续轮询(执行 MB_MASTER)直到返回从站的响应。
● 请从同一个 OB(或 OB **等级)调用*端口的所有 MB_MASTER 执行。
由于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 功能块
西门子MM变频器
6SE64402UC112AA1
6SE64402UC125AA1
6SE64402UC137AA1
6SE64402UC155AA1
6SE64402UC175AA1
6SE64402UC211BA1
6SE64402UC215BA1
6SE64402UC222BA1
6SE64402UC230CA1
6SE64402UC240CA1
6SE64402UC255CA1
6SE64402UC275DA1
6SE64402UC311DA1
6SE64402UC315DA1
6SE64402UC318EA1
6SE64402UC322EA1
6SE64402UC330FA1
6SE64402UC337FA1
6SE64402UC345FA1
6SE64402UD137AA1
6SE64402UD155AA1
6SE64402UD175AA1
6SE64402UD211AA1
6SE64402UD215AA1
6SE64402UD222BA1
6SE64402UD230BA1
6SE64402UD240BA1
6SE64402UD255CA1
6SE64402UD275CA1
6SE64402UD311CA1
6SE64402UD315DA1
6SE64402UD315DB1
6SE64402UD318DA1
6SE64402UD318DB1
6SE64402UD322DA1
6SE64402UD322DB1
6SE64402UD330EA1
6SE64402UD330EB1
6SE64402UD337EA1
6SE64402UD337EB1
6SE64402UD345FA1
6SE64402UD345FB1
6SE64402UD355FA1
6SE64402UD355FB1
6SE64402UD375FA1
6SE64402UD375FB1
6SE64402UD388FA1
6SE64402UD388FB1
6SE64402UD411FA1
6SE64402UD411FB1
6SE64402UD413GA1
6SE64402UD413GB1
6SE64402UD416GA1
6ES7953-8LF31-0AA0