(转发)S7-1200plc作为modbusRTU从站

S7-1200 支持Modbus RTU通信模式的模块可作为Modbus RTU从站。以下以 CPU1215C DC/DC/DC和CM1241 RS485为例,介绍S7-1200 Modbus RTU 从站通信组态及编程步骤。

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

硬件:① CPU1215C DC/DC/DC (订货号:6ES7 215-1AG31-0XB0)② CM1241 RS485 (订货号:6ES7 241-1CH30-0XB0)③ PS 307电源(订货号:6ES7307-1KA02-0AA0) ④ PC(带以太网卡) ⑤ TP以太网电缆软件:① STEP 7 V11 Professional SP2 UPD4 +HSP② ModScan(该软件是第三方软件,可以从 Internet 网络下载)所完成的通信任务:将Modbus RTU从站CPU1215C中地址从DB1.DBW0开始的5 个字中的数据,分别读取到Modbus RTU主站ModScan中Modbus地址从40001开始的5个字中。

1组态Modbus RTU通信模块

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

图1 组态通信模块

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

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

图2 RS485 端口设置

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

图3 硬件标识符

2添加启动OB

在项目树下选择“CPU1215C DC/DC/DC”→“程序块”→“添加新块”,在弹出的窗口中选择“OB 组织块”→ “Startup”,添加启动OB 100,如下图4所示:

图4 添加启动OB

3调用MB_COMM_LOAD指令

为使端口一启动就被设置为Modbus RTU通信模式,可在OB 100中调用“MB_COMM_LOAD”指令。调用“MB_COMM_LOAD”指令时会自动弹出创建相应背景数据块的界面,如下图5所示:

图5 调用MB_COMM_LOAD指令

点击“确认”为该指令创建背景数据块后,为各输入/输出引脚分配地址。尤其需注意MB_DB输入引脚需指向“MB_SLAVE”指令的背景数据块,如下图6所示:

注意:“MB_COMM_LOAD”指令输入位“REQ”需使用上升沿触发。由于OB 100只在S7-1200启动时执行一次,因此,此例中将“REQ”设为“TRUE”。

图6 MB_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

响应超时:默认值 = 1000 ms。MB_MASTER 允许用于从站响应的时间(以毫秒为单位)。

MB_DB

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

DONE

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

ERROR

错误位:0-未检测到错误;1-检测到错误。在参数STATUS中输出错误代码。

STATUS

表1 MB_COMM_LOAD指令参数意义

4创建MB_HOLD_REG数据块

通过“程序块”→ “添加新块”,选择“数据块(DB)”创建 DB 块,选择“标准与S7- 300/400兼容” ,点击“确认”键,定义数据区为5个字的数组,如下图7所示:

注意:MB_HOLD_REG使用的DB访问类型必须是标准与S7- 300/400兼容。

图7 创建MB_HOLD_REG数据块

5调用MB_SLAVE指令

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

图8 调用MB_SLAVE指令

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

S7-1200作为Modbus RTU从站,MB_HOLD_REG指向Modbus保持寄存器数据块的指针。设置如下所示:MB_HOLD_REG=P#DB3.DBX0.0 WORD 5。

对应关系如下表2所示:

Modbus RTU主站Modbus地址

Modbus RTU从站CPU1215C 数据缓冲区地址

40001

DB3.DBW0

40002

DB3.DBW2

40003

DB3.DBW4

40004

DB3.DBW6

40005

DB3.DBW8

表2 Modbus地址对应关系

图9 MB_SLAVE指令

引脚

说明

EN

使能端

MB_ADDR

Modbus 从站的站地址 。默认地址范围:0 至 247;扩展地址范围:0 至 65535

MB_HOLD_REG

指向 Modbus 保持寄存器数据块的指针。必须使用“标准 - 与 S7-300/400 兼容”访问类型创建该数据块。

NDR

新数据就绪:0-无新数据;1-表示Modbus主站已写入新的数据

DR

数据读取:0-无数据读取;1-表示Modbus主站已读取新的数据

ERROR

错误位

STATUS

表3 MB_SLAVE指令参数意义

MB_SLAVE Modbus功能

S7-1200

代码

功能

数据区

地址范围

数据区

CPU地址

01

读位

输出

1到8192

输出过程映像区

Q0.0到Q1023.7

02

读位

输入

10001到18192

输入映像区

I0.0到I1023.7

04

读字

输入

30001到30512

输入映像区

IW0到IW1022

05

写位

输出

1到8192

输出过程映像区

Q0.0到Q1023.7

15

写位

输出

1到8192

输出过程映像区

Q0.0到Q1023.7

表4 Modbus地址到过程映象区的映射

MB_SLAVE Modbus功能

S7-1200

代码

功能

数据区

地址范围

CPU DB数据区

CPU地址

03

读字

保持寄存器

40001到49999

MB_HOLD_REG

字1到字9999

400001到465535

字1到字65535

06

写字

保持寄存器

40001到49999

MB_HOLD_REG

字1到字9999

400001到465535

字1到字65535

16

写字

保持寄存器

40001到49999

MB_HOLD_REG

字1到字9999

400001到465535

字1到字65535

表5 Modbus地址到CPU存储区的映射

6Modbus 主站软件设置

注意:客户机采用ModScan软件测试,该软件是第三方软件,可以从 Internet 网络上下载。

首先在打开的ModScan软件中建立连接,并设置RTU模式的参数:波特率Baud=9600,数据位Data=8,停止位Stop=1,校验Parity=NONE,如下图10所示:

图10 建立ModScan连接

选择“File”→“New” 打开ModScan通信界面,设置Modbus RTU从站的地址Device Id=1,数据开始地址Address=0001,数据长度Length=5,Modbus数据类型功能码03,如下图11所示:

注意:Device Id设置必须与“MB_SLAVE”指令中输入引脚“MB_ADDR”设置的地址一致。

图11 设置ModScan

7Modbus RTU测试结果

在STEP 7 V11 Professional SP2 UPD4软件中打开该项目CPU1215 DC/DC/DC的“监控表”,对DB3.DBW0写入数值21,DB3.DBW2写入数值22,DB3.DBW4写入数值23,DB3.DBW6写入数值24,DB3.DBW8写入数值25。ModScan主站将S7-1200 Modbus RTU从站地址DB3.DBW0的数值21,DB3.DBW2的数值22,DB3.DBW4的数值23,DB3.DBW6的数值24,DB3.DBW8的数值25,分别读取到了地址40001,40002,40003,40004,40005中。如下图12所示:

图12 Modbus RTU测试结果

MB_COMM_LOAD和MB_SLAVE指令STATUS错误代码
STATUS(W#16#)

说明

0000

端口无错误

8180

端口ID值无效

8181

波特率值无效

8182

奇偶校验值无效

8183

流控制值无效

8184

响应超时值无效

8185

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

表6 MB_COMM_LOAD指令STATUS错误代码

STATUS(W#16#)

说明

0000

无错误

80D1

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

80D2

传送请求终止

80E0

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

80E1

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

80E2

因组帧错误,消息被终止

80E3

因出现超限错误,消息被终止

80E4

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

8180

无效端口ID值或MB_COMM_LOAD指令出错

8186

Modbus站地址无效

8187

指向MB_HOLD_REG指针无效

818C

指向M存储器或DB(DB区域允许符号地址和直接地址)的MB_HOLD_REG指针无效

表7 MB_SLAVE指令STATUS参数意义(通信和组态错误)

STATUS(W#16#)

从站的响应代码

说明

8380

无响应

CRC错误

8381

01

不支持功能代码或者在广播中不支持功能代码

8382

03

数据长度错误

8383

02

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

8384

03

数据值错误

8385

03

不支持此数据诊断代码值

表8 MB_SLAVE指令STATUS参数意义(Modbus协议错误)

常见问题

为什么触发“MB_SLAVE”指令出错,输出位“ERROR”=1,输出状态字“STATUS”=16#8187?

输出状态字”STATUS“=16#8187表示指向MB_HOLD_REG指针无效。以下两种情况会造成如上错误:

程序中不存在“MB_SLAVE”指令的输入引脚“MB_HOLD_REG”对应的DB块。

在创建“MB_SLAVE”指令的输入引脚“MB_HOLD_REG”对应的DB块时选择了“仅符号寻址”。

解决方法分别如下:

新建“MB_SLAVE”指令的输入引脚“MB_HOLD_REG”对应的DB块。

创建“MB_SLAVE”指令的输入引脚“MB_HOLD_REG”对应的DB块时只能选择了“标准与S7-300/400兼容”。**

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 该PLC支持通过MODBUS/从模式进行通讯通讯协议支持RTU和ASCII模式。它可以通过多种网络介质(如RS232/RS485/RS422)实现MODBUS通讯,支持多种数据格式,并可以通过MODBUS从机实现远程I/O控制和数据采集功能。 ### 回答2: S7-1200 是西门子公司推出的一款可编程逻辑控制器(PLC)产品系列,其具有高性能和可靠性,广泛应用于自动化控制系统中。MODBUS 是一种常见的通信协议,常用于工业自动化领域的设备之间进行数据交换。 在使用 S7-1200 PLC 进行 MODBUS 通讯时,首先需要在 PLC 的软件平台(如 TIA Portal)中进行相关配置。通过添加 MODBUS TCP/IP 通信模块,设置通信接口和参数,例如设置 IP 地址、端口号和从地址等。 配置完成后,可以在程序中使用特定的指令来实现与 MODBUS 设备的通信。例如,使用读写寄存器的指令来读取或写入 MODBUS的数据。通过指定 MODBUS地址、寄存器类型和寄存器地址等相关参数,可以实现数据的传输。 在编写程序时,需要按照 MODBUS 协议规定的数据格式进行数据的打包和解析。对于读取操作,PLC 发送请求帧,MODBUS返回数据帧;对于写入操作,PLC 发送写入帧,MODBUS对数据进行处理。通过解析返回的数据帧,可以获取到所需的数据并进行相应的处理。 除了数据读写之外,MODBUS 通讯还可以实现其他功能,如读取设备状态、设置设备参数等。根据实际需求,可以在程序中添加相应的指令和逻辑,实现复杂的通讯功能。 总之,使用 S7-1200 PLC 进行 MODBUS 通讯需要进行硬件和软件的配置,并按照 MODBUS 协议规定的方式进行数据的读写和解析。通过合理的编程和配置,可以实现可靠高效的设备通信和数据交换。 ### 回答3: S7-1200是西门子公司推出的一种PLC(可编程控制器)设备。该设备具有强大的功能和可靠性,广泛应用于自动化控制系统中。MODBUS(莫德布斯)是一种常用的通信协议,用于实现设备之间的数据交换和通信。 在S7-1200 PLC上实现MODBUS通信需要以下几个步骤: 1. 配置PLC:首先,我们需要在S7-1200 PLC上进行相关配置。我们需要设置PLC的IP地址、通信端口等信息,以确保与其他设备能够进行通信。 2. 配置MODBUSPLC作为MODBUS,我们还需要配置MODBUSMODBUS是与PLC进行通信的其他设备,如传感器、执行器等。通过配置MODBUS的地址和通信参数,PLC能够识别和与之通信。 3. 编写PLC程序:接下来,我们需要编写PLC程序,实现MODBUS通信功能。通过使用PLC编程语言(如Ladder Diagram、Structured Text等),我们可以定义输入和输出变量,并实现与MODBUS的数据交换。 4. 调试和测试:完成程序编写后,我们需要进行调试和测试。通过连接PLCMODBUS,并在不同设备之间发送和接收数据,我们可以验证通信是否正常,是否能够正确地读取和控制数据。 总结而言,S7-1200 PLCMODBUS通信的过程包括配置PLCMODBUS、编写PLC程序,并进行调试和测试。通过合理使用这些步骤,我们可以实现可靠的PLC控制和数据交换,并将其应用于自动化控制系统中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值