S7-1500系统内使用ET200S 1SI模块实现Modbus 从站通信

1.硬件列表

2.组态和配置

3.编写通信程序

4.设备连接

5.通信测试

6.常见问题

1 硬件列表


表1 实验所需硬件列表

设备名称

设备型号

CPU 1518-4PN/DP

6ES7 518-4AP00-0AB0

S7-1500 存储卡

6ES7 954-8LF03-0AA0

ET200S 接口模块

6ES7 151-3AA23-0AB0

ET200S PM-E电源模块

6ES7 138-4CA01-0AA0

ET200S 1SI串口模块

6ES7 138-4DF11-0AB0

功率模块的终端模块 6ES7 193-4CC20-0AA0
1 SI模块的终端模块 6ES7 193-4CA40-0AA0

2 组态和配置

1、打开软件TIA PORTAL STEP7 V16,点击项目->新建...创建一新项目,项目名称为S7-1500_ET200S_ModbusSlave。


图1 新建项目

2、用鼠标点击“添加新设备”,选择SIMATIC S7-1500->CPU->CPU 1518-4 PN/DP->6ES7 518-4AP00-0AB0。


图2 添加站点CPU 1518-4PN/DP

3、双击“设备组态”进入设备视图。双击以太网接口,进入以太网接口属性界面,新建一个子网“PN/IE_1”,并分配IP地址。


图3 组态硬件

4、点击菜单栏"在线"->"硬件检测"->"网络中的PROFINET设备",在线检测所连接的ET200S站点,如图4所示。


图4 在线检测ET200S站

在弹出的"PROFINET 设备的硬件检测"窗口内勾选搜索到的ET200S站点,并点击添加设备。


图5 添加ET200S站

5、设备添加成功后,在"网络视图"内,可以看到新添加的ET200S站。另外,用户也可以从选件目录中找到正确的ET200S接口模块型号,将它拖拽到网络视图中,添加模块时需要注意组态的模块版本应与实际一致。


图6 添加ET200S站法二

6、点击ET200S站左侧“未分配”,选择IO控制器“PLC_1.PROFINET接口_1”,为ET200S分配好IO控制器。


图7 Profinet网络配置

同时为ET200S的以太网接口分配好IP地址,注:此时给ET200S分配了一个设备名称为"im151-3pn"(该名称不唯一,以实际项目为准),确保离线和在线的设备名称一致。

下面介绍如何修改设备名称。 如需离线修改该设备名称,可以进入ET200S模块的属性-〉以太网地址。


图8 离线修改ET200S的设备名称

下面介绍如何在线分配IO设备名称。如ET200S的实际设备名称与组态设置的不一致,可以在线修改。右击网络“PN/IE_1”,点击“分配设备名称”,在线修改ET200S的设备名称。


图9 分配设备名称

确保ET200S的设备名称的状态是“确定”,如果出现不一致的情况,选择问题站点后点击“分配名称”,确保该站点最后的状态是“确定”,如下图所示。


图10 确认ET200S设备名称在线与离线一致

7、双击“im151-3pn”,进入ET200S组态界面,(自动检测已经将电源模块PM-E和ET200S 1SI串口模块组态到1、2槽;手动组态时需要用户手动从选件目录中拖拽添加),双击1SI_1串口通信模块,进入属性框,协议选择"Modbus Slave",波特率为9600,地址区为32字节。


图11 1SI_1选择协议

8、点击“报文”,进行报文设置,从站地址:2,停止位:1,奇偶校验:无。


图12 报文设置

9、点击“接口”,接口选择“半双工(RS-485两线制模式)”,接收线路初始状态选择“信号R(A)0V/信号R(B)5V”。


图13 接口设置

3 编写通信程序

1、双击"添加新块",创建数据块DB10,如下图所示,按照图中所示,设置各个变量的启动值。注:有关每个变量的含义,可以参考手册"SIMATIC ET200S 串行接口模块"的3.6.3章节和3.6.18章节。

举例说明:F01_MOD_STRT_ADR_1表示设置功能码01、05、15的Modbus起始地址,本例中设置为16#0,即表示00001;F01_MOD_END_ADR_1表示设置功能码01、05、15的Modbus终止地址,本例中设置16#ff,即表示为00256;F01_CNV_TO_FLAG_A表示设置PLC的M地址的起始地址,本例设置为16#0,即表示M0.0,说明M0.0与00001是对应关系,往下依次类推。

举例说明:FC03_06_16_DB_NO表示设置与功能码03、06、16的Modbus地址对应的DB 块,本例中设置16#B,即表示DB11,说明DB11.DBW0与40001是对应关系,往下依次类推。


图14 新建发送数据块

创建2个数据块,如下图所示,DB11(命名FC030616)、DB12(命名FC04),这2个数据块都创建1个数据类型Array的变量,数组元素的数据类型为Word,数量为201。注:DB11的数据变量用于功能码03、06、16;DB12的数据变量用于功能码04。用于下面的测试。


图15 新建FC030616功能码数据块

1.注意以上两个DB块,右键其属性对话框,一定要确保"优化的块访问"参数未勾选。

2、进入主程序OB1,从通信->通信处理器->ET200S串行接口,调用发送功能块S_MODB。


图16 调用功能块

关于功能块S_MODB的管脚说明,请见表2。


表2 功能块S_MODB 参数表

管脚

解释描述

LADDR

模块的硬件标识符,本例中为264,具体查找方法见常见问题1。

START_TIMER

超时初始化定时器,本例中为T0

START_TIME

超时初始化时间值,本例中为S5t#5s

DB_NO

地址映射DB块,本例中为DB10

OB_MASK

外设访问错误屏蔽位,本例中为M0.0

CP_START

FB初始化始能位,该位需要置1。本例中为M0.1

CP_START_FM

CP_START初始化的上升沿位,本例中为M0.2

CP_START_NDR

从CP写操作位,本例中为M0.3

CP_START_OK

初始化成功标志,本例中为M0.4

CP_START_ERROR

初始化失败标志,本例中为M0.5

ERROR_NR

错误号,本例中为MW2

ERROR

错误位,为TRUE说明有错误。

ERROR_INFO

错误信息,本例中为MW4,可以查看“Simatic ET200S串行接口模块”手册,第3章节

4 设备连接

以RS485的方式接线为例说明,ET200S 1SI 模块按照RS485的接线方式连接到电脑的USB口,连接示意图如下。


图17 硬件结构和接线示意图

5 通信测试

前面使用 TIA Step7 软件已经将通信ET200S的通信工作做完,下面进行通信测试。这里使用串口通讯测试软件ModSim32软件来测试ET200S和计算机的通信,步骤如下:

1、首先将硬件配置和程序下载到CPU1518-4PN/DP中。将项目程序在线,本示例中手动将M0.1(即:CP_START)置1,M0.2(即:CP_START_FM)和M0.4(即:CP_START_OK)也会为1。


图18 CP_START管脚置1情况

2、在计算机上打开MODBUS主站仿真软件Modscan32。


图19 打开Modscan32

3、点击Modscan32上的Connection->Connect,显示画面如下,选择计算机和ET200S相连的COM口COM1(与实际所使用的COM口一致),设好波特率,数据位,停止位,校验方式,注:这些设置要与1SI_1的设置一致,如下图。


图20 设置连接端口

4、设置完成,点击OK,显示画面如下。


图21 ET200S的03功能码发送数据

5、Modscan32软件界面03的地址40001~40005分别设置为1~5,打开监控表,监控功能码030616对应的数据块DB11,创建前5个字,查看所接收的数据(此处既可以接收Modscan32的数据,也可以修改Modscan32的数据)。


图22 功能码030616数据测试结果

6、打开监控表,监控功能码04对应的数据块DB12,创建前5个字,修改数据分别为11~15,Modscan32软件界面04的地址30001~30005分别显示11~55的数据(此处收功能码04的限制只能写入数据到Modscan32)。


图23 功能码04数据测试结果

常见问题

1.为什么功能块报错"16#1E0E"?

可能的原因是:功能块的“LADDR”管脚设置错误,正确的应该设置该模块的硬件标识符,而不是模块的I/O起始地址,具体查找步骤参考下表。


表3 模块硬件标识符查找方法
方法一
方法二