s71200 modbus 通讯指令解析.docx

上传人:b****1 文档编号:2395271 上传时间:2023-05-03 格式:DOCX 页数:19 大小:800.58KB
下载 相关 举报
s71200 modbus 通讯指令解析.docx_第1页
第1页 / 共19页
s71200 modbus 通讯指令解析.docx_第2页
第2页 / 共19页
s71200 modbus 通讯指令解析.docx_第3页
第3页 / 共19页
s71200 modbus 通讯指令解析.docx_第4页
第4页 / 共19页
s71200 modbus 通讯指令解析.docx_第5页
第5页 / 共19页
s71200 modbus 通讯指令解析.docx_第6页
第6页 / 共19页
s71200 modbus 通讯指令解析.docx_第7页
第7页 / 共19页
s71200 modbus 通讯指令解析.docx_第8页
第8页 / 共19页
s71200 modbus 通讯指令解析.docx_第9页
第9页 / 共19页
s71200 modbus 通讯指令解析.docx_第10页
第10页 / 共19页
s71200 modbus 通讯指令解析.docx_第11页
第11页 / 共19页
s71200 modbus 通讯指令解析.docx_第12页
第12页 / 共19页
s71200 modbus 通讯指令解析.docx_第13页
第13页 / 共19页
s71200 modbus 通讯指令解析.docx_第14页
第14页 / 共19页
s71200 modbus 通讯指令解析.docx_第15页
第15页 / 共19页
s71200 modbus 通讯指令解析.docx_第16页
第16页 / 共19页
s71200 modbus 通讯指令解析.docx_第17页
第17页 / 共19页
s71200 modbus 通讯指令解析.docx_第18页
第18页 / 共19页
s71200 modbus 通讯指令解析.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

s71200 modbus 通讯指令解析.docx

《s71200 modbus 通讯指令解析.docx》由会员分享,可在线阅读,更多相关《s71200 modbus 通讯指令解析.docx(19页珍藏版)》请在冰点文库上搜索。

s71200 modbus 通讯指令解析.docx

s71200modbus通讯指令解析

S7-1200 作为ModbusRTU主站

S7-1200支持ModbusRTU通信形式的模块可作为ModbusRTU主站。

以下以CPU1215CDC/DC/DC和CM1241RS485模块为例,介绍S7-1200ModbusRTU主站通信组态及编程步骤。

硬件和软件需求及所完成的通信任务:

硬件:

①CPU1215CDC/DC/DC(订货号:

6ES7215-1AG31-0XB0)

②CM1241RS485(订货号:

6ES7241-1CH30-0XB0)

③PS307电源〔订货号:

6ES7307-1KA02-0AA0〕 

④PC(带以太网卡〕 

⑤TP以太网电缆

软件:

①STEP7ProfessionalV11SP2UPD4+HSP

②ModSim(该软件是第三方软件,可以从Internet网络下载)

所完成的通信任务:

将ModbusRTU从站ModSim中Modbus地址从40001开场的5个字中的数据,分别读取到ModbusRTU主站CPU1215C中地址从开场的5个字中。

1.组态ModbusRTU通信模块

在硬件目录里找到“通信模块〞→“点到点〞→“CM1241(RS485)〞,双击或拖拽此模块至CPU左侧即可,如下列图1所示:

图1组态通信模块

接下来,在“设备视图〞中用鼠标选中CM1241(RS485)模块,在“属性〞→“端口组态〞中配置此模块硬件接口参数。

如下列图2所示:

以下以传输率,奇偶校验=无奇偶校验,数据位=8位字符,停顿位=1,其它保持默认设置为例。

图2RS485端口设置

最后在“硬件标识符〞里确认一下硬件标识符为271,如下列图3所示:

图3硬件标识符

2.添加启动OB

在工程树下选择“CPU1215CDC/DC/DC〞→“程序块〞→“添加新块〞,在弹出的窗口中选择“OB组织块〞→“Startup〞,添加启动OB100,如下列图4所示:

图4添加启动OB

3.调用MB_COMM_LOAD指令

为使端口一启动就被设置为ModbusRTU通信形式,可在OB100中调用“MB_COMM_LOAD〞指令。

调用“MB_COMM_LOAD〞指令时会自动弹出创立相应背景数据块的界面,如下列图5所示:

图5调用MB_COMM_LOAD指令

点击“确认〞为该指令创立背景数据块后,为各输入/输出引脚分配地址。

尤其需注意MB_DB输入引脚需指向“MB_MASTER〞指令的背景数据块,如下列图6所示:

注意:

 “MB_COMM_LOAD〞指令输入位“REQ〞需使用上升沿触发。

由于OB100只在S7-1200启动时执行一次,因此,此例中将“REQ〞设为“TRUE〞。

图6MB_COMM_LOAD指令

MB_COMM_LOAD指令参数意义如下表1所示:

引脚

说明

EN

使能端

REQ

在上升沿执行该指令

PORT

通信端口的硬件标识符

BAUD

波特率选择:

3600,6000,12000,2400,4800,9600,19200,38400,57600,76800,115200〔注意:

所有其它值均无效〕

PARITY

奇偶检验选择:

0-无;1-奇校验;2-偶校验

FLOW_CTRL

流控制选择:

0-〔默认值〕无流控制

RTS_ON_DLY

RTS延时选择:

0-〔默认值〕

RTS_OFF_DLY

RTS关断延时选择:

0-〔默认值〕

RESP_TO

响应超时:

默认值=1000ms。

MB_MASTER允许用于从站响应的时间〔以毫秒为单位〕。

MB_DB

对MB_MASTER或MB_SLAVE指令所使用的背景数据块。

DONE

完成位:

指令执行完成且未出错置1

ERROR

错误位:

0-未检测到错误;1-检测到错误。

在参数STATUS中输出错误代码。

STATUS

端口组态错误代码

表1MB_COMM_LOAD指令参数意义

4.创立DATA_PTR数据发送、接收缓冲区

通过“程序块〞→“添加新块〞,选择“数据块〔DB〕〞创立DB块,选择“标准与S7-300/400兼容〞,点击“确认〞键。

在DB中创立数据类型为5个字的数组,如下列图7所示:

注意:

DATA_PTR数据发送、接收缓冲区使用的DB访问类型必须是标准与S7-300/400兼容。

图7创立DATA_PTR数据发送、接收缓冲区

5.调用MB_MASTER指令

在OB1中调用“MB_MASTER〞指令,调用该指令时会自动弹出创立相应背景数据块的界面,如下列图8所示:

图8调用MB_MASTER指令

点击“确认〞为该指令创立背景数据块后,并为各输入/输出引脚分配地址,如下列图9所示:

注意:

“MB_MASTER〞指令的输入位“REQ〞必须使用上升沿触发。

以下以S7-1200作为ModbusRTU主站,用F03功能码读取ModbusRTU从站2,从Modbus地址40001开场的五个字,接收的数据存放在缓冲区开场区域为例。

设置如下所示:

MB_ADDR=2,MODE=0,DATA_ADDR=40001,DATA_LEN=5。

地址对应关系如下表2所示:

ModbusRTU主站CPU1215C数据缓冲区地址

ModbusRTU从站Modbus地址

40001

40002

40003

40004

40005

表2Modbus地址对应关系

图9MB_MASTER指令

MB_MASTER指令参数意义如下表3所示:

引脚

说明

EN

使能端

REQ

在上升沿执行该指令,恳求将数据发送或读取到Modbus从站

MB_ADDR

ModbusRTU从站地址。

默认地址范围:

0至247;扩展地址范围:

0至65535。

值0被保存用于将消息播送到所有Modbus从站。

MODE

形式选择:

指定恳求类型

DATA_ADDR

从站中的起始地址:

指定Modbus从站中将供访问的数据的起始地址。

DATA_LEN

数据长度:

指定要在该恳求中访问的位数或字数。

DATA_PTR

数据指针:

指向要写入或读取的数据的M或DB地址〔DB访问类型必须是标准与S7-300/400兼容〕。

DONE

完成位:

上一恳求已完成且没有出错后,DONE位将保持为TRUE一个扫描周期时间。

BUSY

0–无正在进展的MB_MASTER操作;1–MB_MASTER操作正在进展

EEROR

错误位:

上一恳求因错误而终止后,ERROR位将保持为TRUE一个扫 

描周期时间。

STATUS参数中的错误代码值仅在ERROR=TRUE的一个扫描周期内有效。

STATUS

错误代码

表3MB_MASTER指令参数意义

关于MODE,DATA_ADDR,DATA_LEN可在下表4中查看:

MB_MASTERModbus功能

 

Modbus地址参数

地址类型

Modbus数据长度参数

Modbus功能

形式0

读取

00001到09999

输出位

1到2000

01

10001到19999

输入位

1到2000

02

30001到39999

输入存放器

1到125

04

40001到49999

400001到465535〔扩展〕

保持存放器

1到125

03

形式1

写入

00001到09999

输出位

1〔单个位〕

05

40001到49999

400001到465535〔扩展〕

保持存放器

1〔单个字〕

06

00001到09999

输出位

2到1968

15

40001到49999

400001到465535〔扩展〕

保持存放器

2到123

16

形式2

有些Modbus从站不支持使用Modbus功能05H或06H写入单个位或字。

在这样的情况下,可通过形式2强迫使用Modbus功能15H或16H写入单个位或字

写入

 

00001到09999

输出位

2到1968

15

40001到49999

400001到465535〔扩展〕

保持存放器

1到123

16

形式11

读出从站的通信状态字和事件计数器:

状态字指示指令的执行状态〔0:

未在执行;0xFFFF:

正在执行〕。

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

使用该功能时,忽略“MB_MASTER〞指令的DATA_ADDR和DATA_LEN参数。

形式80

通过读取错误代码(0x0000)检查从站状态:

每个恳求1个字

形式81

通过诊断代码0x000A复位从站的事件计数器:

每个恳求1个字

表4MB_MASTERModbus功能表

6.Modbus从站软件设置

注意:

ModbusRTU从站采用ModSim软件测试,该软件是第三方软件,可以从Internet网络下载。

在翻开的ModSim软件中建立连接,并设置RTU形式的参数:

波特率Baud=9600,数据位Data=8,停顿位Stop=1,校验Parity=NONE,如下列图10所示:

图10建立ModSim连接

选择“File〞→“New〞翻开ModSim通信界面,设置ModbusRTU从站的地址DeviceId=2,开场地址Address=0001,数据长度Length=5,Modbus数据类型功能码03。

分别双击各Modbus地址后的数据区,出现“WriteRegister"对话框,在此写入数据值,如下列图11所示:

注意:

DeviceId设置必须与“MB_MASTER〞指令中输入引脚“MB_ADDR〞设置的地址一致。

图11设置ModSim

7.ModbusRTU测试结果

在STEP7ProfessionalV11UPD4软件中翻开该工程CPU1215CDC/DC/DC的“监控表〞,触发“MB_MASER〞指令的输入位。

ModbusRTU主站将ModSim从站地址40001中的数值11,40002中的数值12,40003中的数值13,40004中的数值14,40005中的数值15,分别读取到了地址,,,,中,如下列图12所示:

图12ModbusRTU测试结果

S7-1200ModbusRTU通信形式的多地址或多站点轮询

多个CM1241RS485通讯模块之间可以使用PROFIBUS电缆互相连接。

可以将1个主站和最多31个MODBUS从站使用PROFIBUS电缆连接组网。

S7-1200ModbusRTU轮询需要通过上一条〞MB_MASTER“指令输出位“Done“=1来触发下一条“MB_MASTER“指令。

详细说明及编程思路请参考以下链接:

如何使用STEP7(TIAPortal)V11为SIMATICS7-1200建立ModbusRTU通讯?

MB_COMM_LOAD和MB_MASTER指令STATUS错误代码

STATUS(W#16#)

说明

0000

端口无错误

8180

端口ID值无效

8181

波特率值无效

8182

奇偶校验值无效

8183

流控制值无效

8184

响应超时值无效

8185

MB_DB参数不是MB_MASTER或MB_SLAVE的背景数据块

表5MB_COMM_LOAD指令STATUS错误代码

 

STATUS(W#16#)

说明

0000

无错误

80C8

从站超时。

检查波特率,奇偶校验和从站的接线

80D1

接收方发出了暂停主动传输的流控制恳求并在指定的等待时间内未重新激活该传输。

假如接收方在等待时间内未检测到CTS,那么在硬件流控制期间也会生成该错误。

80D2

由于没有从DCE接收到DSR信号,传送恳求终止

80E0

接收缓冲区已满,消息被终止

80E1

奇偶校验错误,消息被终止

80E2

组帧错误,消息被终止

80E3

超时错误,消息被终止

80E4

指定长度超出总缓冲区大小,消息被终止

8180

无效端口ID值

8186

Modbus站地址无效

8188

对于播送调用,参数MODE的值无效。

8189

数据地址值无效

818A

数据长度值无效

818B

指向本地数据源/目的的指针无效

818C

DATA_PTR的指针无效:

使用指向位存储区或访问类型为“标准-与S7-300/400兼容〞的数据块的指针。

8200

端口正忙于处理传送恳求

表6MB_MASTER指令STATUS错误代码〔指令的通信和组态错误消息〕

 

STATUS(W#16#)

从站的响应代码

说明

8380

-

CRC错误

8381

01

不支持此功能码

8382

03

数据长度错误

8383

02

数据地址错误或地址超出DATA_PTR的有效范围

8384

>03

数据值错误

8385

03

不支持此数据诊断代码

8386

-

响应中的功能代码与传送中的功能代码不匹配

8387

-

响应的从站错误

8388

-

从站对写恳求的响应不正确

表7MB_MASTER指令STATUS错误代码〔Modbus协议的错误消息〕

常问问题:

如何检查S7-1200通信模块CM1241是否已被成功设置为ModbusRTU通信形式?

可在程序或监控表中查看“MB_COMM_LOAD〞指令的输出位“DONE〞,“ERROR〞以及“STATUS〞状态来判断S7-1200通信模块CM1241是否已被成功设置为ModbusRTU通信形式。

∙假如该模块被成功设置为ModbusRTU通信形式:

“MB_COMM_LOAD〞指令输出位“DONE〞=1,“ERROR〞=0,输出状态字“STATUS〞=0;

∙假如该模块未被成功设置为ModbusRTU通信形式:

“MB_COMM_LOAD〞指令输出位“DONE〞=0,“ERROR〞=1,输出状态字“STATUS〞输出错误代码。

详细错误原因可查看“MB_COMM_LOAD指令STATUS错误代码〞表。

执行“MB_MASTER〞指令,总是显示输出位“Busy〞=1,为什么?

因为端口正忙于处理传送恳求。

出现该错误时请检查“MB_MASTER“指令输入位〞REQ“是否为上升沿触发,或是否有其它的多个“MB_MASTER〞指令在执行。

通过执行“MB_MASTER〞指令无法写入或读取ModbusRTU丛站地址的数据,但程序中监视“MB_MASTER〞指令错误位“Error〞=0,错误代码“STATUS〞=16#0,为什么?

“MB_MASTER〞指令上一恳求因错误而终止后,ERROR位将保持为TRUE一个扫描周期时间,并且STATUS参数中的错误代码值仅在ERROR=TRUE的一个扫描周期内有效,因此无法通过程序或监控表查看到。

可采用如下所示的编程方式将ERROR和STATUS参数读出。

S7-1200作为ModbusRTU主站,如何对ModbusRTU从站进展0-65535扩展寻址?

通常,“MB_MASTER〞指令的背景数据块“MB_MASTER_DB〞中的“EXTENDED_ADDRESSING〞默认为0,可以对ModbusRTU从站地址0-247进展访问。

将“MB_MASTER〞指令的背景数据块“MB_MASTER_DB〞中的“EXTENDED_ADDRESSING〞设置为1,才能对ModbusRTU从站进展0-65535扩展寻址。

可按照如下步骤设置“EXTENDED_ADDRESSING〞:

首先找到“系统块〞→“程序资源〞,双击“MB_MASTER_DB〞,在“MB_MASTER〞指令的背景数据块“MB_MASTER_DB〞中查看“EXTENDED_ADDRESSING〞。

在“监控表〞内输入“MB_MASTER_DB.EXTENDED_ADDRESSING〞,将该位置1。

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

当前位置:首页 > 求职职场 > 简历

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

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