龙空技术网

西门子200Ssmart modbus主站通信详细介绍与实例编程

巨控何工 2043

前言:

此时朋友们对“兼容性错误30001”大约比较讲究,同学们都需要知道一些“兼容性错误30001”的相关资讯。那么小编同时在网上收集了一些关于“兼容性错误30001””的相关文章,希望各位老铁们能喜欢,大家一起来了解一下吧!

西门子200Ssmart modbus主站通信详细介绍与实例编程

(巨控何工_2018年9月17号)

概述:感谢大家的支持,下一篇会跟大家分享西门子smart200的以太网通信(2个smart200PLC之间通信,smart200与1200之间的以太网通信,smart200与西门子300之间通信)。需要西门子PLC编程软件,与西门子学习视频的朋友,麻烦转发+关注,私信我或查看我个人简介(里面有"扣,扣")。

西门子smart200昨晚主站与变频器通信

1. 西门子S7-200 SMART作为modbus主站

1.西门子在 STEP 7-Micro/WIN SMART 中正式推出 Modbus RTU 主站协议库(西门子标准库指令)。

西门子smart200作为modbus主站通信库图

1). Modbus RTU 主站指令库的功能是通过在用户程序中调用预先编好的程序功能块实现的,该库对 CPU 集成的 RS 485 通讯口 和 CM 01 信号板有效。该指令库将设置通信口工作在自由口模式下。2). Modbus RTU 主站指令库使用了一些用户中断功能,编其他程序时不能在用户程序中禁止中断。3). Modbus RTU 主站指令库不能同时应用于CPU 集成的 RS 485 通讯口 和 CM 01 信号板。使用 Modbus RTU 主站指令库,可以读写 Modbus RTU 从站的数字量、模拟量 I/O 以及保持寄存器。

2.详细说明

1). 调用 Modbus RTU 主站初始化和控制子程序

使用 SM0.0 调用 MBUS_CTRL 完成主站的初始化,并启动其功能控制

西门子smart200作为modbus主站通信库实物图

图 2. 用 SM0.0 调用 Modbus RTU 主站初始化与控制子程序

各参数意义如下:

a.EN使能:必须保证每一扫描周期都被使能(使用 SM0.0)

b.Mode模式:为 1 时,使能 Modbus 协议功能;为 0 时恢复为系统 PPI 协议

c.Baud波特率:支持的通讯波特率为1200,2400,4800,9600,19200,38400,57600,115200。

d.Parity校验:校验方式选择,0=无校验,1=奇较验,2=偶较验

e.Port端口号:0 = CPU 集成的 RS 485 通讯口 ; 1 = 可选 CM 01 信号板 。

f.Timeout超时:主站等待从站响应的时间,以毫秒为单位,典型的设置值为 1000 毫秒(1 秒),允许设置的范围为 1 - 32767。

g.Done完成位:初始化完成,此位会自动置1。可以用该位启动 MBUS_MSG 读写操作(见例程)

h.Error初始化错误代码(只有在 Done 位为1时有效):0= 无错误1= 校验选择非法2= 波特率选择非法3= 超时无效 4= 模式选择非法9= 端口无效10= 信号板端口 1 缺失或未组态

2). 调用 Modbus RTU 主站读写子程序MBUS_MSG,发送一个Modbus 请求;

西门子smart200作为modbus主站通信库实物图

图 3. 调用Modbus RTU 主站读写子程序

各参数意义如下:

a.EN使能:同一时刻只能有一个读写功能(即 MBUS_MSG)使能

注意:建议每一个读写功能(即 MBUS_MSG)都用上一个 MBUS_MSG 指令的 Done 完成位来激活,以保证所有读写指令循环进行(见例程)。

b.First读写请求位:每一个新的读写请求必须使用脉冲触发

c.Slave从站地址:可选择的范围 1 - 247

d.RW读写请求:0 = 读, 1 = 写注意:1. 开关量输出和保持寄存器支持读和写功能2. 开关量输入和模拟量输入只支持读功能

e.Addr读写从站的选择读写的数据类型数据地址:

00001 至 0xxxx - 开关量输出

10001 至 1xxxx - 开关量输入

30001 至 3xxxx - 模拟量输入

40001 至 4xxxx - 保持寄存器

f.Count数据个数通讯的数据个数(位或字的个数)注意: Modbus主站可读/写的最大数据量为120个字(是指每一个 MBUS_MSG 指令)

g.DataPtr数据指针:1. 如果是读指令,读回的数据放到这个数据区中 2. 如果是写指令,要写出的数据放到这个数据区中

h.Done完成位读写功能完成位

i.Error错误代码:只有在 Done 位为1时,错误代码才有效 0 = 无错误1 = 响应校验错误

2 = 未用3 = 接收超时(从站无响应)4 = 请求参数错误(slave address, Modbus address, count, RW)5 = Modbus/自由口未使能 6 = Modbus正在忙于其它请求

7 = 响应错误(响应不是请求的操作)8 = 响应CRC校验和错误101 = 从站不支持请求的功能102 = 从站不支持数据地址103 = 从站不支持此种数据类型104 = 从站设备故障105 = 从站接受了信息,但是响应被延迟106 = 从站忙,拒绝了该信息107 = 从站拒绝了信息108 = 从站存储器奇偶错误

常见的错误:

· 如果多个 MBUS_MSG 指令同时使能会造成 6 号错误

· 从站 delay 参数设的时间过长会造成主站 3 号错误

· 从站掉电或不运行,网络故障都会造成主站 3 号错误

3. 在 CPU 的 V 数据区中为库指令分配存储区(Library Memory)

Modbus Master 指令库需要一个286个字节的全局 V 存储区。

调用STEP 7 - Mciro/WIN SMART Instruction Library(指令库)需要分配库指令数据区(Library Memory)。库指令数据区是相应库的子程序和中断程序所要用到的变量存储空间。

如果在编程时不分配库指令数据区,编译时会产生许多相同的错误。

操作步骤:

1)在指令树的Project(项目)中,以鼠标右键单击Program Block(程序块),在弹出的快捷菜单中选择Library Memory。如图4所示:

图4. "库存储器"按钮

2)在弹出的选项卡中设置库指令数据区,如图5所示:

图5. 缺省情况下是从VB0开始,但要保证该存储器使用地址范围与其他程序使用的地址不能有重叠。按"建议地址"按钮也可以自动分配。

可以使用 "建议地址" 设置数据区,但要注意编程软件设置的数据区地址,只考虑到了其他一般寻址,而未考虑到诸如Modbus数据保持寄存器区等的设置。应当确保不与其他任何已使用的数据区重叠、冲突。不应重复按 "建议地址" 按钮,否则也会造成混乱。

关于 Modbus RTU 主站协议库的补充说明

Modbus 地址

通常 Modbus 地址由 5 位数字组成,包括起始的数据类型代号,以及后面的偏移地址。Modbus Master 协议库把标准的 Modbus 地址映射为所谓 Modbus 功能号,读写从站的数据。Modbus Master 协议库支持如下地址:

· 00001 - 09999:数字量输出( 线圈)

· 10001 - 19999:数字量输入(触点)

· 30001 - 39999:输入数据寄存器(通常为模拟量输入)

· 40001 - 49999:数据保持寄存器

Modbus Master 协议库支持的功能

为了支持上述 Modbus 地址的读写,Modbus Master 协议库需要从站支持下列功能:

表 1. 需要从站支持的功能

Modbus 地址读/写Modbus 从站须支持的功能00001 - 09999数字量输出读功能 1 写功能 5:写单输出点功能 15:写多输出点 10001 - 19999数字量输入读功能 2 写-30001 - 39999输入寄存器 读功能 4 写-40001 - 49999保持寄存器读功能 3 写功能 6:写单寄存器单元功能 16:写多寄存器单元

Modbus 地址和 S7-200 SMART 存储区地址的映射

S7-200 SMART 通过 Modbus Master 和 Slave 协议库通信时,Modbus 地址和 S7-200 SMART CPU内存储区地址的 映射关系都类似。

Modbus 保持寄存器地址映射举例:

Modbus 数字量地址映射举例:

位地址(0xxxx 和 1xxxx)数据总是以字节为单位打包读写。第一个字节中的最低有效位对应 Modbus 地址的起始地址。如下图所示:

图6 . 数字量地址映射举例

2. 实例工程(有需要工程的朋友可以看上面的概述)

西门子smart200modbus通信实物工程图

4.串口接线

个 S7-200 SMART CPU 都提供一个以太网端口和一个 RS485 端口(端口0),标准型 CPU 额外支持 SB CM01 信号板(端口1),信号板可通过 STEP 7-Micro/WIN SMART 软件组态为 RS232 通信端口或 RS485 通信端口。

CPU 通信端口引脚分配

1.S7-200 SMART CPU 集成的 RS485 通信端口(端口0)是与 RS485 兼容的9针 D 型连接器。CPU 集成的 RS485 通信端口的引脚分配如表1. S7-200 SMART CPU 集成 RS485 端口的引脚分配表所示。 表1. S7-200 SMART CPU 集成 RS485 端口的引脚分配

2.标准型 CPU 额外支持 SB CM01 信号板,该信号板可以通过 STEP 7-Micro/WIN SMART 软件组态为 RS485通信端口或者 RS232 通信端口。表 2. 给出了 SB CM01 信号板的引脚分配 。 表2. S7-200 SMART SB CM01 信号板端口(端口1)的引脚分配表

使用STEP 7-Micro/WIN SMART 软件组态 SB CM01 信号板为 RS485通信端口或者RS232通信端口的过程如图 1. SB CM01 信号板组态过程所示。

3. 总结

通信双方必须同时支持上述模式中的一种。Modbus是一种单主站的主/从通信模式。Modbus 网络上只能有一个主站存在,主站在Modbus 网络上没有地址,从站的地址范围为 0 - 247,其中 0 为广播地址,从站的实际地址范围为 1 - 247。Modbus 通信标准协议可以通过各种传输方式传播,如 RS232C、RS485、光纤、无线电等。在 S7-200 CPU 通信口上实现的是 RS485 半双工通信,使用的是 S7-200 SMART 的自由口功能。详细的协议和规范,请访问 Modbus 组织的网站或私信我:

标签: #兼容性错误30001