S7-200SMART最新推出的Modbus TCP通信功能

电子说

1.2w人已加入

描述

上次给大家分享了S7-200 SMART的开放以太网通信,虽然可以实现SMART与第三方设备进行以太网通信,但是很多人始终觉得双边的通信程序书写时较为麻烦,能不能实现单边以太网通信呢?其实SMART还支持Modbus TCP通信,结合了TCP通信和Modbus RTU通信的优点,只是编写Modbus TCP通信的库并非软件标配的功能,需要另外购买西门子公司开发的库文件,最多包括8个客户端库和8个服务器库。

1.MB_Client指令库安装

打开STEP 7-Micro/WIN SMART V2.2及以上版本软件,鼠标右键项目树的“库”节点,并从快捷菜单中选择“打开库文件夹”,如图1-1所示。

S7-200

图1-1打开库文件夹

1)将MB_Client指令库添加到打开的STEP 7-Micro/WINSMART库文件夹中,如图1-2所示。

S7-200

图1-2添加MB_Client指令库

备注:STEP 7-Micro/WIN SMART库文件夹一般存储路径为C:\Users\Public\Documents\Siemens\STEP7-MicroWIN SMART\Lib可以通过软件修改。

关闭STEP 7-Micro/WIN SMART库文件夹,然后鼠标右键项目树的“库”节点,并从快捷菜单中选择“刷新库”。刷新后,您可以看见“MB_Client”指令库已经被添加到项目树的库节点下,如图1-3所示。。MB_Server服务器库添加方法类似。。

S7-200

图1-3

2.通信程序编写

有了Modbus TCP通信库后,只需要调用库进行编程,使ModbusTCP通信程序变得非常简单,首先看客户端程序如何编写:

1)建立连接,如图1-4所示:

S7-200

图1-4建立连接

MBC_Connect指令各个参数定义如下:

·       EN使能:必须保证每一扫描周期都被使能。

·       Connect:启动TCP 连接建立操作。

·       Disconnect: 断开TCP连接操作。

·       ConnID: TCP 连接标识。

注意:Modbus TCP 属于TCP通信,也是开放式用户通信中的一种,所以ConnID参数不能与其他TCP、ISO-on-TCP、UDP通信相同。

·       IPaddr1~IPaddr4: Modbus TCP 客户端的IP地址,IPaddr1 是 IP 地址的最高有效字节,IPaddr4 是 IP 地址的最低有效字节。

·       RemPort: Modbus TCP 客户端的端口号。

·       LocPort:本地设备上端口号。

·       ConnectDone:Modbus TCP连接已经成功建立。

·       Busy: 连接操作正在进行时。

·       Error: 建立或断开连接时,发生错误。

·       Status:如果指令置位“Error”输出,Status 输出会显示错误代码。该错误代码为参考开放式用户通信库指令错误代码,具体请参考STEP 7-Micro/WIN SMART在线帮助

注意:每个  MB_Client指令库只能创建一个Mdobus TCP连接,如果一个S7-200SMART需要连接多个Modbus TCP服务器,则需要购买多个名称不同的MB_Client指令库(例如MB_Client_0,MB_Client_1,MB_Client_2,MB_Client_3)

2)读写数据MBC_MSG,如图1-4所示:

S7-200

图1-4读写数据

MBC_MSG指令各个参数定义如下:

·       EN 使能:同一时刻只能有一条MB_Client_MSG指令使能,EN 输入参数必须一直接通直到MB_Client_MSG 指令 Done 位被置 1。

·       First读写请求:每一条新的读写请求需要使用信号沿触发。

·       RW读写请求:为 0 时,读请求;为 1 时,写请求。开关量输出线圈和保存寄存器支持读请求和写请求,开关量输入触点和模拟量输入通道只支持读请求。

·       Addr读写Modbus 服务器的Modbus 地址: 00001 至 0XXXX 为开关量输出线圈;10001 至 1XXXX  为开关量输入触点; 30001 至 3XXXX 为模拟量输入通道; 40001 至 4XXXX  为保持寄存器。

·       Count读写数据的个数:对于Modbus 地址 0XXXX、1XXXX ,Count 按位的个数计算;对于 Modbus 地址 3XXXX、4XXXX ,Count 按字的个数计算;一个 MB_Client_MSG 指令最多读取或写入 120 个字或 1920 个位数据。

·       DataPtr数据指针:参数 DataPtr 是间接地址指针,指向 CPU 中与读/写请求相关的数据的 V 存储器地址。对于读请求,DataPtr应指向用于存储从 Modbus 服务器读取的数据的第一个 CPU存储单元。对于写请求,DataPtr应指向要发送到 Modbus 服务器的数据的第一个 CPU 存储单元。

·       Done完成位:读写功能完成或者出现错误时,该位会自动置1。多条 MBC_MSG 指令执行时,可以使用该完成位激活下一条 MBC_MSG 指令的执行。

·       Error:错误代码,只有在 Done 位为1时错误代码有效。

如下表1-5所示:

MB_Client错误代码 描述
0 无错误
1 TCP 发送数据错误
2 TCP接收数据错误
3 Modbus 接收响应超时
4 请求参数出错:一个或多个输入参数(“从站”(Slave)、“读写”(RW)、“地址”(Addr) 或“计数”(Count))被设置为非法值。
5 TCP连接未成功建立
6 Modbus 正忙于处理另一请求。
7 Modbus响应出错,接收到的响应与请求不符合。
8 Modbus响应长度校验错误。
101 Modbus 服务器不支持该地址的请求功能。
102 Modbus 服务器不支持数据地址:“地址”(Addr) 加上“计数”(Count) 的请求地址范围超出服务器允许的地址范围。
103 Modbus服务器不支持数据类型:服务器设备不支持“地址”(Addr) 类型。
104 Modbus服务器设备故障

 

表1-5MB_Client错误代码

3)为MB_Client指令库分配库存储器地址。

MB_Client指令库需要占用 300个字节 V 存储区用于库存储器地址分配。该库存储器分配地址不能与 MBC_MSG 指令参数DataPtr指向的 V 存储器地址重叠,也不能与其它程序使用的地址有重叠,库存储器地址分配过程见图1-5所示。

S7-200

图1-5为MB_Client分配库存储区

接下来就是服务端程序的编写了:

注意:每个  MB_Server指令库只能创建一个Mdobus TCP连接,如果一个S7-200 SMART 需要连接多个Modbus TCP 客户端,则需要购买多个名称不同的MB_Server指令库(例如MB_Server_0,MB_Server_1,MB_Server_2)

1)建立与客户端连接,如图1-6所示:

S7-200

图1-6建立与客户端连接

MBS_Connect指令各个参数定义如下:

·       EN使能:必须保证每一扫描周期都被使能。

·       Connect:启动TCP 连接建立操作。

·       Disconnect: 断开TCP连接操作。

·       ConnID: TCP 连接标识。

注意:Modbus TCP 属于TCP通信,也是开放式用户通信中的一种,所以ConnID参数不能与其他TCP、ISO-on-TCP、UDP通信相同。

·       IPaddr1~IPaddr4: Modbus TCP 客户端的IP地址,IPaddr1 是 IP 地址的最高有效字节,IPaddr4 是 IP 地址的最低有效字节。如果不指定伙伴 IP ,则可以设置为0.0.0.0 。

·       LocPort:本地设备上端口号

MaxHold: 用于设置 Modbus 地址 4xxxx 或 4yyyyy 可访问的 V 存储器中的字保持寄存器数。

·      HoldStart:间接地址指针,指向 CPU 中 V 存储器中保持寄存器的起始地址,即40001从哪个地址开始。

·      ConnectDone:Modbus TCP连接已经成功建立。

·      Busy: 连接操作正在进行时。

·      Error: 建立或断开连接时,发生错误。

·      Status:如果指令置位“Error”输出,Status 输出会显示错误代码。

MB_Server指令库错误代码如表1-7所示。

S7-200

表 1-7 MB_Server错误代码

2)收到客户端发来的命令要进行应答,如图1-8所示。

S7-200

图1-8服务器应答

3)为MB_Server指令库分配库存储器地址。

MB_Server指令库需要占用 300个字节 V 存储区用于库存储器地址分配。该库存储器分配地址不能与 MBS_Connect 指令参数 HoadStart指向的 V 存储器地址重叠,也不能与其它程序使用的地址有重叠,否则可能导致通信故障无法实现通信,库存储器地址分配过程见图1-9所示。

S7-200

图1-9 为MB_Server库分配存储器

耐心看完本文的小伙伴们,恭喜你已经学会了S7-200SMART最新推出的Modbus TCP通信功能啦,是不是迫不及待的想去测试一下呢?

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分