ET200S作从站的Modbus RTU通讯(STEP7)

1. 硬件列表

2. 组态和配置

   1) 新建项目

   2) 创建CPU300站点

   3) 组态ET200S

   4) 设置协议Modbus Slave

3. 编写通信程序

   1) 逻辑地址的填写

   2) 调用通信功能块

   3) 创建通信数据块DB块

4. 设备连接

5. 通信测试

   1) 设置调试软件Modscan32

   2) ET200S与调试软件测试通信数据

1 硬件列表

设备名称

设备型号

PS 307

6ES7 307-1EA01-0AA0

CPU 317-2PN/DP

6ES7 317-2EK14-0AB0

MMC

6ES7 953-8LG30-0AA0

ET200S接口模块

6ES7 151-3BA60-0AB0

PM-E电源模块

6ES7 138-4CA80-0AB0

ET200S 1SI串口模块

6ES7 138-4DF11-0AB0

2 组态和配置

1、打开STEP7,点击File->New...创建一新项目,项目名称为 ET200S_modbusS。

图1 新建项目

2、用鼠标右键点击项目名称,选择Insert New Object->SIMATIC 300 Station,双击“Hardware”进入硬件组态,添加CPU317-2PN/DP,新建以太网络,设置IP地址。

图2 添加站点CPU 315-2PN/DP

3、添加ET200S站点,插入 PM-E的电源模块和ET200 1SI Modbus Slave(32B)模块。

图3 网络配置ET200S站

4、双击“IM151”站点,分配从站的IP地址和设置离线设备名称。

图4 ET200S站点分配IP地址和设备名称

5、双击 1SI的模块,点击“地址”栏,输入和输出的起始地址为256,这在通讯编程中需要用到。

图5 模块IO地址

6、点击“参数”栏,选择接口“半双工(RS-485两线制模式)”;接收线路初始状态选择“信号R(A)0V/信号R(B)5V”;进行报文设置:波特率9600,停止位:1,奇偶校验:even,从站地址:2。

图6 参数设置

7、硬件组态中编译保存,下载硬组态,然后给ET200S分配设备名称,选中“”或者ET200S站点图标,然后选择菜单PLC中,点击“Ethernet->Assign Device Name”,弹出设置ET200S的IO设备的命名对话框,通过“Assign name”按钮,给其命名为IM151-3PN。

图7 在线分配设备名称及分配结果

8、可以点中“”或者ET200S站点图标,然后选择菜单PLC中,点击“Ethernet->Verify Device Name”来查看组态的设备名称是否正确,绿色的√表示正确。

图8 确认设备名称

3 编写通信程序

1、双击“添加新块”,创建数据块DB100,如下图所示,按照图中所示,设置各个变量的启动值。注:有关每个变量的含义,可以参考手册“SIMATIC ET200S 串行接口模块”的3.6.3章节和3.6.18章节,该DB也可以从样例项目程序中拷贝

举例说明: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是对应关系,往下依次类推。

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

图9 新建3个数据块

2、从样例项目中将S_SEND(FB3)、接收功能块S_RCV(FB2) 和S_MODB(FB81)拷贝到测试项目中。

图10 拷贝通讯块

3、进入主程序OB1,调用能块S_MODB。

图11 MODBUS Slave功能块

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

LADDR

硬件组态中的起始逻辑地址,本例中为256,见图5

START_TIMER

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

START_TIME

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

DB_NO

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

OB_MASK

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

CP_START

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

CP_START_FM

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

CP_START_NDR

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

CP_START_OK

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

CP_START_ERROR

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

ERROR_NR

错误号,本例中为MW202

ERROR_INFO

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

4.将程序保存,然后下载到CPU。

4 设备连接

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

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

5 通信测试

1、将项目程序在线,本示例中手动将M200.1(即:CP_START)置1,M200.2(即:CP_START_FM)和M200.4(即:CP_START_OK)也会为1。

图13 CP_START管脚置1情况

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

图14 打开Modscan32软件

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

图15 Modscan32通信参数设置

4、点击OK按钮,然后选择菜单Setup->Slave Definition...设定通讯数据,因为ET200S 使用的是功能码3,所以选择03 Holding Register,Slave ID设为2(与ET200S 设置的从站地址为2一致),起始地址从1开始。

图16 从站功能码设置

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

图17 Modscan32操作界面

5、数据显示区的10个地址的数据对应CPU中DB11和DB12的前5个字的数值,如下图,给这5个字赋值。

图18 DB11和DB12数据赋值监控

6、Modscan32软件界面FC03的地址40001-40005分别显示W#16#1~5的数据,FC04的地址30001-30005分别显示W#16#11~15的数据。

图19 Modscan32软件FC03功能码通信

图20 Modscan32软件FC04功能码通信