视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
S7-1200与S7-200怎么通讯
2025-10-07 23:30:58 责编:小OO
文档
如何通过Modbus协议实现S7-1200与S7-200通讯

西门子S7-1200 紧凑型PLC在当前的市场中有着广泛的应用,由于其性价比高,所以常被用作小型自动化控制设备的控制器,这也使得它经常与Modbus仪表(扫描、打印机等设备进行通讯。因为没有第三方Modbus仪表,这里就以S7-200作为第三方的仪表为例介绍Modbus通讯。

1.控制系统原理

图1:通讯系统原理

2.硬件需求

S7-1200 PLC目前有3种类型的CPU:

1)S7-1211C CPU。

2)S7-1212C CPU。

3)S7-1214C CPU。

这三种类型的CPU最多都可以连接三个串口通信模版。

本例中使用的PLC硬件为:

1)PM1207电源 ( 6EP1 332-1SH71 )

2) S7-1214C ( 6ES7 214 -1BE30 -0XB0 )

3) CM1241 RS485 ( 6ES7 241 -1CH30 -0XB0 )

4)CPU224XP (6ES7 214-2AD23-0XB0)

3.软件需求

1) 编程软件 Step7 Basic V10.5 ( 6ES7 822-0AA0-0YA0)

2)编程软件 STEP 7 MicroWIN; Modbus库软件选项包

4.组态

我们通过下述的实际操作来介绍如何在Step7 Basic V10.5 中组态S7-1214C 和S7-200的Modbus通信。

4.1 S7-1200作Modbus主站,S7-200作Modbus从站

S7-1200作为Modbus主站的配置步骤如下:

点击桌面上的“Totally Integrated Automation Portal V10”图标,打开如下图:

图2: 新建S7 -1200项目

首先需要选择“Create new project”选项,然后在“Project name:”里输入Modbus_Master;在“Path:”修改项目的存储路径为“C:\”;点击“Create”,这样就创建了一个文件Modbus的新项目。创建后的窗口如下图所示:

图3: 新建项目后

点击门户视图左下角的“Project View”切换到项目视图下,如下图:

图4: 切换到项目视图

打开后,在“Devices”标签下,点击“Add new device”,在弹出的菜单中输入设备名“PLC_1”并在设备列表里选择CPU的类型。选择后如下图:

图5: PLC硬件组态

插入CPU后,点击CPU左边的空槽,在右边的“Catalog ”里找到“Communication”下的RS485模块,拖拽或双击此模块,这样就把串口模块插入到硬件配置里,接下来就需要配置此RS485模块硬件接口参数,选择RS485模块,在其下方会出现该模块的硬件属性配置窗口, 在属性窗口里有下面五个选项, “general”; “Port Configuration”;“Transmit message Configuration”;“Receive Message Configuration”;“IO Address/HW identify”。在“General”里包括了此模块的“项目信息”;而在“Port Configuration”里可以对端口的进行参数配置,

波特率为:9600 ;

校验方式:无 ;

数据位为:8 ;

停止位: 1;

硬件流控制:无;

等待时间: 1ms

设置参数如下图:

图6: RS485端口配置

在“Transmit message Configuration”和“Receive Message Configuration”里保持默认设置,在“IO Address/HW identify”里确认一下“硬件识别号”为11。

此时,完成了硬件的组态,接下来需要编写Modbus通讯程序。

在PLC中编写发送程序。在项目管理视图下双击“Device”—》“Program block”—》“Add new block”在弹出的窗口中选择“Organizations Block(OB)”,然后在其右边的窗口里选择“Startup”,去除“Symbolic Access Only”的选项勾。如下图所示:

图7: 添加启动OB块

点击“OK”后会打开此OB块,然后在启动OB块里用MB_COMM_LOAD(注:MB_COMM_LOAD和MB_MASTER功能块是在“Project Library”下的“Library”选项卡里,如下图所示:)

图8: Library

调用后如下图所示:

图9: 调用MB_COMM_LOAD块

在调用MB_COMM_LOAD功能块时 ,都会自动弹出创建相应背景数据块的界面,如下图:

图10:创建背景数据块

按上面的步骤在OB1中插入MB_MASTER功能块如下图:

图11:调用MB_MASTER块

在插入功能块的过程,相应的生成MB_COMM_LOAD_DB和MB_MASTER_DB,两个背景数据块。然后再创建一个发送或接收的数据缓冲区,点击PLC_1项目下的“Program Block”下的“Add new block”,在弹出的窗口中选择DB类型为“Global DB”,并去掉“Symbolic access only”选项勾(这样可以对该DB块进行直接地址访问),并取名该DB块为MB_COMM_DB。建好这个DB块后,双击打开MB_COMM_DB预先定义数据区的大小,如下图所示:

图12:数据区的定义

完成数据区的定义后,接下来就可以对MB_COMM_LOAD功能块和MB_Master功能块进行参数赋值,赋值的参数见图9和图11。 在上面的编程块里需要注意的是,在MB_MASTER功能块中的参数MB_ADDR参数是从站的Modbus的站地址。这里要读取的从站的站地址为2;关于MODE、DATA_ADDR、DATA_LEN可在下表中查看,DATA_PTR存放发送或接收到的数据。

表1:MB_MASTER Modbus功能表

上面就完成了程序的编写,对项目进行编译;右击PLC_1项目在弹出的菜单里选择“Complies ALL”选项,这样就对硬件与软件进行编译,如下图:

图13:编译项目

编译且没有错误后就可以下载程序到PLC中,同样右击PLC_1项目,在弹出的菜单选择“Download to Device”。

S7-200作为Modbus从站的配置步骤如下:

点击桌面上的“V4.0 STEP 7 MicroWIN SP6”图标(因为STEP 7 MicroWIN安装时并没有安装Modbus的库程序,所以Modbus的库程序是需要单独安装的,安装后才可以在库程序中调用Modbus的通讯功能块,关于库程序可以咨询西门子热线或访问西门子的官方网站),打开后并编写Modbus从站程序如下图:

图14:S7-200 Modbus从站编程

在上面调用的是端口0的程序,所以在连接通讯线时,需要连接到端口0上,编译并下载项目到S7-200的PLC中。下载后运行PLC。

用DP电缆连接S7-1200与S7-200。

在线监控S7-200中的程序,并监控变量表,修改VB1000到VB1011的值为1到12(VB1000到VB1011对应的Modbus的地址为40001-40006)。监控到的值如下图所示:

图15:S7-200监控变量值

在线监控 S7-1200变量表如下图:

图16:S7-1200监控变量值

4.2 S7-200作Modbus主站,S7-1200作Modbus从站

S7-1200作为Modbus从站的配置步骤如下:

点击桌面上的“Totally Integrated Automation Portal V10”图标,打开如下图:

图17:S7-1200监控变量值

首先需要选择“Create new project”选项,然后在“Project name:”里输入Modbus_Slave在“Path:”修改项目的存储路径为“C:\\Backup file”;点击“Create”,这样就创建了一个文件Modbus_Slave的新项目。创建后的窗口如下图所示:

图18: 新建项目后

点击门户视图左下角的“Project View”切换到项目视图下,如下图:

图19:切换到项目视图

打开后,在“Devices”标签下,点击“Add new device”,在弹出的菜单中输入设备名“PLC_1”并在设备列表里选择CPU的类型。选择后如下图:

图20: PLC硬件组态

插入CPU后,点击CPU左边的空槽,在右边的“Catalog ”里找到“Communication”下的RS485模块,拖拽或双击此模块,这样就把串口模块插入到硬件配置里,接下来就需要配置此RS485模块硬件接口参数,选择RS485模块,在其下方会出现该模块的硬件属性配置窗口, 在属性窗口里有下面五个选项, “general”; “Port Configuration”;“Transmit message Configuration”;“Receive Message Configuration”;“IO Address/HW identify”。在“General”里包括了此模块的“项目信息”;而在“Port Configuration”里可以对端口的进行参数配置,

波特率为:9600 ;

校验方式:无 ;

数据位为:8 ;

停止位: 1;

硬件流控制:无;

等待时间: 1ms

设置参数如下图:

图21: RS485端口配置

在“Transmit message Configuration”和“Receive Message Configuration”里保持默认设置,在“IO Address/HW identify”里确认一下“硬件识别号”为11。

此时,完成了硬件的组态,接下来需要编写Modbus通讯程序。

在PLC中编写发送程序。在项目管理视图下双击“Device”—》“Program block”—》“Add new block”在弹出的窗口中选择“Organizations Block(OB)”,然后在其右边的窗口里选择“Startup”,去除“Symbolic Access Only”的选项勾。如下图所示:

图22: 添加启动OB块

点击“OK”后会打开此OB块,然后在启动OB块里用MB_COMM_LOAD(注:MB_COMM_LOAD和MB_Slave功能块是在“Project Library”下的“Library”选项卡里,如下图所示:)

图23: Library

调用后如下图所示:

图24: 调用MB_COMM_LOAD块

在调用MB_COMM_LOAD功能块时 ,都会自动弹出创建相应背景数据块的界面,如下图:

图25:创建背景数据块

按上面的步骤在OB1中插入MB_Slave功能块如下图:

图26:调用MB_Slave块

在插入功能块的过程,相应的生成MB_COMM_LOAD_DB和MB_Slave_DB,两个背景数据块。然后再创建一个发送或接收的数据缓冲区,点击PLC_1项目下的“Program Block”下的“Add new block”,在弹出的窗口中选择DB类型为“Global DB”,并去掉“Symbolic access only”选项勾(这样可以对该DB块进行直接地址访问),并取名该DB块为MB_COMM_DB。建好这个DB块后,双击打开MB_COMM_DB预先定义数据区的大小,如下图所示:

图27:数据区的定义

完成数据区的定义后,接下来就可以对MB_COMM_LOAD功能块和MB_SLAVE功能块进行参数赋值,赋值的参数见图24和图26。 在上面的编程块里需要注意的是,在MB_SLAVE功能块中的参数MB_ADDR参数是此从站的Modbus站地址。这里定义为此从站的站地址为2;MB_HOLD_REG是指向Modbus保持寄存器DB的指针。保持寄存器DB必须为典型的全局DB。MB_SLAVE所提供给主站的功能见下表:

表3:MB_SLAVE Modbus功能表A

 

表4:MB_SLAVE Modbus功能表B

上面就完成了程序的编写,对项目进行编译;右击PLC_1项目在弹出的菜单里选择“Complies ALL”选项,这样就对硬件与软件进行编译,如下图:

图28:编译项目

编译且没有错误后就可以下载程序到PLC中,同样右击PLC_1项目,在弹出的菜单选择“Download to Device”。

S7-200作为Modbus主站的配置步骤如下:

点击桌面上的“V4.0 STEP 7 MicroWIN SP6”图标(因为STEP 7 MicroWIN安装时并没有安装Modbus的库程序,所以Modbus的库程序是需要单独安装的,安装后才可以在库程序中调用Modbus的通讯功能块,关于库程序可以咨询西门子热线或访问西门子的官方网站),打开后并编写Modbus主站程序如下图:

图29:S7-200 Modbus主站编程

在上面调用的是端口0的程序,所以在连接通讯线时,需要连接到端口0上,编译并下载项目到S7-200的PLC中。下载后运行PLC。

用DP电缆连接S7-1200与S7-200。

在线监控S7-1200中的程序,并监控变量表,修改DB3.DBB0到DB3.DBB20的值为1到21(DB3.DBB0到DB3.DBB19对应的Modbus的地址为40001-40010)。监控到的值如下图所示:

图30:S7-1200监控变量值

在线监控 S7-200变量表如下图:

图31:S7-1200监控变量值

从上面的变量监控表里可以看到VB420中没有数据,因为在主站的S7-200里的程序里只读取10个变量(即40001-40010)对应着的VB400-VB419,所以VB420的数据没有接收。下载本文

显示全文
专题