S7-300 200MODBUS通信

更新时间:2023-05-19 08:17:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

S7300-200modbus

S7-300 CP341作主S7-200作从的Modbus通信

Modbus Communication -- S7-300 CP341 as Master and S7-200 as Slave

S7300-200modbus

摘要 自动化各个厂家在工业控制通信方面都有各自的通信协议及方式。西门子控制产品中通信的主要方式有MPI,Profibus,Ethernet。在现场应用中,往往需要两个厂家的控制器进行通信交换数据。Modbus通信是常用的一种。本文就以CP341都作为Modbus主站,S7-200作为Modbus从站的通信实验作介绍。 关键词 CP341 S7-200 Modbus Key Words CP341 S7-200 Modbus

IA&DT Service & Support

Page 2-24

S7300-200modbus

目 录

S7-300 CP341作主S7-200作从的Modbus通信...........................................................................1 1.系统简介及软硬件需求.............................................................................................................4 1.1 软件环境...............................................................................................................................4 1.1.1 STEP7 V5.4 SP3...........................................................................................................4 1.1.2 CP PtP Param V5.1 SP8...............................................................................................5 1.1.3 CP PTP Modbus Master V3.1.4....................................................................................5 1.1.4 STEP 7 MicroWIN V4.0 SP6.........................................................................................5 1.1.5Toolbox_V32-STEP 7-Micro WIN 32 Instruction Library...............................................5 1.2 硬件列表...............................................................................................................................5 1.3硬件安装...............................................................................................................................5 2. CP341作Modbus主站的设置与编程.........................................................................................8 2.1 CP341作Modbus主站的硬件组态.......................................................................................8 2.1.1 硬件组态CPU及CP341..................................................................................................8 2.1.2 设置Modbus总线传输速率和帧字符结构.......................................................................8 2.1.3 设置电气接口.................................................................................................................9 2.1.4 Modbus配置的下载.....................................................................................................10 2.2 CP341作Modbus主站的编程.............................................................................................11 3.S7-200作Modbus从站的设置................................................................................................15 4. 通信测试................................................................................................................................17 4.1 FC01主站读取从站多个DO点状态....................................................................................17 4.2 FC02主站读取从站多个DI点状态......................................................................................18 4.3 FC03主站读取从站多个内部寄存器状态...........................................................................19 4.4 FC06主站写单字到从站内部寄存器..................................................................................20 4.5 FC16主站写多字到从站内部寄存器..................................................................................21 附录-推荐网址...........................................................................................................................23

IA&DT Service & Support

Page 3-24

S7300-200modbus

1.系统简介及软硬件需求

Modbus 是公开通信协议,其具有两种串行传输模式,ASCII 和 RTU。它们定义了数据如何打包、解码的不同方式。通信双方必须同时支持上述模式中的一种,通常支持Modbus通信的设备大都支持RTU 格式。Modbus 通信标准协议可以通过各种传输方式传播,如 RS232C、RS485、光纤、无线电等。 在 S7-200 CPU 通信口上实现的是 RS485 半双工通信,使用的是 S7-200 的自由口功能。

Modbus 是一种单主站的主/从通信模式。Modbus 网络上只能有一个主站存在,主站在 Modbus 网络上没有地址,从站的地址范围为 0 - 247,其中 0 为广播地址,从站的实际地址范围为 1 - 247。

在实现Modbus通信方面,西门子AS产品中往往会用到CP341和S7-200。其二者之间的不同是CP341的接口类型多,包含RS 232C (V.24) 20 mA (TTY), RS 422/RS 485 (X.27)。由于其实现Modbus通信需要购买Modbus Dongle,在实现功能成本方面比较高。但是由于CP341可安装在ET200M站上通过Profibus的方式与主站相通,此种方案很适合比较大型系统进行的Modbus通信设计和改造。S7-200系列产品是西门子AS产品中低端的产品。但是其小而精湛集成了很多通信功能。虽然S7-200在实现Modbus通信时使用的是 S7-200 的自由口功能,接口采用RS485,或是通过适配器转换成RS 232接口类型不如CP341的型号丰富,但是其在实现Modbus功能上无需组态和额外购买组件,所以实现起来既简单而且成本低廉,在比较低端的场合是个不错的选择。

在现场应用中CP341往往都作为Modbus主站来读取第三方设备的数据,而S7-200常作为Modbus从站与其他设备进行Modbus通信。本文就以CP341都作为Modbus主站,S7-200作为Modbus从站,来实现其二者的Modbus通信,阐述其二者在实现通信方面的设置和注意事项。需要说明的是S7-300与S7-200的通讯方式有很多种包括MPI、Profibus、Ethernet、Modbus等。本文旨在说明其二者在Modbus通信方面的具体安装和编程步骤。 1.1 软件环境

1.1.1 STEP7 V5.4 SP3

用于编写S7-300/400 等PLC程序,此软件需要购买,本文档中所有的程序代码均使用Step7 V5.4 SP3编写。

IA&DT Service & Support

Page 4-24

S7300-200modbus

1.1.2 CP PtP Param V5.1 SP8

串行通信模板的驱动程序,安装此驱动后才能配置PtP模板,并在Step7中集成通信编程需要使用的功能块。此驱动随购买模板一起提供,也可以从以下的链接下载。

/CN/view/zh/27013524

1.1.3 CP PTP Modbus Master V3.1.4

CP341或CP441-2用于Modbus 主站时,需要安装此驱动协议,但安装此驱动之前必须先安装PtP driver,此驱动可以在购买Modbus Dongle时选择购买,或者可以从以下链接下载。 /CN/view/zh/87137841.1.4 STEP 7 MicroWIN V4.0 SP6

此软件是用于S7-200编程和组态的软件。此软件可以免费下载到。

1.1.5Toolbox_V32-STEP 7-Micro WIN 32 Instruction Library

S7-200实现Modbus功能,需要使用Modbus的指令库,其实质是自由口通信。STEP 7-Micro/WIN V4.0 以上版内部已经带有新的指令库,支持Modbus通过Port0、Port1进行通信,但在未安装西门子 Instruction Library 软件包的情况下,不能显示出来使用。

要使用西门子的标准指令库,必须先安装西门子的指令库软件包 Instruction Library。安装了 Instruction Library 之后,只要安装的 STEP 7-Micro/WIN 版本是最新的,就能获得相应版本的新指令库。安装 Micro/WIN 的升级包(Service Pack)也会更新指令库的版本。 1.2 硬件列表

z S7-300站:

CPU315-2DP 6ES7 315-2AG10-0AB0 CP343-1 6ES7 341-1EX30-0XE0 CP341 RS422/485 6ES7 341-1CH01-0AE0

Dongle 6ES7 870-1AA01-0YA0 (MODBUS master) z S7-200站:

224XP 6ES7 214-2BD23-0XB8 (选用双口CPU便于调试) 1.3硬件安装

物理接口方面S7-200的通信口为RS485物理接口, CP341选用的也是RS 422/485接口类型的模块。二者之间可采用6ES7 902-3AB00-0AA0 RS 422/485 5m连接电缆。在本系统中

IA&DT Service & Support

Page 5-24

S7300-200modbus

采用的电缆为DP 红B 绿A 两线电缆。

在接线之前首先要仔细阅读CP341及S7-200通信接口的手册,查看通信接口针脚的定义。如图1所示。

图1 S7-200 CPU通信口引脚定义

图2 CP341 RS 422/485通信口引脚定义

IA&DT Service & Support

Page 6-24

S7300-200modbus

图3 CP341 通过RS485与通信对象的连接方式

在接线时,S7-200端由于是9针 RS485口,故用标准的DP连接器。而CP341上的接口为15针口,其4、11对应RS485接线方式的连根线。从S7-200端口3引出的是红色B线,其连接CP341 15针口的11端口。从S7-200端口8引出的是绿色A线,其连接CP341 15针口的4端口。如图4所示。

图4 S7-200与CP341 RS 422/485接口通过DP电缆的接线图

IA&DT Service & Support

Page 7-24

S7300-200modbus

2. CP341作Modbus主站的设置与编程

2.1 CP341作Modbus主站的硬件组态 2.1.1 硬件组态CPU及

CP341

图5 将CP341逻辑地址为272

2.1.2 设置Modbus总线传输速率和帧字符结构

双击CP341->Parameters->Protocol中选择Modbus Master;

双击信封Protocol,选择Modbus Master设置总线传输速率和帧字符结构。

如图 6,本例传输速率为9.6Kbit/s,帧字符选用8位数据位,1位停止位,无校验。此设置可根据实际情况调整,原则是通信双方选择一致。

IA&DT Service & Support

Page 8-24

S7300-200modbus

图6 通信帧字符结构

2.1.3 设置电气接口

选择半双工RS 485,默认设置是 R(A)为- ,R(B)为+。此设置主要是与RS485 A、B两线正负定义有关,在CP341接线与通信对象A、B两线正负定义相反时,可无需修改硬件接线,可直接修改此处颠倒接线正负。如图7所示。

IA&DT Service & Support

Page 9-24

S7300-200modbus

图 7 CP341接线与通信对象A、B两线定义

2.1.4 Modbus配置的下载

当配置好Modbus通信的参数后,在向CPU下载硬件组态前,要向CP341的Dongle中下载Modbus Master的驱动,一旦下载完成后此后无需再次下载。对于通信参数的调整只需要进行HW对CPU的硬件下载即可。

要注意的是,在下载Dongle时,一定要CPU停机下载。如图8所示

IA&DT Service & Support

Page 10-24

S7300-200modbus

图8下载Dongle时,一定要CPU停机下载

2.2 CP341作Modbus主站的编程

实现CP341作Modbus主站的通信程序是“P_SND_RK”FB8负责发送控制字。编程如下:

IA&DT Service & Support

Page 11-24

S7300-200modbus

图9 “P_SND_RK”FB8

FB8参数说明表格1。

SF LADDR REQ DB_NO DBB_NO LEN R_TYP R DONE ERROR STATUS 其它参数

‘S’为发送,此处必须为大写的‘S’ 硬件组态中的起始逻辑地址,本例中为272

发送数据触发位,上升沿触发,本例中为M0.5,以1s为周期的脉冲信号 发送数据块号,本例中为1

发送数据的起始地址,本例中为0 发送数据的长度,本例中暂时为6

‘X’为扩展的数据块,此处必须为大写的‘X’ 取消通信,本例始终为初始值FALSE

发送完成位,无故障发送完成后为true,M100.0 错误位,为true说明有错误,M100.1

状态字,标识错误代码,查看Modbus Master和CP341手册 查看在线帮助

表 1

IA&DT Service & Support

Page 12-24

S7300-200modbus

其中创建发送数据块DB1结构如图10所示:

图10 发送DB块源区域结构

创建的发送数据块DB1,至少要有6个字节的长度,后面根据功能码的不同,所需长度不同,建议发送数据块创建的长度长一些。以上图为例6个字节Address为所通讯对象的Modbus地址为1,code为功能码FC03,所读对象寄存器的起始地址为0,所读寄存器的数量为4,其中一个寄存器为两个字节。

此处有几个注意事项: 1) R_TYP必须为大写的‘X’,

为小写"x"时,CP341 作为Modbus master时,调用FB8的状态字显示为 "0E4F" 错误。注意R_TYP必须为大写。且对于R_TYP可以写的值如下:

’D’ DB 区

’X’ DX 区,extended data block ’E’ I 区 ’A’ Q 区 ’M’ M 区 ’T’ T 区 ’C’ C 区

2) LEN的长度要根据通信所需功能码来针对填写,

如下表所示

IA&DT Service & Support

Page 13-24

S7300-200modbus

表 2

LEN的长度与功能码的对应。

“P_RCV_RK”FB7用于接收通信数据。编程如图11所示:

图 11 “P_RCV_RK”FB7

FB7参数说明表格3

LADDR DB_NO DBB_NO 硬件组态中的起始逻辑地址,本例中为272 接收数据块号,本例中为DB2

接收数据的起始地址,本例中默认为0

Page 14-24

IA&DT Service & Support

S7300-200modbus

3.S7-200作Modbus从站的设置

S7-200作Modbus通信要用到自由口通信下的Modbus Slave库,对于此库的应用要注意的是

z Modbus Slave库仅支持Modbus RTU通信模式,不支持ASCII 通信模式。 z 目前的Modbus Slave库仅支持通信口Port0。

z 使用Modbus Slave库时一定要注意对库分配内存区空间。否则编译后出现很多错

误。

如图12所示:

图12 调用的库要分配系统内存地址区

编程时使用SM0.1调用子程序MBUS_INIT进行初始化,使用SM0.0调用

MBUS_SLAVE,并指定相应参数。关于参数的详细说明,可在子程序的局部变量表中找到。

图13为S7-200实现Modbus从站的程序。 IA&DT Service & Support

Page 15-24

S7300-200modbus

图13 调用Modbus RTU通信指令库

图中参数意义如下:

a. 模式选择:启动/停止Modbus,1=启动;0=停止 b. 从站地址:Modbus从站地址,取值1~247

c. 波特率:可选1200,2400,4800,9600,19200,38400,57600,115200 d. 奇偶校验:0=无校验;1=奇校验;2=偶校验 e. 延时:附加字符间延时,缺省值为0

f. 最大I/Q位:参与通信的最大I/O点数,S7-200的I/O映像区为128/128,缺省

值为128

g. 最大AI字数:参与通信的最大AI通道数,可为16或32 h. 最大保持寄存器区:参与通信的V存储区字(VW) i. 保持寄存器区起始地址:以&VBx指定(间接寻址方式) j. 初始化完成标志:成功初始化后置1 k. 初始化错误代码

IA&DT Service & Support

Page 16-24

S7300-200modbus

l. Modbus执行:通信中时置1,无 Modbus 通信活动时为 0 m. 错误代码:0=无错误

从程序截图中可见,S7-200作为Modbus从站,从站地址为10,接收存储区为VB0开始。

4. 通信测试

至此,CP341和S7-200双方的程序及物理连线已经做好。在调试S7-300时可通过CP343-1以太网模块,以便可以用以太网通信调试速度快且方便。S7-200站选用224XP,其中Port0作为Modbus通信口,Port1用于与笔记本的CP5512通信。

在进行通信测试前还要明确Modbus通信的功能码。

下表为Micro 'n Power中S7-200作为Modbus RTU从站通信功能码。

表 4 S7-200作为Modbus RTU从站通信功能码

以下测试为现场应用中经常用到的功能码FC01、02、03、06、16 4.1 FC01主站读取从站多个DO点状态

FC01功能下,“P_SND_RK”FB8的LEN为6,DB1的头两个字节分别是所要读取

从站的地址10号站(16#A),和功能码01,如表5所示。图14为S7-200的QB0的4个位被传送到DB2的接收区。其中Reg_num位数为1-2040。

地址 0.0 1.0 2.0 4.0

名称

Slave_address Function_code Reg_startAdr Reg_num

类型 值 注释

从站地址 功能代码

位起始地址 WORD W#16#0

位数 WORD W#16#4

Page 17-24

IA&DT Service & Support

S7300-200modbus

表 5 FC01 的SEND 源区域结构

图14 FC01的数据交换

4.2 FC02主站读取从站多个DI点状态

FC02功能下,“P_SND_RK”FB8的LEN为6,DB1的头两个字节分别是所要读取从站的地址10号站(16#A),和功能码02,如表6所示。图15为S7-200的I0.0-I0.3的四个位被传送到DB2的接收区。其中Reg_num位数为1-2040。

地址 0.0 1.0 2.0 4.0

名称 类型 值 注释 Slave_address 从站地址 Function_code 功能代码

位起始地址 Reg_startAdr WORD W#16#0

位数 Reg_num WORD W#16#4

表 6 FC02 的SEND 源区域结构

IA&DT Service & Support

Page 18-24

S7300-200modbus

图15 FC02的数据交换

4.3 FC03主站读取从站多个内部寄存器状态

FC03功能下,“P_SND_RK”FB8的LEN为6,DB1的头两个字节分别是所要读取从站的地址10号站(16#A),和功能码03,如表7所示。图16为S7-200的V区3个寄存器传送到DB2的接收区。注意在一次请求中可以读取最多 127 个寄存器(每个寄存器2个字节)的数据。

地址 0.0 1.0 2.0 4.0

名称 类型 值 注释 Slave_address 从站地址 Function_code 功能代码

寄存器起始地址 Reg_startAdr WORD W#16#0

寄存器数 Reg_num WORD W#16#3

表 7 FC03 的SEND 源区域结构

IA&DT Service & Support

Page 19-24

S7300-200modbus

图16 FC03 的数据交换

4.4 FC06主站写单字到从站内部寄存器

FC06功能下,“P_SND_RK”FB8的LEN为6,DB1的头两个字节分别是所要读取从站的地址10号站(16#A),和功能码06,如表8所示。图17为DB1.DBW4传送到从站VW0的接收区。

地址 0.0 1.0 2.0 4.0

名称 类型 值 注释 Slave_address 从站地址 Function_code 功能代码 寄存器地址 Reg_startAdr WORD W#16#0

寄存器值 Reg_num WORD W#16#1234

表 8 FC06 的SEND 源区域结构

IA&DT Service & Support

Page 20-24

S7300-200modbus

图17 FC06 的数据交换

4.5 FC16主站写多字到从站内部寄存器

FC16功能下,“P_SND_RK”FB8的LEN不为6,而是发送命令及数据的总长度本例中设为20。DB1的头两个字节分别是所要读取从站的地址10号站(16#A),和功能码16(16#10)。功能码FC16时,所要发送的数据从DB1.DBW6开始(从第7个字节开始)如表9所示。图18为DB1.DBW6开始的多字发送到VW0开始的接收区。Reg_num为写寄存器的总数目。注意在一次请求中可以写最多 127 个寄存器(每个寄存器2个字节)的数据。

地址 0.0 1.0 2.0 4.0 6.0 8.0 10.0

名称 类型 值 Slave_address Function_code Reg_startAdr WORD W#16#0 Reg_num WORD W#16#3 Data1 Data2 Data3 表 9 FC16 的SEND 源区域结构

注释 从站地址 功能代码 寄存器起始地址 寄存器数目 寄存器值 寄存器值 寄存器值

IA&DT Service & Support

Page 21-24

本文来源:https://www.bwwdw.com/article/7nl4.html

Top