廊坊西门子软启动器授权总代理库存现货(已更新)
廊坊西门子软启动器授权总代理库存现货(已更新) 廊坊西门子软启动器授权总代理库存现货(已更新)
s7-200做主站s7-300 cp341做从站的modbus rtu通讯
1. 概述
在现场应用中,很多仪表和设备仅支持modbus rtu的通讯协议,第三方仪表可以做modbus主站或从站,西门子的通讯模块cp341 / cp441-2 通过dongle(硬件狗)可以扩展该协议,s7-200 集成的口可以支持自由口通讯,通过指令库也可以方便的实现modbus rtu通讯。本文以s7-200作为modbus 主站,cp341作为modbus 从站,实现modbus rtu通讯,阐述两者在通讯方面的设置和注意事项。
2. 软件环境
2.1 step7 v5.4 sp4
用于编写 s7-300/400程序,此软件需要从西门子购买,本文档中的300的程序是使用step7 v5.4 sp4的软件编写。
2.2 cp ptp param v5.1 sp11
串行通讯模板的驱动程序,安装此驱动后才能对ptp模板进行参数配置,并在step7中集成通讯编程需要使用的功能块。此驱动随购买模板一起提供,也可以从以下的链接下:27013524
2.3 cp ptp modbus sle v3.1 sp7
cp341或cp441-2用于modbus从站时,需要安装此驱动协议,但安装之前必须先安装ptp driver,此驱动可以在购买modbus dongle时选择购买,也可以从以下的链接下:27774276
2.4 step7 micro/win v4.0 sp6
用于s7-200编程的软件,本文档中的200的程序是使用step7 micro/win 的软件编写。此软件可以从西门子下中心免费下,也可以从以下的链接下。
自动化系统>>s7-200>>软件,文档编号s0002。
2.5 toolbox_v32-step 7-micro win 32 instruction library
s7-200实现modbus rtu功能,可以使用modbus的指令库,要使用西门子的标准指令库,必须先安装指令库的软件包 instruction library,安装后,可以在step 7-micro/win软件的库中找到modbus相关的指令,该软件包可以从以下的链接。自动化系统>>s7-200>>软件,文档编号s0010。
图11 从站驱动后结果
4.2.4 cp341做modbus从站的编程
从step7 软件下的example目录中,找到项目名“zxx21_05_ptp_com_modsl”的项目,打开,然后将modbus通讯模块fb80传递到用户项目中,打开路径如下所示。
图12 modbus sle 例程打开路径
ob1中调用fb80编程如下:
图13 fb80程序块调用
cp卡初始化正常后,cp_start,cp_start_fm和cp_start_ok为1信号,否则cp_start_error为1,同时可以从error_nr察看错误信息,也可以在硬件组态中在线后的cp341的诊断缓冲区察看详细的错误信息,错误信息对照和处理方式可以参考
《s7-300以用于ptp cp modbus 协议rtu格式s7的可装载驱动程序为从站》的手册。
5. 通讯测试
modbus rtu格式通信协议是以主从的方式进行数据传输的,在传输的过程中主站是主动方,即主站发送数据请求报文到从站,从站返回响应报文。modbus 系统间的数据交换是通过功能码来控制的,以下对现场常用的功能码进行分类测试,关于功能码的详细信息请参考手册。
5.1 fc01/05/15功能码
cp341从站的通讯区域配置
图14 fc01/05/15 参数组态界面
fc01、fc05、fc15对应的数据区为位输出,数据的传递以位为单位,可以读写操作,用户地址区为0xxxx,modbus地址在信息传递中从0开始。如上图,左边为信息传递地址(地址区不能冲突),右边对应的是s7-300的数据区。例如左边信息传递地址从0 ~ 7对应用户地址区为00001 ~ 00008,对应s7-300的m10.0 ~ m10.7,并且以此为例说明fc01功能码的通讯。
s7-200主站程序调用
图15 功能码fc01使用
s7-200主站,用功能码fc01读取从站8点数字量输出,接收的数据存放在vb2000开始的区域,测试截图结果如下。
图16 fc01功能码数据交换
5.2 fc02功能码
cp341从站的通讯区域配置
图17 fc02 参数组态界面
fc02对应的数据区为位输出,数据的传递以位为单位,只读操作,用户地址区为1xxxx,modbus地址在信息传递中从0开始,如上图,左边为信息传递地址(地址区不能冲突),右边对应的是s7-300的数据区。例如左边信息传递地址从0 ~ 7对应用户地址区为10001 ~ 10008,对应s7-300的m20.0 ~ m20.7,并且以此为例说明fc02功能码的通讯。
s7-200主站程序调用
图18 功能码fc02使用
s7-200主站,用功能码fc02读取从站8点数字量输入,接收的数据存放在vb2000开始的区域,测试截图结果如下。
图19 fc02功能码数据交换
5.3 fc03/06/16 功能码
cp341从站的通讯区域配置
图20 fc03/06/16参数组态界面
fc03/06/16 对应的数据区为寄存器,数据的传递以字为单位,可以读写操作,用户地址区为4xxxx,modbus地址在信息传递中从0开始。如上图,左边为信息传递地址,右边对应的是s7-300的数据区,左边传输地址不可改,右边只对应一个数据区。例如用户地址
区为40001 ~ 40004,对应s7-300数据区为db1.dbw0 ~ db1.dbw6,并且以此为例说明
fc03功能码的通讯。
s7-200主站程序调用
图21功能码fc03使用
s7-200主站,用功能码fc03读取从站4个字寄存器,接收的数据存放在vb2000开始的区域,测试截图结果如下。
图22 fc03功能码数据交换
5.4 fc04 功能码
cp341从站的通讯区域配置
图23 fc04参数组态界面
fc04对应的数据区为寄存器输入,数据的传递也以字为单位,只读操作,用户地址区3xxxx,modbus地址在信息传送中从0开始。如上图,左边为信息传递地址,右边对应的是s7-300的数据区,左边传输地址不可改,右边只对应一个数据区。例如用户地址区为30001 ~ 30004,对应s7-300数据区为db1.dbw0 ~ db1.dbw6,并且以此为例说明fc04功能码的通讯。
s7-200主站程序调用
图24功能码fc04使用
s7-200主站,用功能码fc04读取从站4个字输入寄存器,接收的数据存放在vb2000开始的区域,测试截图结果如下。
图25 fc04功能码数据交换
5.5 limits 栏
图26 limits 参数组态界面
对于写功能码fc05、06、15、16,可以禁用或限制访问相关s7-300存储区,即使用这些功能码时,s7-300存储区需要在设定的和的范围之间,如果访问的区域超出这个范围,则访问会被拒绝,同时输出报错误信息。
6. 总结
本文档以s7-200为主站和cp341为从站简单介绍了modbus rtu通讯,关于通讯的组态设置,编程以及常用功能码的使用,其具体的使用可以作为西门子串行通讯模块与第三方的仪表、设备等进行串行通信的参考。
- 供应商
- 上海臣冠工业控制设备有限公司
- 手机号
- 13524157645
- 销售经理
- 张邵飞
- 所在地
- 上海市松江区乐都路358号503室(注册地址)