最新S7200的MODBUS详细应用示例.docx

上传人:b****5 文档编号:28632979 上传时间:2023-07-19 格式:DOCX 页数:45 大小:479.20KB
下载 相关 举报
最新S7200的MODBUS详细应用示例.docx_第1页
第1页 / 共45页
最新S7200的MODBUS详细应用示例.docx_第2页
第2页 / 共45页
最新S7200的MODBUS详细应用示例.docx_第3页
第3页 / 共45页
最新S7200的MODBUS详细应用示例.docx_第4页
第4页 / 共45页
最新S7200的MODBUS详细应用示例.docx_第5页
第5页 / 共45页
点击查看更多>>
下载资源
资源描述

最新S7200的MODBUS详细应用示例.docx

《最新S7200的MODBUS详细应用示例.docx》由会员分享,可在线阅读,更多相关《最新S7200的MODBUS详细应用示例.docx(45页珍藏版)》请在冰豆网上搜索。

最新S7200的MODBUS详细应用示例.docx

最新S7200的MODBUS详细应用示例

S7200的MODBUS详细应用例如

修订历史记录

日期

版本

说明〔修改、补充、删除〕

作者

审核

<2009/4/3>

第一版〔已完〕

研发部·孙宝东

研发部·王振岳

5.13库存储区补充说明〔36页〕

注释:

红色字体为注意点;蓝色为修改补充;紫色为问题总结;茶色为暂时删除;绿色为住宿。

 

S7200Modbus主从协议

版本〔09年初稿版〕

制作:

研发部

前言:

Modbus从站协议指令可以配置S7-200,将其用作ModbusRTU从站,与Modbus主设备通讯。

Modbus主设备协议指令可以配置S7-200,将其用作ModbusRTU主设备,与一个或多个Modbus从站通讯。

Modbus指令安装在STEP7Micro/WIN指令树的"协议库"文件夹中。

有了这些新指令,您可以将S7-200用作Modbus设备。

当您在程序中参加Modbus指令时,会在工程中自动增加一个或多个相关子程序。

Modbus主设备协议库有两个版本。

一个版本使用CPU的端口0,另一个那么使用CPU的端口1。

端口1协议库的POU名中带有"_P1"(MBUS_CTRL_P1),表示POU使用CPU上的端口1。

在其它方面,这两个Modbus主设备协议库完全一致。

Modbus从站协议库仅支持端口0通讯。

在STEP7Micro/WIN中,ModbusRTU协议和USS协议操作库位于操作树的“库〞文件夹中。

MODBUS函数库要求STEP7Micro/WIN为V3.2或更高版本。

图1:

添加函数库

 

第一章使用Modbus协议库

前言:

这些库是附加函数库,并非组态软件STEP7Micro/WIN的组成局部。

您如果需要使用ModbusRTU协议,必须先安装“STEP7Micro/WIN32ToolboxV1.0”(包括库),然后安装运行“STEP7Micro/WIN〞。

就会出现如图1的库。

注意:

这个函数库包含可以在STEP7Micro/WINV3.2中使用的ModbusRTU协议库和USS协议库。

如果您安装了STEP7Micro/WINV4.0SP5或者更高版本,那么操作库中就会包含以下函数:

∙ModbusRTUMasterV1.2对应端口0和端口1

∙ModbusRTUSlaveV1.0对应端口0

∙USSprotocolV2.3对应端口0和端口1

下面我对ModbusRTU各指令功能与使用方法分别加以讲解:

1.使用Modbus主设备协议的要求

Modbus主设备协议指令使用以下S7-200资源:

·初始化Modbus主设备协议可以为Modbus主设备协议通讯指定专用CPU端口。

当CPU端口被用于Modbus主设备协议通讯时,就无法用于任何其它用途,包括与STEP7-Micro/WIN通讯。

MBUS_CTRL指令控制将端口0分配给Modbus协议或PPI,Mode为1时分配给Modbus协议,为0是分配给PPI。

将S7-200上的模式开关设为“STOP〞,端口零也会被复位为PPI协议模式。

MBUS_CTRL_P1指令(来自端口1协议库)控制将端口1分配给Modbus主设备协议或PPI。

·Modbus主设备协议指令影响与CPU通讯端口中自由端口通讯相关的所有SM位置。

·Modbus主设备协议指令使用3个子程序和1个中断例程。

·Modbus主设备协议指令要求两个Modbus主设备指令和支持例程有1620个字节的程序空间。

·Modbus主设备协议指令的变量要求284个字节的V存储器程序块。

该程序块的起始地址由用户指定,专门保存用于Modbus变量。

·S7-200CPU必须是固化程序修订版2.00或最好支持Modbus主设备协议库(CPUMLFB21x-2xx23-0XB0)。

·Modbus主设备协议库为某些功能使用用户中断。

用户中断不能被用户程序禁用。

提示:

欲将CPU通讯端口操作更换回PPI以便与STEP7-Micro/WIN通讯,将MBUS_CTRL指令的模式参数设置为零(0)。

您还可以将S7-200上的模式开关设置到STOP模式位置。

这些方法中的任一个将设置CPU通讯端口与STEP7-Micro/WIN通讯。

2.使用Modbus从站协议的要求

Modbus从站协议指令使用以下S7-200资源:

·初始化Modbus从站协议为Modbus从站协议通讯指定端口0。

当端口0被用于Modbus从站协议通讯时,就无法用于任何其它用途,包括与STEP7-Micro/WIN通讯。

MBUS_INIT指令控制将端口0指定给Modbus从站协议或PPI。

·Modbus从站协议指令影响与端口0中自由端口通讯相关的所有SM位置。

·Modbus从站协议指令使用3个子程序和2个中断例程。

·Modbus从站协议指令要求两个Modbus主设备指令和支持例程有1857个字节的程序空间。

·Modbus从站协议指令的变量要求779个字节的V存储器程序块。

该程序块的起始地址由用户指定,专门保存用于Modbus变量。

一定要设置V存储区,不然编译时会出现错误信息,设置过程很简单:

点击“文件〞→“库存储区〞,出现如下画面〔进行设置即可〕:

提示:

欲将端口0操作更换回PPI以便与STEP7-Micro/WIN通讯,用另一条MBUS_INIT指令重新指定端口0。

您还可以将S7-200上的模式开关设为STOP模式。

这样会将参数复原为端口0。

3.Modbus主设备协议的初始化和执行时间

Modbus主设备协议每次扫描都需要少量的时间来执行MBUS_CTRL指令。

MBUS_CTRL初始化Modbus主设备(首次扫描)需要大约1.11毫秒的时间,以后扫描需要大约0.41毫秒。

当MBUS_MSG子程序执行请求时,将执行扫描时间。

大多数时间用于计算ModbusCRC的请求和应答。

CRC(循环冗余检验)

确保通讯消息的完整性。

对于请求和应答中的每个字,扫描时间会延长约1.85毫秒。

最大请求/应答(读取或写入120个字)使扫描时间延长约222毫秒。

当在从站中接收应答并至少发出请求时,主要是读取请求在延长扫描时间。

当将数据发送到从站并至少收到应答时,主要是写入请求在延长扫描时间。

4.Modbus从站协议的初始化和执行时间

Modbus通讯使用CRC(循环冗余检验)确保通讯消息的完整性。

Modbus从站协议使用预先计算数值的表格减少处理消息的时间。

该CRC表初始化约需240毫秒。

初始化在MBUS_INIT子程序中进行,通常在进入RUN模式后用户程序首次扫描时执行。

如果MBUS_INIT子程序和任何其它初始化程序要求的时间超过500微秒扫描监视时间,您需要复原监视定时器,并将输出保持在启用状态(如果扩展模块要求)。

输出模块监视定时器可用向模块输出写入的方法复原。

请参阅监视复原指令。

当MBUS_SLAVE子程序执行请求时,扫描时间会延长。

由于大多数时间用于计算ModbusCRC,对于请求中和应答中的每个字节,扫描时间会延长约420微秒。

最大请求/应答(读取或写入120个字)使扫描时间延长约100毫秒。

5.Modbus主设备寻址

Modbus地址通常写作包含数据类型和偏移量的5个字符的数值。

第一个字符决定数据类型,最后四个字符在数据类型中选择适当的数值。

然后,Modbus主设备指令将地址映射至正确的功能,以便发送到从站。

Modbus主设备指令支持以下Modbus地址:

00001至09999是离散输出(线圈)

10001至19999是离散输入(触点)

30001至39999是输入存放器(通常是模拟量输入)

40001至49999是保持存放器

所有Modbus地址均以1为基位,表示第一个数据值从地址1开始。

有效地址范围将取决于从站。

不同的从站将支持不同的数据类型和地址范围。

6.Modbus从站寻址

Modbus地址通常被写为包含数据类型和偏移量的5个字符的数值。

第一个字符决定数据类型,最后四个字符在数据类型中选择适当的数值。

然后,Modbus主设备将地址映射至正确的功能。

Modbus从站指令支持以下地址:

00001至00128是映射至Q0.0-Q15.7的离散输出

10001至10128是映射至I0.0-I15.7的离散输入

30001至30032是映射至AIW0至AIW62的模拟输入存放器

40001至4xxxx是映射至V存储器的保持存放器。

所有Modbus地址均以1为基位。

下表显示映射至S7-200地址的Modbus地址。

Modbus地址S7-200地址

00001Q0.0

00002Q0.1

00003Q0.2

......

00127Q15.6

00128Q15.7

10001I0.0

10002I0.1

10003I0.2

......

10127I15.6

10128I15.7

30001AIW0

30002AIW2

30003AIW4

......

30032AIW62

40001HoldStart

40002HoldStart+2

40003HoldStart+4

......

4xxxxHoldStart+2x(xxxx-1)

Modbus从站协议允许您限制Modbus主设备可存取的输入、输出、模拟输入和保持存放器(V存储器)数量。

MBUS_INIT指令的MaxIQ参数指定Modbus主设备允许存取的离散输入或输出(I或Q)的最大数目。

MBUS_INIT指令的MaxAI参数指定Modbus主设备允许存取的输入存放器(AIW)的最大数目。

MBUS_INIT指令的MaxHold参数指定Modbus主设备允许存取的保持存放器(V存储器字)的最大数目。

请参阅MBUS_INIT指令说明,了解有关为Modbus从站设定存储器限制的进一步详情。

7.Modbus主设备MBUS_MSG执行错误代码

MBUS_MSG

错误代码说明

0无错误

1应答时奇偶校验错误:

仅当使用偶校验或奇校验时才会发生。

传输被干扰,可能会收到不正确的数据。

该错误通常是由电气故障(例如错误接线或者影响通讯的电噪声)引起的。

2未使用

3接收超时:

在"超时"时间内,没有来自从站的应答。

可能有以下一些原因:

与从站的电气连接有问题、主设备和从站设置为不同的波特率/奇偶校验设置,以及错误的从站地址。

4请求参数出错:

一个或多个输入参数(从站、读写、地址或计数)被设置为非法值。

检查文档中输入参数的允许值。

5Modbus主设备未启用:

在调用MBUS_MSG前,每次扫描时都调用MBUS_CTRL。

6Modbus忙于处理另一个请求:

一次只能激活一条MBUS_MSG指令。

7应答时出错:

收到的应答与请求不相关。

这表示从站中出现了某些错误,或者错误的从站应答了请求。

8应答时CRC错误:

传输被干扰,可能会收到不正确的数据。

该错误通常是由电气故障(例如错误接线或者影响通讯的电噪声)引起的。

101从站不支持在该地址处所请求的功能:

请参阅"使用Modbus主设备指令"帮助主题中的所需Modbus从站功能支持表。

102从站不支持数据地址:

"地址"加上"计数"所要求的地址范围超出了从站所允许的地址范围。

103从站不支持数据类型:

该"地址"类型不被从站支持。

104从站故障

105从站已接受消息但应答延迟:

这是MBUS_MSG的错误,用户程序应在稍后重新发送请求。

106从站忙,因此拒绝消息:

可以再次尝试相同的请求,以获得应答。

107从站因未知原因而拒绝消息

108从站存储器奇偶校验错误:

从站中有错误。

8.Modbus从站协议执行错误代码

错误代码说明

0无错误

1内存范围错误

2非法波特率或奇偶校验

3非法附属地址

4非法Modbus参数值

5保持存放器与Modbus附属符号重叠

6收到奇偶校验错误

7收到CRC错误

8非法功能请求/功能不受支持

9请求中的非法内存地址

10附属功能未启用

9.Modbus主设备高级用户信息

·返回的功能与请求不匹配(错误代码7)。

Modbus主设备将在设置"完成"和"错误"输出参数前,重新发送请求两个附加时间。

通过查找Modbus主设备符号表中的符号mModbusRetries然后在执行MBUS_CTRL后改变该值,可以更改重试次数。

mModbusRetries值是"字节"类型,重试范围是0至255。

内部字符超时

如果应答中字符之间的时间超出了指定的时间限制,Modbus主设备将中止来自从站的应答。

缺省时间设置为100毫秒,可允许Modbus主设备协议用于大多数有线或电话调制解调器联网的从站。

如果检测到该错误,MBUSCTRL"错误"参数将设置为错误代码3。

当字符之间需要较长的时间时,可能是因为传送介质(例如电话调制解调器)或者因为从站自身需要更多的时间。

通过查找Modbus主设备符号表中的符号mModbusCharTimeout然后在执行MBUS_CTRL

后改变该值,可以延长该超时时间。

mModbusCharTimeout值是"整型"类型,范围是1至少30000毫秒。

单个对多个位/字写入功能

某些Modbus从站不支持Modbus功能写入单个离散输出位(Modbus功能5)或写入单个保持存放器

(Modbus功能6)。

这些设备仅支持多个位写入(Modbus功能15)或多个存放器写入(Modbus功能16)。

如果从站不支持单个位/字Modbus功能,那么MBUS_MSG指令将返回错误代码101。

Modbus主设备协议允许强制MBUS_MSG指令,以使用多个位/字Modbus功能来取代单个的位/字

Modbus功能。

通过查找Modbus主设备符号表中的符号mModbusForceMulti然后在执行MBUS_CTRL

后改变该值,可以强制执行多个位/字指令。

mModbusForceMulti值是"布尔"数据类型,应该设置为"1"

以在写入单个位/存放器时强制使用多个位/字功能。

累加器用途

累加器(AC0、AC1、AC2,AC3)由Modbus主设备指令使用,并在"交叉参考"列表中显示。

累加器中的数值被Modbus主设备指令保存和恢复。

当执行Modbus主设备指令时,保存累加器中的所有用户数据。

保持存放器地址大于9999

Modbus保持地址通常在40001到49999的范围内。

该范围对大多数应用程序来说足够了,但是某些数据映射到保持存放器的Modbus从站所具有的地址超过9999。

这些设备不适合常规的Modbus寻址方案。

Modbus主设备指令支持通过可选的寻址方法对大于9999的保持存放器进行寻址。

MBUS_MSG指令允许参数"地址"具有附加范围以支持保持存放器地址的扩充范围。

400001至465536用于保持存放器

例如:

要访问保持存放器16768,MBUS_MSG的"地址"参数应该设置为416768。

扩充寻址允许访问Modbus协议支持的65536个可能地址的全部范围。

该扩充寻址仅支持保持存放器。

 

第二章使用Modbus主设备指令

前言:

欲在S7-200程序中使用Modbus主设备指令,请执行以下步骤:

1.在程序中插入MBUS_CTRL指令,并在每次扫描时执行MBUS_CTRL。

您可以使用MBUS_CTRL指令初始化或更改Modbus通讯参数。

当您插入MBUS_CTRL指令时,会在程序中自动增加几个受保护的子程序和中断例程。

2.使用协议库存储器命令,为Modbus主设备协议指令需要的V存储器指定一个起始地址。

3.将一条或多条MBUS_MSG指令放入程序中。

可以根据需要将尽可能多的MBUS_MSG指令放入程序中,但每次只能激活这些指令中的一条。

4.连接S7-200CPU上的端口0(或对端口1协议库是端口1)和Modbus从站之间的通讯电缆。

留神:

带有不同参考电位的互连装置会引起互连电缆中出现意外电流。

这些意外电流会引起通讯错误或损坏装置。

确保所有用通讯电缆连接的设备共享一个共用电路参考或单独隔离,以防不需要的电流通过。

Modbus主设备指令使用如下显示的Modbus功能读取或写入特定的Modbus地址。

Modbus从站必须支持所需的Modbus功能才能读取或写入特定的Modbus地址。

所需的Modbus从站功能支持Modbus地址

读取或写入

所需的Modbus从站功能

0000109999离散输出

读取

写入

功能1

功能5用于单个输出点功能15用于多个输出点

1000119999离散输出

读取

写入

功能2

不能

3000139999输入存放器

读取

写入

功能4

不能

4000149999保持存放器

读取

写入

功能3

功能6用于单个存放器功能16用于多个存放器

1.MBUS_CTRL指令(初始化主设备)

输入/输出

操作数

数据类型

模式

I,Q,M,S,SM,T,C,V,L

布尔

波特

VD,ID,QD,MD,SD,SMD,LD,AC,Constant,*VD,*AC,*LD

双字

奇偶校验

VB,IB,QB,MB,SB,SMB,LB,AC,Constant,*VD,*AC,*LD

字节

超时

VW,IW,QW,MW,SW,SMW,LW,AC,Constant,*VD,*AC,*LD

完成

I,Q,M,S,SM,T,C,V,L

布尔

错误

VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*L

字节

用于S7-200端口0的MBUS_CTRL指令(或用于端口1的MBUS_CTRL_P1指令)可初始化、监视或禁用Modbus通讯。

在使用MBUS_MSG指令之前,必须正确执行MBUS_CTRL指令。

指令完成后立即设定"完成"位,才能继续执行下一条指令。

在每次扫描且EN输入翻开时执行该指令。

MBUS_CTRL指令必须在每次扫描时(包括首次扫描)被调用,以允许监视随MBUS_MSG指令启动的任何突出消息的进程。

除非每次调用MBUS_CTRL,否那么Modbus主设备协议将不能正确运行。

"模式"输入数值选择通讯协议。

输入值1将CPU端口分配给Modbus协议并启用该协议。

输入值0将CPU端口分配给PPI系统协议并禁用Modbus协议。

"波特"参数将波特率设为1200、2400、4800、9600、19200、38400、57600或115200波特。

"奇偶校验"参数被设为与Modbus从站奇偶校验相匹配。

所有设置使用一个起始位和一个停止位。

可接受的数值为:

0-无奇偶校验

1-奇校验

2-偶校验

"超时"参数设为等待来自从站应答的毫秒时间数。

"超时"数值可以设置的范围为1毫秒到32767毫秒。

典型值是1000毫秒(1秒)。

"超时"参数应该设置的足够大,以便从站有时间对所选的波特率作出应答。

"超时"参数用于确定Modbus从站是否对请求做出应答。

"超时"值确定Modbus主设备在发送了请求的最后一个字符后,将要等待多长时间才会有应答的第一个字符。

如果在"超时"规定的时间内至少收到应答的一个字符,Modbus主设备将从Modbus从站接收到整个应答。

MBUS_CTRL指令完成时,"完成"输出翻开。

"错误"输出包含执行该指令的结果。

下表定义了在执行MBUS_CTRL指令时会产生的错误条件。

MBUS_CTRL

错误代码说明

0无错误

1奇偶校验选择无效

2波特率选择无效

3超时选择无效

4模式选择无效

2.MBUS_MSG指令

输入/输出

数据类型

操作数

首次

I,Q,M,S,SM,T,C,V,L(以上升沿检测元素为条件的功率流)

布尔

从站

VB,IB,QB,MB,SB,SMB,LB,AC,Constant,*VD,*AC,*LD

字节

读写

VB,IB,QB,MB,SB,SMB,LB,AC,Constant,*VD,*AC,*LD

字节

地址

VD,ID,QD,MD,SD,SMD,LD,AC,Constant,*VD,*AC,*LD

双字

计数

VW,IW,QW,MW,SW,SMW,LW,AC,Constant,*VD,*AC,*LD

整型

DataPtr

&VB

双字

完成

I,Q,M,S,SM,T,C,V,L

布尔

错误

VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*LD

字节

MBUS_MSG指令(或用于端口1的MBUS_MSG_P1)用于启动对Modbus从站的请求并处理应答。

当EN输入和"首次"输入翻开时,BUS_MSG指令启动对Modbus从站的请求。

发送请求、等待应答、并处理应答通常需要屡次扫描。

EN输入必须翻开以启用请求的发送,并应该保持翻开直到"完成"位被置位。

注释:

一次只能激活一条MBUS_MSG指令。

如果启用了多条MBUS_MSG指令,那么将处理所执行的第一条MBUS_MSG指令,之后的所有MBUS_MSG指令将中止并产生错误代码6。

"首次"参数应该在有新请求要发送时才翻开以进行一次扫描。

"首次"输入应当通过一个边沿检测元素(例如上升沿)翻开,这将导致请求被传送一次。

"从站"参数是Modbus从站的地址。

允许的范围是0到247。

地址0是播送地址,只能用于写请求。

不存在对地址0的播送请求的应答。

并非所有的从站会支持播送地址。

S7-200Modbus从站协议库不支持播送地址。

"读写"参数指定是否要读取或写入该消息。

"读写"参数允许使用以下两个值:

0-读,1-写。

离散输出(线圈)和保持存放器支持读取和写入请求。

离散输入(触点)和输入存放器仅支持读取请求。

"地址"参数是起始的Modbus地址。

允许使用以下取值范围:

00001至09999是离散输出(线圈);10001至19999是离散输入(触点);30001至39999是输入存放器;40001至49999是保持存放器"地址"的指定取值范围基于Modbus从站支持的地址。

"计数"参数指定在该请求中读取或写入的数据元素的数目。

"计数"值是位数(对于位数据类型)和字数(对于字数据类型)。

地址0xxxx-"计数"是要读取或写入的位数。

地址1xxxx-"计数"是要读取的位数。

地址3xxxx-"计数"是要读取的输入存放器的字数。

地址4xxxx-"计数"是要读取或写入的保持存放器的字数。

MBUS_MSG指令将读取或写入最大120个字或1920个位(240字节的数据)。

"计数"的实际限值将取决于Modbus从站中的限制。

"DataPtr"参数是指向S7-200CPU的V存储器中与读取或写入请求相

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1