西门子Modbus_TCP低版本PLC作为客户端使用.docx

西门子Modbus_TCP低版本PLC作为客户端使用.docx

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

S7-1200集成PN接口MODBUSTCP通信概述

ModbusTCP是标准的网络通信协议,通过CPU上PN接口进行TCP/IP通信,不需要额外的通信硬件模块,ModbusTCP使用开放式用户通信连接作为Modbus通信路径,所支持的混合客户机和服务器连接数最大为CPU所允许的最大开放式用户通信连接数8个。

软件STEP7V11SP1版本开始,S7-1200CPU从FirmwareV1.0.2开始,不再需要安装ModbusTCP的库文件,可以直接调用ModbusTCP的库指令“MB_CLIENT”和“MB_SERVER”使用实现ModbusTCP通信功能,如图1所示。

图1.ModbusTCP的库指令

S7-1200做ModbusTcpClient(客户端)

MB_CLIENT进行客户机和服务器TCP连接、发送命令消息、接收响应以及控制服务器的断开。

1.调用MB_CLIENT通信指令,进入“Programblocks”“OB1”主程序中,调用MODBUSTCP客户机指令,如图2所示。

图2.MB_CLIENT通信指令

功能块参数意义如下表1.:

管脚

说明

REQ

使能:False-无Modbus通讯请求,True-请求与服务器通讯,Done完成位来后才可以执行下次请求,建议采用上升沿触发请求;

DISCONNECT

控制与服务器建立和终止连接:0-建立与指定IP地址和端口号的通讯连接,默认为0;1-断开通讯连接,在终止连接的过程中,不执行任何其他功能;

CONNECT_ID

连接的ID号:每个连接只有一个唯一的ID号;

IP_OCTET_1~4

服务器的IP地址:如图2.中通讯对方的IP地址是192.168.0.210;

IP_PORT

服务器上使用TCP/IP协议与客户端建立通讯的IP端口号,默认值:502;

MB_MODE

选择请求模式(读取、写入或诊断),具体对照参照表1.;

MB_DATA_ADDR

访问数据的起始地址;

MB_DATA_LEN

数据长度:数据访问的位数或字数;

MB_DATA_PRT

指向Modbus数据寄存器的指针:用于缓存从Modbus服务器接收的数据或将发送到Modbus服务器数据的缓冲区,可以是DB块或M区,如果是DB块则需要定义为“标准与S7-300/400兼容”的类型,见下图3;

DONE

完成位:作业完成,无错误,该位置1;

BUSY

作业状态位:0-当前没有正在处理的“MB_CLIENT”作业;1-“MB_CLIENT”作业正在处理;

ERROR

错误位:0-无错误;1-出现错误,错误原因查看STATUS;

STATUS

错误代码;

表1.功能块参数意义

2.MB_DATA_PTR数据块的新建

通过“Programblocks”“Addnewblock”,选择“Datablock”创建DB块,选择“标准与S7-300/400兼容”,点击“OK”键,定义数据区为100个字的数组,如图3所示。

图3.创建MB_DATA_PTR数据块

3.MB_MODE、MB_DATA_ADDR和功能码的关系

MB_CLIENT指令中,MB_MODE、MB_DATA_ADDR和MB_DATA_LEN三个参数组合定义了当前Modbus消息中所用的功能代码,如表2.。

Modbus功能

MB_MODE

MB_DATA_ADDR

操作和数据类型

数据长度

FC01

0

00001~09999

读取输出位每个请求1~2000个位

1~2000

FC02

0

10001~19999

读取输入位每个请求1~2000个位

1~2000

FC03

0

40001~49999或400001~465535

读取保持寄存器每个请求1~125个字

1~125

FC04

0

30001~39999

读取输入字每个请求1~125个字

1~125

FC05

1

00001~09999

写一个输出位每个请求1个位

1

FC06

1

40001~49999或400001~465535

写一个保持寄存器每个请求1个字

1

FC15

1

00001~09999

写多个输出位每个请求2~1968个位

2~1968

FC16

1

40001~49999或400001~465535

写多个保持寄存器每个请求2~123个字

2~123

FC15

2

00001~09999

写一个或多个输出位每个请求1~1968个位

1~1968

FC16

2

40001~49999或400001~465535

写一个或多个保持寄存器每个请求1~123个字

1~123

FC11

11

?

读取服务器通信状态字和事件计数器:状态字反映处理状态

文档评论(0)

159****5811 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档