modbustcpclient事例1Word文件下载.docx

上传人:b****1 文档编号:3914266 上传时间:2023-05-02 格式:DOCX 页数:18 大小:318.26KB
下载 相关 举报
modbustcpclient事例1Word文件下载.docx_第1页
第1页 / 共18页
modbustcpclient事例1Word文件下载.docx_第2页
第2页 / 共18页
modbustcpclient事例1Word文件下载.docx_第3页
第3页 / 共18页
modbustcpclient事例1Word文件下载.docx_第4页
第4页 / 共18页
modbustcpclient事例1Word文件下载.docx_第5页
第5页 / 共18页
modbustcpclient事例1Word文件下载.docx_第6页
第6页 / 共18页
modbustcpclient事例1Word文件下载.docx_第7页
第7页 / 共18页
modbustcpclient事例1Word文件下载.docx_第8页
第8页 / 共18页
modbustcpclient事例1Word文件下载.docx_第9页
第9页 / 共18页
modbustcpclient事例1Word文件下载.docx_第10页
第10页 / 共18页
modbustcpclient事例1Word文件下载.docx_第11页
第11页 / 共18页
modbustcpclient事例1Word文件下载.docx_第12页
第12页 / 共18页
modbustcpclient事例1Word文件下载.docx_第13页
第13页 / 共18页
modbustcpclient事例1Word文件下载.docx_第14页
第14页 / 共18页
modbustcpclient事例1Word文件下载.docx_第15页
第15页 / 共18页
modbustcpclient事例1Word文件下载.docx_第16页
第16页 / 共18页
modbustcpclient事例1Word文件下载.docx_第17页
第17页 / 共18页
modbustcpclient事例1Word文件下载.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

modbustcpclient事例1Word文件下载.docx

《modbustcpclient事例1Word文件下载.docx》由会员分享,可在线阅读,更多相关《modbustcpclient事例1Word文件下载.docx(18页珍藏版)》请在冰点文库上搜索。

modbustcpclient事例1Word文件下载.docx

IP_OCTET_1

USINT

1.ModbusTCP服务器IP地址*中的八位字节。

IP_OCTET_2

2.ModbusTCP服务器IP地址*中的八位字节。

IP_OCTET_3

3.ModbusTCP服务器IP地址*中的八位字节。

IP_OCTET_4

4.ModbusTCP服务器IP地址*中的八位字节。

IP_PORT

服务器上使用TCP/IP协议与客户端建立连接和通信的IP端口号(默认值:

502).

MB_MODE

选择请求模式(读取、写入或诊断)。

MB_DATA_ADDR

UDINT

由“MB_CLIENT”指令所访问数据的起始地址。

DATA_LEN

数据长度:

数据访问的位数或字数(请参见“MB_MODE和MB_DATA_ADDR参数”-数据长度)。

MB_DATA_PTR

InOut

VARIANT

指向Modbus数据寄存器的指针:

寄存器是用于缓存从Modbus服务器接收的数据或将发送到Modbus服务器的数据的缓冲区。

该指针必须引用具有标准访问权限的全局数据块。

寻址到的位数必须除以8。

DONE

Out

只要最后一个作业成功完成,立即将输出参数DONE的位置位为“1”。

BUSY

当前没有正在处理的“MB_CLIENT”作业

"

MB_CLIENT”作业正在处理中

ERROR

无错误

出错。

出错原因由参数STATUS指示。

STATUS

WORD

指令的错误代码。

*ModbusTCP服务器32位IPv4IP地址中的8位长度的部分。

有关有效数据类型的更多信息,请参见“有效数据类型概述”。

说明

“MB_CLIENT”调用过程中统一输入数据

Modbus客户端调用Modbus指令时,输入参数的状态将存储在内部,并在下一次调用时比较。

这种比较用于确定这一特定调用是否初始化当前请求。

如果使用一个通用背景数据块,那么可以执行多个“MB_CLIENT”调用。

在执行“MB_CLIENT”实例的过程中,不得更改输入参数的值。

如果在执行过程中更改了输入参数,那么将无法使用“MB_CLIENT”检查实例当前是否正在执行。

多个客户端连接

ModbusTCP客户端可以支持多个TCP连接,连接的最大数目取决于所使用的CPU。

一个CPU的总连接数,包括ModbusTCP客户端和服务器的连接数,不能超过所支持的最大连接数。

ModbusTCP连接也可以由客户端和/或服务器连接共享。

使用各客户端连接时,请记住以下规则:

每个“MB_CLIENT”连接都必须使用唯一的背景数据块。

对于每个“MB_CLIENT”连接,必须指定唯一的服务器IP地址。

每个“MB_CLIENT”连接都需要一个唯一的连接ID。

该指令的各背景数据块都必须使用各自相应的连接ID。

连接ID与背景数据块组合成对,对每个连接,组合对都必须唯一。

根据服务器组态,可能需要或不需要IP端口的唯一编号。

该指令的静态变量

下表列出了“MB_CLIENT”指令背景数据块的可编辑静态变量。

变量

起始值

Blocked_Proc_Timeout

REAL

3.0

如果有一个被阻止的Modbus实例,则为复位静态变量ACTIVE前的等待时间(单位为秒)。

例如,如果输出了一个客户端请求,而且在该请求完全执行之前中止执行客户端功能,则可能发生这种情况。

最大等待时间为55秒。

MB_Transaction_ID

1

ModbusTCP协议的事务ID。

只有在ModbusTCP服务器需要一个不同值的情况下,才能更改起始值“1”。

MB_Unit_ID

BYTE

255

Modbus协议的单元ID。

该变量对应于ModbusRTU协议的从站地址。

只有在将ModbusTCP服务器用作一个网关,同时由Modbus服务器中应用程序进行控制时,才能更改此值。

RCV_TIMEOUT

2.0

“MB_CLIENT”指令等待服务器响应的时间间隔(单位为秒)。

Connected

指示是否已建立与所指定客户端的连接:

1=已连接,0=未连接。

二、REQ和DISCONNECT参数

如果当前未执行“MB_CLIENT”指令的实例,并且DISCONNECT参数的值为“0”,那么将在REQ=1时执行新作业。

如果尚无连接,将在执行期间建立一个连接。

如果在执行该活动作业之前再次执行“MB_CLIENT”指令的相同实例(DISCONNECT=0且REQ=1),那么不会在活动作业完成时执行该实例。

只有在活动作业完成时,才能启动新作业(REQ=1)。

可以使用DONE参数监视执行状态。

如果顺序执行“MB_CLIENT”指令,那么可以使用该参数监视执行状态。

三、MB_MODE和MB_DATA_ADDR参数

“MB_CLIENT”指令将使用MB_MODE参数,而不是函数代码。

MB_DATA_ADDR参数用于指定待访问的数据的Modbus起始地址。

MB_MODE和MB_DATA_ADDR参数的组合定义了当前Modbus消息中所使用的函数代码。

下表列出了MB_MODE参数、Modbus功能和地址空间之间的关系。

MB_MODE

Modbus功能

数据长度

功能和数据类型

MB_DATA_ADDR

01

1到2000

读取输出位:

每个调用1到2000位

1到9999

02

读取输入位:

10001到19999

03

1到125

读取保持寄存器:

每个调用1到125WORD

40001到49999

04

读取输入字:

30001到39999

05

写入输出位:

每个调用1位

06

写入保持寄存器:

1WORD每个调用

40001到49999

15

2到1968

写入多个输出位:

每个调用2到1968位

16

2到123

写入多个保持寄存器:

每个调用2到123WORD

2

1到1968

写入一个或多个输出位:

每个调用1到1968位

2

16

1到123

写入一个或多个保持寄存器:

每个调用1到123WORD

11

读取服务器通信的状态字和事件计数器:

状态字反映了处理的状态(0-未处理,0xFFFF-正在处理)

每次成功发送一条消息时,事件计数器都将递增。

执行该功能时,将不计算“MB_CLIENT”指令的MB_DATA_ADDR和MB_DATA_LEN参数。

-

80

08

通过错误代码0x0000检查服务器状态(返回循环测试-服务器发回请求):

81

08

通过错误代码0x000A复位服务器的事件计数器:

3到10、

12到79、

82到255

预留

四、MB_DATA_PTR参数

MB_DATA_PTR参数是一个指向数据缓冲区的指针,该缓冲区用于存储从Modbus服务器读取或写入Modbus服务器的数据。

作为数据缓冲区,可以使用全局数据块或存储区域(M)。

对于存储区域(M)中的缓冲区,可通过以下方式使用ANY格式的指针:

“P#位地址”“数据类型”“长度”(例如:

P#M1000.0WORD500).

MB_DATA_PTR参数使用一个通信缓冲区:

对于“MB_CLIENT”指令的通信功能:

读取和写入Modbus服务器地址00001到09999和10001到19999的1位数据。

读取Modbus服务器地址30001到39999和40001到49999的16位WORD数据。

写入Modbus服务器地址40001到49999的16位WORD数据。

在从/向全局DB或由MB_DATA_PTR参数指定的存储区(M)进行数据传输的过程中(长度:

位或WORD)。

如果在MB_DATA_PTR参数中使用该缓冲区的一个数据块,那么需要为DB元素指定数据类型。

对于Modbus位地址,将使用1位的数据类型BOOL

对于ModbusWORD地址,将使用16位的数据类型,如WORD、UINT、INT或REAL。

对于2个ModbusWORD地址,将使用32位的数据类型(双字),如DWORD、DINT或REAL。

通过MB_DATA_PTR,还可以访问复杂的DB元素,如:

标准数组

元素名称唯一的结构

元素名称唯一且数据类型长度为16或32位的复杂结构。

MB_DATA_PTR参数的数据区可以在不同的全局数据块中(或在不同的存储区中)。

例如,可以根据读作业和写作业使用不同的数据块,或者为每个“MB_CLIENT”站使用单独的数据块。

参数STATUS(常规状态信息)

STATUS*(W#16#)

0000

指令已无错执行完毕。

0001

连接已建立。

0003

连接被终止。

7000

未激活任何调用(REQ=0)。

7001

首次调用时,REQ=1:

启动处理;

BUSY的值为1。

7002

中间调用(与REQ无关)。

处理已激活;

7003

正在终止连接。

7004

连接已建立且处于受监视状态。

未激活任何作业处理。

7005

已发送数据。

7006

已接收数据。

80BB

ACTIVE_EST参数值无效(建立此类连接的标识符,请参见T_CON_PARAM):

只允许对服务器建立被动连接(ACTIVE_EST=FALSE)。

只允许对客户端建立主动连接(ACTIVE_EST=TRUE)。

8380

接收的Modbus帧格式错误或接收到的字节过少。

*在程序编辑器中,错误代码可显示为整数或十六进制值。

有关切换显示格式的更多信息,请参见“另请参见”。

五、参数STATUS

参数STATUS(协议错误)

响应Modbus客户端的代码(B#16#)

8381

不支持功能代码。

8382

数据长度错误。

8383

数据地址错误或访问MB_DATA_PTR地址以外的区域。

8384

数据值错误。

8385

不支持诊断错误代码(功能代码08)。

参数STATUS(参数错误)

除了下表列出的错误还可能发生由通信指令(“TCON”、“TDISCON”、“TSEND”和“TRCV”)引起的“MB_CLIENT”指令错误。

80C8

在指定的时间段中,服务器无响应。

请检查与Modbus服务器的连接。

只有在尝试了所组态的可重复尝试次数之后,才会报告该错误。

如果“MB_CLIENT”指令在指定时间内没有收到最初传输事务ID(MB_TRANSACTION_ID变量)的应答,则输出该错误代码。

8188

参数MB_MODE的值无效。

8189

MB_DATA_ADDR参数的数据地址无效。

818A

MB_DATA_LEN参数中的数据长度无效。

818B

参数MB_DATA_PTR中的指针无效。

请检查MB_DATA_ADDR和MB_DATA_LEN参数的值。

818C

MB_DATA_PTR指针将引用一个已优化的数据块。

既可以使用一个具有标准访问权限的数据块,也可以使用一个存储区

参数BLOCKED_PROC_TIMEOUT超时(请参见指令的静态变量)。

已超出55秒的限制。

818D

事务ID(MB_TRANSACTION_ID变量)与最初发送的ID不一致(请参见指令的静态变量)。

8200

该端口正在处理另一个Modbus请求。

MB_CLIENT具有相同连接参数的另一实例正在处理现有Modbus请求。

接收到的已传输Modbus数据块格式不正确或接收到的字节过少。

8386

接收到的功能代码与最初发送的代码不一致。

8387

指定的连接ID与之前请求的不同。

“MB_CLIENT”指令的各背景数据块,只能使用一个连接ID。

服务器收到的ModbusTCP协议ID不为“0”时,也会输出错误代码。

8388

Modbus服务器发送的数据长度与所请求的不同。

只有使用Modbus功能15或16时才会发生这种错误。

内部使用的通信指令的错误代码。

对于“MB_CLIENT”指令,除了会发生表中列出的错误外,还会发生由该指令所使用的通信指令(“TCON”、“TDISCON”、“TSEND”和“TRCV”)所引起的错误。

错误代码通过“MB_CLIENT”指令的背景数据块来指定。

相应指令的错误代码会显示在Static部分中的STATUS下。

错误代码的含义在相应通信指令文档中提供。

六、MB_CLIENT示例1:

通过TCP连接发送多个请求

通过一个TCP连接,发送多个Modbus客户端请求。

为此,需使用相同的背景数据块、相同的连接ID和相同的端口号。

每次只能激活一个客户端。

处理完一个客户端后,再继续处理下一个。

必须在程序中定义执行顺序。

在下列样本程序中,还将复制STATUS输出参数的值。

程序段1:

Modbus功能1-16个读取输出位

程序段2:

Modbus功能2-32个读取输入位

七、MB_CLIENT示例2:

通过多个TCP连接发送多个请求

通过不同的TCP连接,发送多个Modbus客户端请求。

为此,则需使用不同的背景数据块和不同的连接ID。

如果连接指向相同的Modbus服务器,则使用不同的端口号。

如果连接指向不同的Modbus服务器,则可以任意指定端口号。

Modbus功能4-读取输入(WORD)

Modbus功能3-读取保持寄存器(WORD)

八、MB_CLIENT示例3:

协调多个请求

确保执行了所有的Modbus请求。

可以通过程序协调各请求。

在以下示例中,演示了如何使用该指令协调第一客户端和第二个客户端请求的输出参数。

九、MB_SERVER示例:

多个TCP连接

可以使用多个ModbusTCP服务器连接。

为此,每个连接都必须单独调用“MB_SERVER”指令。

每个连接都需要下列数据:

指令的一个独立背景数据块

唯一的连接ID

单独的IP端口(在S7-1200上,每个IP端口只允许一个连接)

为了优化性能,每个连接的每个程序循环中都应执行“MB_SERVER”指令。

带有相关IP端口连接ID和背景数据块的连接#1

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

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2