返回 产品详情
S7-12006ES7317-7TK10-0AB0西门子湖南代理商
来自长沙玥励自动化设备有限公司
¥10.00
发布时间  2018-12-24 11:25:46 关注次数  174
长沙玥励自动化设备有限公司
免费会员 7年
图文介绍 产品参数 供应商信息

S7-1200   西门子   6ES7317-7TK10-0AB0   湖南代理商  

 

 

 

 

Modbus TCP通信概述

MODBUS/TCP是简单的、中立厂商的用于管理和控制自动化设备的MODBUS系列通讯协议的派生产品,显而易见它覆盖了使用TCP/IP协议的“Intranet”“Internet”环境中MODBUS报文的用途。协议的最通用用途是为诸如PLC’sI/O模块,以及连接其它简单域总线或I/O模块的网关服务的。

MODBUS/TCP 使MODBUS_RTU协议运行于以太网,MODBUS TCP使用TCP/IP和以太网在站点间传送MODBUS报文,MODBUS TCP结合了以太网物理网络和网络标准TCP/IP以及以MODBUS作为应用协议标准的数据表示方法。MODBUS TCP通信报文被封装于以太网TCP/IP数据包中。与传统的串口方式,MODBUS TCP插入一个标准的MODBUS报文到TCP报文中,不再带有数据校验和地址。

1. 通讯所使用的以太网参考模型

Modbus TCP传输过程中使用了TCP/IP以太网参考模型的5层:

第一层:物理层,提供设备物理接口,与市售介质/网络适配器相兼容

第二层:数据链路层,格式化信号到源/目硬件址数据帧

第三层:网络层,实现带有32IPIP报文包

第四层:传输层,实现可靠性连接、传输、查错、重发、端口服务、传输调度

第五层:应用层,Modbus协议报文

2. Modbus TCP数据帧

Modbus数据在TCP/IP以太网上传输,支持Ethernet II802.3两种帧格式Modbus TCP数据帧包含报文头、功能代码和数据3部分MBAP报文头(MBAPModbus Application ProtocolModbus应用协议)4个域,共7个字节,如图1所示

1 MODBUS TCP报文

由于使用以太网TCP/IP数据链路层的校验机制而保证了数据的完整性,MODBUS TCP 报文中不再带有数据校验”CHECKSUM”,原有报文中的“ADDRESS”也被“UNIT ID”替代而加在MODBUS应用协议报文头中。

3. Modbus TCP使用的通讯资源端口号

Modbus服务器中按缺省协议使用Port 502 通信端口Modbus客户器程序中设置任意通信端口,为避免与其他通讯协议的冲突一般建议2000开始可以使用

4. Modbus TCP使用的功能代码

按照使用的通途区分共有3种类型分别为:

1) 公共功能代码:已定义好功能码,保证其唯一性,由Modbus.org认可;

2) 用户自定义功能代码有两组,分别为6572100110,无需认可,但不保证代码使用唯一性,如变为公共代码,需交RFC认可;

3) 保留功能代码,由某些公司使用某些传统设备代码,不可作为公共用途。

按照应用深浅,可分为3个类别:

1) 类别0,客户机/服务器最小可用子集:读多个保持寄存器(fc.3);写多个保持寄存器(fc.16)

2) 类别1,可实现基本互易操作常用代码:读线圈(fc.1);读开关量输入(fc.2);读输入寄存器(fc.4);写线圈(fc.5);写单一寄存器(fc.6)

3) 类别2,用于人机界面、监控系统例行操作和数据传送功能:强制多个线圈(fc.15);读通用寄存器(fc.20);写通用寄存器(fc.21);屏蔽写寄存器(fc.22);读写寄存器(fc.23)

5. Modbus TCP通讯应用举例

在读寄存器的过程中Modbus TCP请求报文为例,具体的数据传输过程如下

1) Modbus TCP客户端实况,用Connect()命令建立目标设备TCP 502端口连接数据通信过程;

2) 准备Modbus报文,包括7个字节MBAP内请求;

3) 使用send()命令发送;

4) 同一连接等待应答;

5) recv()读报文,完成一次数据交换过程;

6) 当通信任务结束时,关闭TCP连接,使服务器可以为其他服务。

 

S7-300/400 的CPx43-1 MODBUS TCP 通讯(STEP7)

下面章节将介绍如何使用软件选项包” ModbusTCP CP V4.3 "的功能块库配置S7-300/400单站系统通过CP343-1/CP443-1与第三方模拟软件进行Modbus/TCP进行通讯的详细步骤

1.“ ModbusTCP CP V4.3”块库使用说明

1) 该功能块库可以用于S7-300单站通过CP343-1S7-400单站通过CP443-1进行ModbusTCP通讯。

2) 由于需要在SIMATIC站与其他通讯伙伴之间建立TCP连接用于Modbus通讯,因此需要调用SIMATIC S7标准功能块,对于S7-300/400CP来说,需要调用FC5(AG_SEND)FC6(AG_RECV)功能块。

3) 对于主要功能块FB106107108来说,包含了V1.xV2.x,它们管脚参数并没有更改,只是在V2.x中增加了FC10”AG_CNTRL”功能块用于管理TCP连接,是否支持功能块与CP的型号和固件版本有关,如下图1所示:

1 功能块V1.xV2.x版本区别

当将软件选项包安装完集成到Step7时,可以在Step7安装文件的相应目录中找到块库、例程、英文手册,另外还可找到用CFC语言编程的功能快库,供读者选用,如下图2~4所示,在实际的项目调试过程中由于例子程序的各项功能比较完善,因此可以直接使用例子程序根据项目的实际情况修改相应的参数即可,可以节省大量的参数设置时间,以下主要描述了使用软件选项包” ModbusTCP CP V4.3 "配置S7-300/400站的详细配置和编程步骤

2 块库、例程、英文手册和软件注册的文件夹位置

3 例程(:当找不到例程时可以通过”Browse..”按钮来进行查找) 

4 功能块库(:当找不到块库时可以通过”Browse..”按钮来进行查找)

2. 配置S7-400单站系统通过CP443-1 作为Server进行Modbus TCP通讯

S7-400单站系统及Modscan32软件为例,详细介绍如何将S7-400单站系统通过CP443-1配置为ServerModscan32Client进行Modbus TCP通讯,在本例中将使用带FC10”AG_CNTRL”版本的功能块,下图5为服务器功能块库的程序结构及各功能块完成的功能

5 服务器功能块库程序结构

注意:Modscan32软件可以从网上免费下载得到,本例中使用的版本为V7.0版,由于各版本的功能不尽相同,因此需要注意版本问题。

2.1 例子中使用的硬件设备及软件

本例中所用的硬件设备如下表:

名称

数量

订货号

S7-400电源模块PS 407 10A

1

6ES7407-0KA01-0AA0

S7-400 CPU414-3PN/DP

1

6ES7414-3EM05-0AB0(V5.2)

S7-400 CP443-1

1

6GK7443-1EX41-0XE0(V1.0)

S7-400 机架

1

6ES7400-1JA00-0AA0

网线

若干

 

笔记本电脑

1

 

 

 

 

 

 

 

1 服务器硬件清单

所用到软件如下表:

名称

订货号

STEP7 V5.5 组态编程软件 英文版

 

“ ModbusTCP CP V4.3 软件选项包

2XV9450-1MB00

Modscan32 V7.0

 

 

 

 

2 服务器软件清单

2.2 S7-400系统及Modscan32软件组态

打开Step7软件,新建一个工程项目文件,命名为“M_TCP_CP_V43(Server)” 在项目下插入一个S7-400站,如下图6所示:

6 新建S7-400 Station

双击插入的SIMATIC 400 Station“Hardware”,打开硬件组态,在硬件组态界面下分别插入机架,电源PS407CPU414-3PN/DPCP443-1,本例中将CPIP地址设为192.168.70.2如下图7所示:

7 硬件组态并设置CP443-1IP地址

打开Netpro网络组态,选中CPU414-3PN/DP,插入一个新连接,连接伙伴为Unspecified,连接类型为TCP Connection,如下图8所示:

8 网络组态-新建TCP connection

打开连接属性对话框中的“General Inbation”,由于CP443-1Server被动连接,因此不勾选“Active connection estabishment”选项ID保持缺省即可,在“Address”栏中同样由于CP443-1Server,因此填入连接的Port号设置为502,组态完成后,编译保存,将例程站点“SIMATIC 400(Server)”中的程序(System data不需要拷贝)拷贝到该项目中并下载(注意:OB100中调用的FB108idladdr需根据组态确认)。对于通讯伙伴RemoteIP地址可以不填,即允许任意IP地址的客户端发起连接,如下图9所示:

9 S7-400为服务器的TCP connection参数设置

对于服务器和客户端的端口号(下述中以Port代替)的选择需要注意以下几点:

1)一般情况下服务器端的Port号modbus TCP规范缺省为502,客户端的Port号设置为客户端允许的号即可,另外各厂商产品也有一些限制,对于SIMATIC产品一般从2000之后开始。

2)对于一个系统来说,当创建多个TCP连接时,要保证IP地址和Port号不重合,即同一个IP地址下创建多个TCP连接时Port号必须不同,而不同的系统因IP地址不同可以使用相同的Port号,例如本例中如果需要创建多个TCP连接作为Server时因只有一个IP,因此Port号必须不同。

2.3 通讯测试

由于“ ModbusTCP CP V4.3选项包支持功能码FC1234561516,不同的功能码测试过程中类似,因此下面以FC03(读写保持寄存器)为例来说明通讯测试的整个过程,对于其他功能码的测试将不再重复描述,对于Modbus的数据类型可参考下表3

  

3 Modbus数据类型 

由于服务器主功能块FB108“MODBUSCP”的参数需要初始化,因此分别在OB100OB1中调用FB108,在OB100中调用FB108完成相关参数的初始化,FB108的管脚分分布如下图10所示:

注意:在图10中已经填写的参数不需要初始化OB1调用赋值;而未填写的参数需要初始化OB100中调用完成。

打开Modscan32软件,在“Connection--->connect”中打开连接属性对话框,连接接口选择“Remote TCP/IP Server”IP Address分别填入CPUIP

192.168.70.2Service为远程服务器的端口502,在协议的选择对话框中可以定义传输模式、通讯超时响应时间,报文发送间隔及允许写多个保

持寄存器等,这里分别保持缺省设置即可,如下图11所示:

18:对应TCP通讯的Modscan32连接窗口

下载网络组态及程序到CPU中,使能参数ENQ_ENR=1,在 Modscan32“Set up->Data Definition”中设置数据扫描周期、寄存器连接类型、起始地址、长度等,如下图11所示:

11 Modscan32Modbus数据参数定义

之后在ModScan32中就可以建立和远程CP443-1 Server的连接了,在Netpro中可以看到连接已经建立起来,如下图12所示:

12 Modscan32激活与S7-400的连接

由于Modbus的内部地址编排时基于数据链路层和应用层有一定的映射关系,因此Modbus的地址与SIMATIC中的DB块的地址时按照一定的地址映射关系来相对应,这样造成了DB块中有一定的地址偏移量,在本例中假设数据区的定义如下图21所示,其DB偏移量、Modbus物理编址、应用层编址如下图13所示:

13本例中的数据区定义

14 DB偏移量、Modbus物理编址、应用层编址对应关系 

Step7的项目程序中新建一个变量监控表,插入需要监控的参数和数据区变量,可以看到ModScan32软件与CP443-1的数据通讯已经建立起来了,双方可以进行正常的保持寄存器数据读写操作,如下图15所示:

15 通讯连接建立

3. 配置S7-400单站系统作为Client进行Modbus TCP通讯

下面以S7-400单站系统及ModSim32软件为例详细介绍如何将S7-400单站系统配置为ClientModSim32Server进行Modbus TCP通讯,在本例中同样使用FC10AG_CNTRL”版本的功能块,由于客户端和服务器模式均使用相同的功能块,因此客户端功能块库的程序结构及各功能块完成的功能可以参考图5

3.1 例子中使用的硬件设备及软件

   本例中所用的硬件设备如下表:

名称

数量

订货号

S7-400电源模块PS 407 10A

1

6ES7407-0KA01-0AA0

S7-400 CPU414-3PN/DP

1

6ES7414-3EM05-0AB0(V5.2)

S7-400 CP443-1

1

6GK7443-1EX41-0XE0(V1.0)

S7-400 机架

1

6ES7400-1JA00-0AA0

网线

若干

 

笔记本电脑

1

 

 

 

 

 

 

 

4 客户端硬件清单

  所用到软件如下表:

名称

订货号

STEP7 V5.5 组态编程软件 英文版

 

“ ModbusTCP CP V4.3” 软件选项包

2XV9450-1MB00

ModSim32 免授权版本

可从网上免费获取

 

 

 

5 客户端软件清单

3.2 S7-400单站系统与ModSim32软件组态

打开Step7软件,新建一个工程项目文件,命名为“M_TCP_CP_V43(Client)”, 在项目下插入一个S7-400站,如下图16所示:

16 新建S7-400 Station

双击插入的SIMATIC 400 Station“Hardware”,打开硬件组态,在硬件组态界面下分别插入机架,电源PS407CPU414-3PN/DPCP443-1,本例中将CPIP地址设为192.168.70.2,如下图17所示:

 

17 硬件组态并设置CP443-1IP地址

打开Netpro网络组态,选中CPU414-3PN/DP,插入一个新连接,连接伙伴为Unspecified,连接类型为TCP Connection,如下图18所示:

18 网络组态-新建TCP connection

打开连接属性对话框中的“General Inbation”,由于CP443-1Client主动发起连接,因此需要勾选“Active connection estabishment”选项ID保持缺省即可,在“Address”栏中同样由于CP443-1Client,对于本地的端口号设置为2000(一般从2000以外开始以避免与别的协议资源冲突)对于通讯伙伴RemoteIP地址设置为测试PC机的IP 地址,本例中 PC机的IP设置为192.168.70.245Port号设置为502,如下图19所示:

19 S7-400为客户端的TCP connection参数设置

组态完成后,编译保存,将例程站点“SIMATIC 400(Client)”中的程序(System data不需要拷贝)拷贝到该项目中并下载(注意:OB100中调用的FB108idladdr需根据组态确认)。

关于服务器和端口号的设置请参考本文中2.2章节说明。

3.3 通讯测试

由于“ModbusTCP CP V4.3”选项包支持功能码FC1234561516,不同的功能码测试过程中类似,因此下面同样以FC03(读写保持寄存器)为例来说明通讯测试的整个过程,对于其他功能码的测试将不再重复描述。

需要说明的是由于客户端功能块需要定义具体的功能码,而主功能块FB108 “MODBUSCP”并没有直接的管脚来定义功能码,而是由其中的两个参数“DATA_TYPE”“single-write”共同决定(参见后面的管脚参数说明),详细情况如下图20所示:

20 S7-400单站系统做客户端时不同的功能码的参数定义

由于客户端和服务器均使用相同的功能块FB108“MODBUSCP ”的参数需要初始化,因此分别在OB100OB1中调用FB108,在OB100中调用FB108完成相关参数的初始化,FB108的管脚分布参见3.3章节中的图10说明。

打开ModSim32软件,在“Connection--->connect”中打开连接属性对话框,连接接口选择“Modbus/TCP svr”TCP/IP Server Port为本地服务器的端口502,如下图21所示:

21 ModSim32中设置端口号

下载硬件组态及程序到CPU中,给参数ENQ_ENR发送脉冲信号;在打开的ModSim32软件窗口设置寄存器连接类型、起始地址、长度等,如下图22所示:

22 ModSim32Modbus数据参数定义

关于SIMATICDB偏移量、Modbus物理编址、应用层编址对应关系请参考本文中2.3章节图14的说明

之后在CP443-1 Client就可以建立和远程ModSim32 Server的连接了,在Netpro中可以看到连接已经建立起来,如下图23所示:

23 Modscan32激活与S7-400的连接

Step7的项目程序中新建一个变量监控表,插入需要监控的参数和数据区变量,可以看到ModSim32软件与S7-400的数据通讯已经建立起来了,双方可以进行正常的保持寄存器数据读写操作,如下图24所示:

24 S7-400单站系统作为客户端与ModSim32软件通讯

4. “ ModbusTCP CP V4.3” 选项包通讯使用总结及相关注意事项

由于是通过PC测试软件模拟第三方设备与SIMATIC CPU的集成PN口进行Modbus TCP通讯,因此在实际的第三方设备与CPU的集成PN口进行通讯时需要注意以下几点:

1) 由于订货号2XV9450-1MB02程序中会占用CPU 较大的装载和工作存储区,因此对于性能比较低特别是S7-300的低端CPU进行通讯时必须考虑一定的富余量。

2) 对于SIMATIC S7,参数DB_x的数据区建议使用不同的DB 块,使用同一个DB的不同地址区会造成地址编排混乱,另外参数Start_xEND_x 参数不能出现地址叠加情况。

3) 第三方设备的数据区与SIMATIC S7的数据DB块的地址对应关系可以先按照第三方的数据区域Modbus地址的偏移关系之后计算相应的偏移量。

4)建议使用项目中的样例程序,只须修改连接ID,定义通讯双方的IP地址、端口号及相应的数据存储区等,能减少编程量,只须把样例程序放到一个单独的FC块中即可,样例程序中定义了足够的数据区,连接成功及错误次数指示等。

5) Modbus TCP每一包的数据最多只能发送125个寄存器或2000个比特位,超过该范围必须进行分包处理。

6) S7-300/400作为Client能与多少个Server建立通讯或者作为Server时能与多少个Client通讯取决于产品所支持的TCP连接数,Modbus/TCP协议并没有对此进行约束和限制。 

5 .“ModbusTCP CP V4.3” 软件包授权

未经授权的Modbus TCP软件可用于测试和学习,不允许用于商业行为;未经授权的软件测试时CPU INTF指示灯红色闪烁,并在CPU故障缓冲区生成错误信息;同时,Modbus TCP功能块报错,如图2526所示:

25 CPU诊断缓冲区报错

26 Modbus TCP功能块报错A090

每个CPU都需要对功能块MODBUSCP进行授权。授权有两个步骤:读取IDENT_CODE和申请注册码REG_KEY。且在CPU中必须调用OB121 

5.1读取IDENT_CODE

1、下载程序并将CPU切换到RUN模式;

2、打开MODBUSCPFB108)的背景块DB108,确认IDENT_CODE的偏移地址为108;如图27所示:

27 确认IDENT_CODE的偏移地址

3、打开变量监视表,输入DB108.DBB108开始的20个字节,偏移地址110开始的18个字符即为IDENT_CODE,监控如图28所示:

28 确认IDENT_CODE

4、按上图方式,获取IDENT_CODE和软件包装上的License-No,并按照章节5.2和5.3所描述步骤申请注册码。

5.2 通过拨打西门子授权服务中心申请注册码REG_KEY

授权中心联系方式:010-64757575

通过西门子授权服务中心申请注册码时,需要您提供所购买的软件订货号、IDENT_CODE和软件包装上的License-No ,如图28所示。

5.3 通过网站申请注册码REG_KEY

1、通过西门子技术支持网站申请,打开如下网址,点击“技术问题提交”:

http://support.automation.siemens.com/CN/llisapi.dll?func=cslib.csinfo2&aktprim=99&lang=zh

29 技术支持网站

2、请按如下示例的步骤进行操作(注意:由于步骤3搜索出来的参考信息无法解决授权问题,请直接点击“继续”进入步骤4),如图30~34所示。

30 步骤1

31 步骤2

32 步骤4

33 步骤5

34 步骤6

5.4 使用注册码REG_KEY

1、西门子授权中心收到技术支持申请后,将会尽快给您回复邮件;

2、当获取到注册码后,在项目中打开LICENSE_DBDB3);

3、通过菜单“View--->Data View”将DB块切换到数据视图模式,将获取的17位注册码填写到“Actual value”中,如图35所示。

35 输入注册码

4、将LICENSE_DBDB3)下载到CPU中,CPUINTF指示灯熄灭;并可通过查看MODBUSPNFB102)的输出引脚LICENSEDtrue且不再报A090错误代码,确认注册码激活成功,如图36所示。

36 注册码激活成功

6. CP进行Modbus TCP通讯FB输出常见故障代码及处理

STATUS(Hex)

故障原因

处理措施

FB MODBUS故障

A002

Modbus起始地址Start_x错误

由通讯伙伴确认起始地址

A003

Modbus地址映射的DB块的数据区长度太短,最低长度:

-寄存器:

(START_ADDRESS – start_x + LENGTH) * 2

-

(START_ADDRESS – start_x + LENGTH) / 8

其他可能的原因:

·参数初始化错误(CPClient)

·客户端请求报文时错误的地址区域(CPServer)

扩展DB区域

CPClient,修改参数START-ADDRESS或者LENGTH

CPServer,修改客户端的请求

A004

仅在CPClient时才有此故障:

参数DATA_TYPEWRITE_READ设置不匹配,不可能对输入寄存器或离散输入进行写操作

修改此两个参数

A005

CPClient时:

参数LENGTH设置无效

CPServer时:

Client请求的寄存器号无效,合法的数据类型范围如下:

读线圈/离散输入: 1 to 2000

写线圈: 1 to 1968

读寄存器: 1 to 125

写保持寄存器: 1 to 123

CPClient时:

修改参数LENGTH

CPServer时:

修改Client请求的数据类型范围

A006

CP为客户端时:

数据区1-8中对应的Modbus地址范围(DATA_TYPE,

START_ADDRESS LENGTH

)不存在

CP为服务器时:

客户端请求的报文不正确

CPClient时:

修改参数DATA_TYPE,START_ADDRESS LENGTH

CPServer时:

修改Client 请求或修改数据类型data_type_x.

 

A007

CPClient时:

参数MONITOR监控时间设置无效,值必须>20ms

修改参数MONITOR

A008

接收监控超时,可能的原因:

对于MODBUSCP V2.x:

所有通过502端口的连接激将中断并重新建立

对于MODBUSCP V1.x:

同步错误,报文丢失

检查通讯伙伴的参数设置,如单元标识符等

A009

CPClient,接收标识符TI与发送不一致, 连接将终止和重新建立

对于MODBUSCP V2.x:

所有通过502端口的连接激将中断并重新建立

通过抓包工具来分析和修正通讯伙伴的报文

 

A00A

CPClient时,接收参数UNIT 与发送的不一致,连接将终止和重新建立

对于MODBUSCP V2.x:

所有通过502端口的连接激将中断并重新建立

A00B

CPClient时:

接收与发送功能码不一致

CPServer时:

无效的功能码被接收

对于MODBUSCP V2.x:

所有通过502端口的连接激将中断并重新建立

对于MODBUSCP V1.x:

同步错误,报文丢失

CPClient时:

通过抓包工具来分析和修正通讯伙伴的数据报文格式

CPServer时:

注意FB MODBUS仅支持功能码FC1234561516

A00C

接收到的字节长度与寄存器/位不匹配

CP为服务器时,CP将发一个响应异常给客户端

对于MODBUSCP V2.x:

所有通过502端口的连接激将中断并重新建立

通过抓包工具来分析和修正通讯伙伴的报文

 

A00D

仅在CP Client 时发生:

响应的MODBUS寄存器/位地址或长度与客户端请求的不一致

A00E

MODBUS报文报头的长度与寄存器/位 不匹配,FB将忽略

对于MODBUSCP V2.x:

所有通过502端口的连接激将中断并重新建立

对于MODBUSCP V1.x:

同步错误,报文丢失

A00F

0的协议标识符报文被接收

对于MODBUSCP V2.x:

所有通过502端口的连接激将中断并重新建立

对于MODBUSCP V1.x:

同步错误,报文丢失

A010

数据区1-8 DB块号重复使用

确保每个Db块号只使用一次

A011

DATA_TYPE参数设置(范围为1-4)

修改DATA_TYPE参数

A012

数据区参数data_type_1data_type_2设置重叠

 

数据区不能有重叠的modbus地址区域

A013

数据区参数data_type_1data_type_3设置重叠

修改此参数

A014

数据区参数data_type_1data_type_4设置重叠

A015

数据区参数data_type_1data_type_5设置重叠

A016

数据区参数data_type_1data_type_6设置重叠

A017

数据区参数data_type_1data_type_7设置重叠

A018

数据区参数data_type_1data_type_8设置重叠

A019

当参数data_type_x设置不为0时,db_x被赋值0

db_x不能为0

A01A

报头中长度错误:

范围3-253字节

对于MODBUSCP V2.x:

所有通过502端口的连接激将中断并重新建立

通过抓包工具来分析和修正通讯伙伴的报文

 

A01B

CPServer及使用功能码FC05:

接收的线圈值无效

CP将发送异常报文

A01E

CP接收到无法识别的数据,

对于MODBUSCP V2.x:

所有通过502端口的连接激将中断并重新建立

对于MODBUSCP V1.x:

同步错误,报文丢失

分析错误信息,通过抓包工具来分析和修正通讯伙伴的报文

A01F

功能块FB MBBUSCP返回一个无效的状态

联系产品供货商

A020

参数Check_conn_cycle设置<1s时,对于功能块AG_CNTRL过短

当为Client模式时,参数Check_conn_cycle=TRUECheck_conn_cycle设置需要>1s

当为Server模式时,Check_conn_cycle设置需要>1s

A023

数据区参数data_type_2data_type_3设置重叠

 

数据区不能有重叠的modbus地址区域

A024

数据区参数data_type_2data_type_4设置重叠

A025

数据区参数data_type_2data_type_5设置重叠

A026

数据区参数data_type_2data_type_6设置重叠

A027

数据区参数data_type_2data_type_7设置重叠

A028

数据区参数data_type_2data_type_8设置重叠

A034

数据区参数data_type_3data_type_4设置重叠

A035

数据区参数data_type_3data_type_5设置重叠

A036

数据区参数data_type_3data_type_6设置重叠

A037

数据区参数data_type_3data_type_7设置重叠

A038

数据区参数data_type_3data_type_8设置重叠

A045

数据区参数data_type_4data_type_5设置重叠

A046

数据区参数data_type_4data_type_6设置重叠

A047

数据区参数data_type_4data_type_7设置重叠

A048

数据区参数data_type_4data_type_8设置重叠

A056

数据区参数data_type_5data_type_6设置重叠

A057

数据区参数data_type_5data_type_7设置重叠

A058

数据区参数data_type_5data_type_8设置重叠

A067

数据区参数data_type_6data_type_7设置重叠

A068

数据区参数data_type_6data_type_8设置重叠

A068

数据区参数data_type_7data_type_8设置重叠

A07A

参数id设置无效:范围1-64

修改参数id

A07C

参数data_type_1设置无效:范围0-4

修改参数data_type_x

A07D

参数data_type_1未定义,data_type_1为缺省的使用数据区,需要定义

修改参数data_type_1

A07E

参数db_x值与背景DB中的值不一致

修改参数db_x

A080

OB1OB100调用FB MODBUS功能块时使用了不同的背景DB

需要使用相同的背景DB

A081

CPClient且使用FC05功能码时:

接收的线圈状态与发送不一致

通过抓包工具来分析和修正通讯伙伴的报文

A082

CPClient且使用FC06功能码时:

接收的寄存器值与发送不一致

通过抓包工具来分析和修正通讯伙伴的报文

A083

仅在CPClient:在上一个请求还没有处理完成时又发送新的请求

等待DONE =TRUE  ERROR = TRUE后再发送新请求

A085

在授权期间由于无效的写权限导致发生错误

对于授权DB,确认参数REG_KEY的结构是否正确

A090

功能块未授权,此为一状态信息,参数ERROR并不会置1,功能块在未授权情况仍然可以运行而不影响通讯

针对CPU读出预授权解码,之后按照授权操作向IT4industry.部门索取授权码

A091

收到异常响应码1(仅在Client模式),连接将终止和重新建立

通讯伙伴不支持请求的报文

A092

收到异常响应码2(仅在Client模式),无效的或不存在的地址请求

确认参数LENGTH START_ADDRESS

是否正确

A093

收到异常响应码3(仅在Client模式)

通讯伙伴无法执行报文接收(例如请求长度不支持等)

A094

收到异常响应码4(仅在Client模式)

通讯伙伴无法执行报文接收

A095

收到未知的异常响应码(仅在Client模式)

通过抓包工具来分析和修正通讯伙伴的报文

FC/SFC故障

7xxx

请参考SIMATIC的在线帮助

通过在线帮助SIMATIC manager -> mark block -> key F1 –> Ethernet -> see also -> code buation可以查到相关帮助信息

8xxx

请参考SIMATIC的在线帮助

通过在线帮助SIMATIC manager -> mark block -> key F1 –> Ethernet -> see also -> code buation可以查到相关帮助信息

SFC24故障

80A1

DB=0或超出了CPU允许的范围

选择有效的DB

80B2

DB块在CPU中不存在

DB_x参数中的DB块必须创建并下载到CPU

80B3

DB块被创建为“Unbed”类型

DB块不能创建为“Unbed”类型

 

硬件列表

设备名称

设备型号

PS 307

6ES7 307-1EA01-0AA0

CPU 319-3PN/ DP

6ES7 318-3EL00-0AB0

MMC

6ES7 953-8LG30-0AA0

CP341

6ES7 341-1CH02-0AE0

Dongle

6ES7 870-1AB01-0YA0

应用CP341进行 MODBUS协议通信时需要有Dongle的支持。在使用之前先将Dongle安装在CP341模块的背面的Dongle插槽中,Dongle和插入Dongle前后的CP341如下图所示。

图1

组态和配置

1、打开软件TIA PORTAL

图2

STEP7 V13,点击项目->新建...创建一新项目,项目名称为341_modbus_Master。

2、用鼠标点击“添加新设备”,选择SIMATIC S7-300->CPU->CPU 319-3PN/DP->6ES7 318-3EL00-0AB0。

图3

3、双击“设备组态”进入硬件组态界面,导轨RACK和CPU 319-3PN/DP已经存在,只需要插入PS307和CP341。

图4

4、双击CP341模板,进入CP341的属性框,配置CP341参数。

图5

5、在“协议”选项中选择“Modbus主站”。配置modbus通信参数,设定的通信参数要和通讯伙伴的相同。传输率(通信波特率):9600bps,数据位:8位,停止位:1位,奇偶校验:无。

图6

6、本示例选用的是RS422/485接口的CP341,还需要设置接口属性,如下图所示。

图7

编写通信程序

1、双击“添加新块”,创建发送数据块DB10和接收数据块DB11,发送数据块的名称为Send,接收数据块的名称为Rev;如下图所示,发送数据块中新建几个变量,从站地址为2,功能码为3,起始地址为0,读4个寄存器数据,具体功能码3 的使用参见手册“S7串行通信模板Modbus RTU主站可装载驱动的操作说明” 6.3章节的说明;如下图所示,接受数据块中新建1个数据类型Array的变量,数组元素的数据类型为Byte,数量为400。

图8

图9

2、进入主程序OB1,从通信->通信处理器->PtP链接:CP341,调用发送功能块P_SND_RK和接收功能块P_RCV_RK。P_SND_RK的背景数据块为DB1,P_RCV_RK的背景数据块为DB2。

图10

CP341的发送功能块P_SND_RK 的参数设置见下表。

管脚

解释描述

SF

‘S’为发送,此处必须为大写的‘S’

LADDR

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

REQ

发送数据触发位,上升沿触发,本例中为M0.5,为时钟存储器的位,见图12。

DB_NO

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

DBB_NO

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

LEN

发送数据的长度,本例中为6

R_TYP

‘X’为扩展的数据块,此处必须为大写的‘X’

R

取消通讯,本例中不用

DONE

发送完成位,发送完成后为TRUE,同时没有错误

ERROR

错误位,为TRUE说明有错误

STATUS

状态字,标识错误代码,查看Modbus Master手册获得相应的说明

其它参数

本例中不用

 

CP341的接收功能块P_RCV_RK 的参数设置见下表。

管脚

解释描述

LADDR

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

DB_NO

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

DBB_NO

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

LEN

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

EN_R

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

R

取消通讯,本例中不用。

NDR

接收完成位,接收完成并没有错误为TRUE,只显示一个扫描周期。

ERROR

错误位,为TRUE说明有错误,只显示一个扫描周期。

STATUS

状态字,标识错误代码,只显示一个扫描周期,查看Modbus Master手册获得相应的说明。

其它参数

本例中不用

 

图11

图12

设备连接

本文档使用的CP341的接口是RS232C,因此需要通过标准的RS232C电缆来连接CP341和计算机的串口.

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

如果使用的CP341是RS485接口的模块,需要使用RS232C/RS485转换器(需要选购第三方设备)。

通信测试

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

1、双击ModSim32软件图标,新建项目,点击Port1,进入端口1做设置,本例计算机只有一个端口,所以就对端口1做设置,如果计算机有多个端口,要注意所选端口。

图13

2、进入Port1设置界面,设置波特率、数据位、奇偶校验等参数,要和CP341的参数相同。

图14

3、点击“OK”,选择软件的03功能码界面,本例设置03功能码的10个数据,其中前4个数据分别设置成1—4。

图15

4、首先将硬件配置和程序下载到CPU319-3PN/DP中,时钟脉冲信号M0.5从0跳变成1时,CP341将数据发送出去。

图16

5、M20.0为常闭点,程序下载完成,CPU运行后,就始终处于接收状态。在STEP7中打开接收数据块DB11监控接收到的数据,可以看到发送的数据被正确的接收。

图17

手册下载

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

 CP341使用手册

 MODBUS RTU主站手册

S7-1200    西门子   6ES7317-7TK10-0AB0

 

长沙玥励自动化设备有限公司
  • 公司类型私营有限责任公司
  • 经营模式经销商-私营有限责任公司
  • 联系人姚善雷
  • 联系手机13874941405
  • 联系固话0731-526565255
  • 公司地址湖南省长沙市岳麓区天顶街道雷锋大道金科世界城468号
主营业务
电源PLC,模块厂家,西门子触摸屏价格, 电缆连接器
长沙玥励自动化设备有限公司是专业从事西门子工业自动化产品销售和系统集成的高新 技术企业。在西门子工控领域,公司以精益求精的经营理念,从产品、方案到服务,致 力于塑造一个“行业专家”品牌,以实现可持续的发展。公司位于湖南省长沙市岳麓区。 “信誉第一,客户至上”是公司成立之初所确立的宗旨,在公司领导的严格要求和员工们不折不扣地贯彻执行下发展延续至今。“假一罚十”一直是我公司的主动承诺。 面对纷繁变化的市场和日益严峻的竞争,客户的需求和利益始终被我们放在工作的首位。我们想客户之所想,急客户之所急。针对各行业客户的不同需求,我们尽心尽力地为客户需要解决的难题提供精准的解决方案,竭尽全力将服务落到实处、做到最好。在协助客户解决难题、实现突破的基础上,获得双赢! 我公司一直致力于推广西门子高性能自动化系统和驱动产品,所经营产品范围:LOGO!通用模块、SIMATIC S7全系列可编程控制器、PCS7 控制系统、WINCC组态软件、STEP 7编程软件和博图软件; 触摸屏、工控机、网络交换机、开关电源;6RA70/80系列直流调速装置,MM4、V20、G120、G130、G150、S120等全系列变频器;V90伺服产品,数控系统等工业自动化与驱动技术全系列产品。公司所备各类产品齐全,货量充足,,能够满足客户对现货的需求,保证工程进度。 公司自成立以来,始终坚持以人才为本、诚信立业的经营原则,坚持“质量到位、服务一流”的经营理念,在电工电气-工控系统及装备行业获得了客户的一致认可和高度评价,公司以为客户创造价值为己任,期待为您服务! 请相信长沙玥励自动化设备有限公司是您忠诚的长久的合作伙伴,我们愿与广大客户携手向前,共同进步!
姚善雷 电话咨询 立即询价