CP441作主站(Master)的Modbus RTU通讯(STEP7)

硬件及软件列表

组态和配置

编写通信程序

设备连接

通信测试

手册下载

硬件及软件列表

设备名称
设备型号

RACK

6ES7400-1JA01-0AA0

PS407 4A

6ES7407-0DA02-0AA0

CPU414-3PN/DP

6ES7414-3EM06-0AB0

CP441-2

6ES7441-2AA03-0AE0

Dongle 6ES7870-1AA01-0YA0

RS422/485接口

6ES7963-3AA00-0AA0

将Dongle插入CP441中,如下图所示。

图1

注意:STEP7 V5.X软件上,必须安装如下软件包才可进行后续的组态配置。

PTP协议软件包:SIMATIC S7-CP PtP Param V5.1+SP15,安装此驱动软件后才能给串行通信模板分配参数,并可以在STEP7中集成通信编程所需要使用的功能块。

Modbus主站驱动:用于Modbus主站时,需要安装此驱动软件包,安装驱动前必须先安装PTP协议软件包。

Modbus从站驱动:用于Modbus从站时,需要安装此驱动软件包,安装驱动前必须先安装PTP协议软件包。

组态和配置

1、打开创建项目设置项目名称:CP443-2 Modbus-M,用鼠标右键点击项目名称,选择Insert New Object-> SIMATIC 400 Station,双击Hardware进入硬件配置画面,插入RACK、PS407 4A 、CPU414-3PN/DP、CP441-2。如下图所示。

图2

2、双击CP441-2模块,进入属性配置窗口,选择Basic Parameters标签,进行接口配置,本文接口1、2,分别配置了RS422/485。

图3

3、 选择General标签,在Interface处添加一个PTP连接。

图4

4、返回Basic Parameters标签界面,点击"Parameters..."配置CP441-2参数,在Protocol 中选择Modbus Master。

图5

5、选择Protocol信封图标,进入协议参数配置对话框,点击Modbus-Master标签,设置通讯速率、报文信息等参数,其他可选择默认参数配置。

图6

6、点击Interface标签,按照现场实际选择接口,本文选择RS485接口。配置完成后点击OK保存配置。

图7

7、在硬件组态画面中,点击“”图标,打开网络组态,进入网络配置界面。选中站点CPU,右击插入新连接。

图8

8、选择连接对象为“Unspecified”未指定,连接类型选为“Point-to-Point Connection“。点击OK确认。

图9

9、进入PTP连接属性对话框,注意Local ID(HEX),后面编程时需要使用,每个连接分配不同Local ID,可以手动修改,范围W#16#1000- W#16#1400。“Communication Direction“选择双向通讯。点击OK确认组态,编译无误后下载。

图10

10、可以通过查看连接状态,直到”Connection status“显示图标下图Set up,说明连接正确建立

图11

11、注意:CP441做Modbus通讯时,需要更改CPU传送参数到模块的时间,最小为3000(=300s),来保证有足够长的时间将使用的加载协议驱动下载到CP卡中。

图12

编写通信程序

1、打开编程界面,从库中“Libraries-Standard Library-System function blocks”调用SFB12 BSEND,为其分配背景数据块DB12,调用SFB13 BRCV,为其分配背景数据块DB13。

图13

2、创建发送数据块DB1,根据不同的功能码创建SEND源区域的结构,本文示例03功能码,参考Modbus Master手册 6.3 Function Code 03 -读输出寄存器部分的说明。

图14

3、调用发送功能块,设置参数。

图15

SFB12 BSED的参数设置如下:

名称

数据类型

注释

REQ

BOOL

发送请求位,上升沿触发,本例使用M0.0

R

BOOL

取消通讯

ID

WORD

Local ID号,在PTP连接属性中获得,16进制

R_ID

DWORD

用于同一连接中不同块的区分,R_ID 取值范围0-255。 即对多个 BSEND 进行编程时,您必须使用不同的 R_ID

SD_1

ANY

数据发送区,本例使用的DB区,发送数据为6个字节,也可使用其他地址和数据类型进行访问,具体信息可参考SFB12在线帮助。

LEN

WORD

发送源DB数据长度,以字节为单位计数

DONE

BOOL

发送完成位,任务完成且无错误时置1

ERROR

BOOL

错误位,有错误时置1

STATUS

WORD

状态字,表示错误代码,具体信息可参考模块在线诊断内容或CP441手册第八章节诊断信息。

4、创建接收数据指令块DB2,长度可以根据实际需求设置或者设定比较大的数据区域。

图16

5、调用接收功能块,设置参数。

图17

SFB13 BRCV的参数设置如下:

名称

数据类型

注释

EN_R

BOOL

接收使能位,为1时允许接收,本例使用M0.5

ID

WORD

Local ID号,在PTP连接属性中获得,16进制

R_ID

DWORD

设置与成对调用的SFB12一致

RD_1

ANY

数据接收区,本例使用的DB2

LEN

WORD

接收数据的长度存储区,以字节为单位

DONE

BOOL

发送完成位,任务完成且无错误时置1

ERROR

BOOL

错误位,有错误时置1

STATUS

WORD

状态字,表示错误代码,具体信息可参考模块在线诊断内容或CP441手册第八章节诊断信息。

设备连接

本文使用的是RS485接口,通过将485接口转化232到USB连接计算机的接口,需要使用RS232C/RS485转换器(需要选购第三方设备)。

具体的电缆连接方法请查看:串口接线

通信测试

这里使用串口通信测试软件Modbus Slave软件来测试CP441-2和计算机的通信,步骤如下:

1、安装Modbus Slave测试软件,安装完成后,在桌面上生成图标,双击此图标,打开Modbus slave测试软件,如图所示。

图18

2、点击Register later按钮,不注册此软件,可以使用30天,但每次只能使用15分钟,网上下载的软件,没有注册码。然后点击菜单Connection->connect配置串口参数,要和CP441的参数相同。

图19

3、点击OK按钮,然后选择菜单Setup->Slave Definition...设定通讯数据,因为CP441使用的是功能码3,所以选择03 Holding Register,CP441访问的从站地址为2,Slave ID设为2,起始地址从有16#40偏移所以这里填写64,长度2,如下图所示。

图20

4、在调试助手中设置地址64到65 的数据分别16#55 、16#66,然后在Step7变量表中设置M0.5为TRUE,使能接收,然后将M0.0置成 TRUE(上升沿触发),可以监控到读取到DB2.DBW0到DB2.DBW4的值为16#55到16#66,如下图。

图21

手册下载

更详细的资料请参看如下手册:

CP441使用手册

Modbus RTU主站手册