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

1. 硬件列表

2. 组态和配置

   1) 新建项目

   2) 创建CPU300站点

   3) 组态ET200S

   4) 设置协议Modbus Master

3. 编写通信程序

   1) 逻辑地址的填写

   2) 调用通信功能块

   3) 创建通信数据块DB块

4. 设备连接

5. 通信测试

   1) 设置调试软件modbus slave

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

图1 新建项目

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

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

3、添加ET200S站点,插入 PM-E的电源模块和ET200 1SI Modbus Master(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;从站响应时间最大2000ms。

图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、创建发送数据块DB10和接收数据块DB11,发送数据块的名称为Send,接收数据块的名称为Rcv;如下图所示,发送数据块中新建几个变量,从站地址为2,功能码为3,起始地址为0,读4个寄存器数据,具体功能码F03 的使用,参见手册“Simatic ET200S 串行接口模块” 3.5章节的说明,如下图所示,接收数据块中新建1个数据类型Array的变量,数组元素的数据类型为Byte,数量为101。

图9 新建发送接收功能块

2、进入主程序OB1,从左侧“Libraries->ET200sSi->ET200S Serial Interface”(需要安装ET200S串口软件,下载链接详见第4.3章节),调用发送功能块S_SEND(FB3)和接收功能块S_RCV(FB2)。S_SEND的背景数据块为DB1,S_RCV的背景数据块为DB2。

图10 调用发送和接收功能块

ET200S的发送功能块FB3 S_SEND的参数设置见下表。


管脚

解释描述

REQ

发送数据触发位,上升沿触发,本例中为M0.5。

R

取消通讯,本例中不用。

LADDR

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

DB_NO

发送数据块号,本例中为10(DB10)。

DBB_NO

发送数据的起始地址,本例中为0(DB10.DBB0)。

LEN

发送数据的长度,本例中为MW12,本例中MW12赋值为6。

COM_RST

如果为1,重新启动FB,本例中为M10.1。

DONE

发送完成位,发送完成且没有错误时为TRUE。

ERROR

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

STATUS

状态字,标识错误代码,查看ET200S串行模块手册获得相应的说明。

ET200S的接收功能块FB2 S_RCV的参数设置见下表。


管脚

解释描述

EN_R

使能接收位,本例中为M20.0,常闭点, 始终保持接收状态。

LADDR

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

DB_NO

发送数据块号,本例中为11(DB11)。

DBB_NO

发送数据的起始地址,本例中为0(DB11.DBB0)。

COM_RST

如果为1,重新启动FB,本例中为M20.2。

NDR

接收完成位,接收完成并没有错误为TRUE。

ERROR

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

LEN

接收数据的长度,只显示一个扫描周期,即:只有在接收到数据的当前周期,此值不为0。

STATUS

状态字,标识错误代码,查看ET200S串行模块手册获得相应的说明。

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

4 设备连接

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

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

5 通信测试

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

1、双击此图标,打开modbus slave测试软件。

图12 新建从站测试项目

2、然后点击菜单Connection->connect配置串口参数,要和ET200S的参数一致。

图13 连接参数

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

图14 从站功能码设置

4、点击“OK”,设置结果如下,通讯数据40001~40004分别为111、222、333、444。

图15 设置结果

5、然后在Step7变量表中设置M20.0为TRUE,使能接收,将MW12设置为6,然后将M0.5置成 TRUE(上升沿触发,想再发送需要将M0.0从TRUE置成FALSE,然后再置成TRUE),可以监控到DB11.DBW0到DB11.DBW6的值为111 到444,如下图。

图16 测试结果