首页 » 科学 » 西门子s7-1200plc经由进程modbus连接扩展模块(上)_指令_通讯

西门子s7-1200plc经由进程modbus连接扩展模块(上)_指令_通讯

admin 2024-12-19 19:09:08 0

扫一扫用手机浏览

文章目录 [+]

以 ZKA-4488-RS485 出厂默认通讯参数如下:

站号:01

西门子s7-1200plc经由进程modbus连接扩展模块(上)_指令_通讯 科学

波特率:115200(把稳:客户须要参照综科智控公司的配置辅导文档,将ZKA-4488-RS485模块的波特率修正为9600才能适用本例中的先容)

数据格式:8,N,1

S7-200 Modbus RTU通信

1 S7-200 Modbus RTU 通信简介

Modbus具有两种串行传输模式:分别为ASCII和RTU。
Modbus是一种单主站的主从通信模式,Modbus网络上只能有一个主站存在,主站在Modbus网络上没有地址,每个从站必须有唯一的地址,从站的地址范围为0 - 247,个中0为广播地址,从站的实际地址范围为1 - 247。

Modbus RTU通信以主从的办法进行数据传输,在传输的过程中Modbus RTU主站是主动方,即主站发送数据要求报文到从站,Modbus RTU从站返回相应报文。

S7-1200以下模块支持 Modbus RTU通信:

名称

CM 1241 RS232

CM 1241 RS422/485

CB 1241 RS485

订货号

6ES7241-1AH32-0XB0

6ES7241-1CH32-0XB0

6ES7241-1CH30-1XB0

通讯口类型

RS232

RS422/RS485

RS485

波特率(bps)

300 ;600 ;1.2 k; 2.4 k; 4.8 k; 9.6 k;19.2 k; 38.4 k; 57.6 k; 76.8 k; 115.2 k

校验办法

None(无校验)Even(偶校验)Odd(奇校验)Mark(校验位始终置为1)Space(校验位始终为0)

流控

硬件流控;软件流控

RS422 支持软件流控

不支持

吸收缓冲区

1kB

通讯间隔(屏蔽电缆)

10m

1000m

1000m

电源花费(5V DC)

200mA

220mA

50mA

电源花费(24V DC)

-

-

80mA

把稳: 1. 利用通信模块CM 1241 RS232作为Modbus RTU主站时,只能与一个从站通讯。
2. 利用通信模块CM 1241 RS485作为Modbus RTU主站时,则许可建立最多与 32 个从站的通讯。
3. 利用通信板CB 1241 RS485时,CPU 固件必须为 V2.0 或更高版本,且利用软件必须为STEP 7 Basic V11 或STEP 7 Professional V11 以上更高版本。

2 Modbus RTU 主站指令库

随着 TIA PORATL 软件和 S7-1200 CPU 固件的不断更新,S7-1200 Modbus RTU 指令也涌现了不同的版本。
用户须要根据利用的软件和硬件,精确选择利用符合哀求的 S7-1200 Modbus RTU 指令来实现 Modbus RTU 通信。

软件,硬件哀求和指令版本解释如下。

TIA PORTAL 中的 S7-1200 Modbus RTU 指令

TIA PORTAL 软件中供应了2个版本的 Modbus RTU指令。
如下图 1 所示:

早期版本的 Modbus RTU 指令(图1. 中 MODBUS (V2.2))仅可通过 CM1241 通信模块或 CB1241 通信板进行 Modbus RTU 通信。
新版本的 Modbus RTU 指令(图1. 中 MODBUS(RTU) V3.0)扩展了 Modbus RTU 的功能,该指令除了支持 CM1241 通信模块、CB1241 通信板,还支持 PROFINET 或 PROFIBUS 分布式 I/O 机架上的 PTP 通信模块实现 Modbus RTU 通信。

把稳:新版本 Modbus RTU 指令的利用限定条件新版本 Modbus RTU 指令通过CM1241通信模块或CB1241通信板进行Modbus RTU通信时,须要知足如下条件:a. S7-1200 CPU 的固件版本不能低于V4.1;b. CM1241通信模块 V2.1 以上或 CB1241。

图1. 两个版本 Modbus RTU 指令

3 Modbus RTU 主站功能编程

Modbus RTU V1 - V2 版本指令先容(S7-1200 作为Modbus RTU 主站)

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) ④ ZKA-4488-RS485(综科智控品牌) ⑤ TP以太网电缆

软件:① STEP 7 Professional V11 SP2 UPD4+HSP所完成的通信任务:将ZKA-4488-RS485从站中Modbus地址从30001开始的5个字中的数据,分别读取到Modbus RTU主站CPU1215C 中地址从DB1.DBW0开始的5 个字中。

1.组态Modbus RTU 通信模块

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

图1 组态通信模块

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

以下以传输率=9.6Kbps,奇偶校验=无奇偶校验,数据位=8位字符,停滞位=1,其它保持默认设置为例。
把稳:请把ZKA-4488-RS485模块的波特率改成和此处同等的参数。

图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_MASTER”指令的背景数据块,如下图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.创建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作为Modbus RTU主站,用F04功能码读取Modbus RTU从站2,从Modbus地址30001开始的五个字,吸收的数据存放在缓冲区DB3.DBW0开始区域为例。
设置如下所示:MB_ADDR=2,MODE=0,DATA_ADDR=30001,DATA_LEN=5。

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

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

Modbus RTU从站Modbus地址

DB3.DBW0

30001

DB3.DBW2

30002

DB3.DBW4

30003

DB3.DBW6

30004

DB3.DBW8

30005

表2 Modbus地址对应关系

图9 MB_MASTER指令

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

引脚

解释

EN

使能端

REQ

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

MB_ADDR

Modbus RTU从站地址。
默认地址范围: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

缺点代码

表3 MB_MASTER指令参数意义

关于MODE,DATA_ADDR,DATA_LEN可不才表4中查看:

MB_MASTER Modbus功能

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个字

表4 MB_MASTER Modbus功能表

7. Modbus RTU测试结果

在STEP 7 Professional V11 UPD4软件中打开该项目CPU1215C DC/DC/DC的“监控表”,触发“MB_MASER”指令的输入位M10.0。
PLC主站将从站ZKA-4488-RS485地址30001中的数值11,30002中的数值12,30003中的数值13,30004中的数值14,30005中的数值15,分别读取到了地址DB3.DBW0,DB3.DBW2,DB3.DBW4,DB3.DBW6,DB3.DBW8中,如下图12所示:

图12 Modbus RTU测试结果

S7-1200 Modbus RTU通信模式的多地址或多站点轮询

多个CM 1241 RS485 通讯模块之间可以利用 PROFIBUS 电缆相互连接。
可以将 1 个主站和最多 31 个 MODBUS 从站利用 PROFIBUS 电缆连接组网。

S7-1200 Modbus RTU轮询须要通过上一条”MB_MASTER“指令输出位“Done“=1来触发下一条“MB_MASTER“指令。
详细解释及编程思路请参考以下链接:

如何利用STEP 7(TIA Portal)V11为SIMATIC S7-1200建立Modbus RTU通讯?

MB_COMM_LOAD和MB_MASTER指令STATUS缺点代码

STATUS(W#16#)

解释

0000

端口无缺点

8180

端口ID值无效

8181

波特率值无效

8182

奇偶校验值无效

8183

流掌握值无效

8184

相应超市价无效

8185

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

表5 MB_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

端口正忙于处理传送要求

表6 MB_MASTER指令STATUS缺点代码(指令的通信和组态缺点)

STATUS(W#16#)

从站的相应代码

解释

8380

-

CRC缺点

8381

01

不支持此功能码

8382

03

数据长度缺点

8383

02

数据地址缺点或地址超出 DATA_PTR 的有效范围

8384

>03

数据值缺点

8385

03

不支持此数据诊断代码

8386

-

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

8387

-

相应的从站缺点

8388

-

从站对写要求的相应禁绝确

表7 MB_MASTER指令STATUS缺点代码(Modbus 协议的缺点)

4 连接超时参数

S7-1200 Mobus RTU通信网络中包含多个从站站点时,由于轮询的网络特性,只能同时读或写一个站点数据。
因此有如下成分,会影响到终极整体的轮询韶光:

1. 通信速率(波特率)设置韶光

2. 每个站点的通信数据量

3. 站点数量

4. 通信间隔

5. 各站点连接韶光

无论是由于旗子暗记滋扰,硬件质量引起的从站掉站或是由于工程须要暂时关闭站点,此时都会由于“各站点连接韶光”的增加而使通信系统的轮询韶光大大延长。
在S7-1200的Modbus RTU通信中,紧张有三个参数与“各站点连接韶光”的设置干系。

1. 从站相应韶光 RESP_TO

如图1所示,V2.x版本的MB_COMM_LOAD初始化块可设置从站相应韶光RESP_TO参数:

设置单次连接从站的可相应韶光,范围为5ms到65535ms(默认值为1000ms);即如从站在此韶光段内未作出相应,则MB_MASTER将在发送指定次数的重试要求后终止要求并提示缺点信息80C8。

图1. RESP_TO参数设置

把稳:如图2所示,Modbus从站的实行频率须至幼年于RESP_TO设置的相应韶光(须要考虑相应延迟韶光),才可以正常通讯。

图2. 从站相应韶光

2.重试次数 RETRIES

在初始化功能块MB_COMM_LOAD的背景数据块中,可设置重试次数RETRIES参数:

主站在返回无相应缺点代码 0x80C8 之前的重试次数。
(默认值为2次) 把稳:此参数表示初次连接无相应后,再次连接的次数;即以默认2次为例,实际考试测验连接次数为3次。

图3 RETRIES参数设置

把稳:在变动RETRIES参数后,须要重新使能MB_COMM_LOAD功能块的REQ管脚,否则变动参数不生效。

3. 主站定时参数 Blocked_Proc_Timeout

当由于某些缘故原由(如已发出主站要求,但在彻底完成该要求前停滞调用主站功能块时),造成Done及Error均没有置1时,须要供应一个定时韶光,在韶光到达后置位,以便实行下一个功能块或轮询下一个站点。

MB_Master的背景数据块中供应了主站定时参数Blocked_Proc_Timeout(范围0S到5.5S,默认3S)

此前的RESP_TO 是针对从站相应韶光的,而Blocked_Proc_Timeout则是针对主站的定时韶光,此功能参数用于防止单个 MB_Master 指令独占或锁定对端口的访问。

图4. Blocked_Proc_Timeout参数设置

5 Modbus RTU 主站常问问题

S7-1200 是否支持 Modbus ASCII 通信模式?

西门子不供应支持上述通信模式的的现成指令,须要用户自己用自由口模式编程。

Modbus RTU指令V1和V2两个版本有什么差异?

Modbus RTU指令版本 V2 将参数 “REQ” 和 “DONE” 添加到“MB_COMM_LOAD”指令。
而且,“MB_MASTER”和“MB_SLAVE ”指令的“MB_ADDR ”参数现在许可一个 UInt 值以进行扩展寻址。

同一CPU程序中是否可以同时利用V1和V2两个不同版本的Modbus RTU指令?

不能在同一CPU 程序中同时利用V1(V1.x)和V2(V2.y)指令版本。
用户程序的 Modbus 指令必须具有相同的主版本号;主版本组内的各个指令可具有不同的次版本号。

S7-1200 通信模块CM1241是否可作为Modbus RTU主站或作为Modbus RTU从站?

对S7-1200 通信模块CM1241组态并编程调用“MB_COMM_LOAD”指令,可将其设置为Modbus RTU通信模式。
通过编程调用“MB_MASTER”指令,S7-1200 通信模块CM1241可作为Modbus RTU主站,或调用“MB_SLAVE”指令,S7-1200 通信模块CM1241可作为Modbus RTU从站。

把稳:无论S7-1200 通信模块CM1241作为Modbus RTU主站还是从站,都须要调用“MB_COMM_LOAD”指令进行编程。

由于某一个从站掉站引起的轮询周期韶光延长,如何减小此影响?

常日,S7-1200可同时调度两个参数:从站相应韶光 RESP_TO和重试次数 RETRIES,用于减小Modbus从站掉站或暂时关闭而增大的轮询周期韶光。
例:系统默认的考试测验连接次数为3次,每次1S,总计3S;可根据项目实际工况适当减小从站相应韶光RESP_TO。
这一韶光无法估算,建议多次测试,确认每个从站都能够正常稳定连接情形下,将此韶光设置的只管即便小。
以设置500ms为例。
再将RETRIES设置为0。
即对付每个从站,主站只考试测验连接一次,总计耗时500ms。

MB_MASTER报错8200(端口正忙于处理传送要求),如何处理?

此情形是由于MB_MASTER的DONE或ERROR均未置位从而与后续MB_MASTER冲突导致。
确保接通下一个MB_MASTER的韶光大于Blocked_Proc_Timeout的设定时间(默认3S)。

如何检讨S7-1200 通信模块CM1241是否已被成功设置为Modbus RTU通信模式?

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

如果该模块被成功设置为Modbus RTU通信模式:“MB_COMM_LOAD”指令输出位“DONE”=1,“ERROR”=0,输出状态字“STATUS”=0;如果该模块未被成功设置为Modbus RTU通信模式:“MB_COMM_LOAD”指令输出位“DONE”=0,“ERROR”=1,输出状态字“STATUS”输出错误代码。
详细缺点缘故原由可查看“MB_COMM_LOAD指令STATUS缺点代码”表。

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

由于端口正忙于处理传送要求。
涌现该缺点时请检讨“MB_MASTER“指令输入位”REQ“是否为上升沿触发,或是否有其它的多个“MB_MASTER”指令在实行。

通过实行“MB_MASTER”指令无法写入或读取Modbus RTU丛站地址的数据,但程序中监视“MB_MASTER”指令缺点位“Error”=0,缺点代码“STATUS”=16#0,为什么?

“MB_MASTER”指令上一要求因缺点而终止后,ERROR 位将保持为 TRUE 一个扫描周期韶光,并且 STATUS 参数中的缺点代码值仅在 ERROR =TRUE 的一个扫描周期内有效,因此无法通过程序或监控表查看到。
可采取如下所示的编程办法将ERROR 和 STATUS 参数读出。

图13 捕捉缺点代码

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

常日,“MB_MASTER”指令的背景数据块“MB_MASTER_DB”中的“EXTENDED_ADDRESSING”默认为0,可以对Modbus RTU从站地址0-247进行访问。

将“MB_MASTER”指令的背景数据块“MB_MASTER_DB”中的“EXTENDED_ADDRESSING”设置为1,才能对Modbus RTU从站进行0-65535扩展寻址。
可按照如下步骤设置“EXTENDED_ADDRESSING”:

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

图14 扩展地址区

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

图15 修正变量

标签:

相关文章