上次给大家分享了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所示。
图1-1打开库文件夹
1)将MB_Client指令库添加到打开的STEP 7-Micro/WINSMART库文件夹中,如图1-2所示。
图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服务器库添加方法类似。。
图1-3
2.通信程序编写
有了Modbus TCP通信库后,只需要调用库进行编程,使ModbusTCP通信程序变得非常简单,首先看客户端程序如何编写:
1)建立连接,如图1-4所示:
图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 地址的最低有效字节。
·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所示:
图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所示。
图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所示:
图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所示。
表 1-7 MB_Server错误代码
2)收到客户端发来的命令要进行应答,如图1-8所示。
图1-8服务器应答
3)为MB_Server指令库分配库存储器地址。
MB_Server指令库需要占用 300个字节 V 存储区用于库存储器地址分配。该库存储器分配地址不能与 MBS_Connect 指令参数 HoadStart指向的 V 存储器地址重叠,也不能与其它程序使用的地址有重叠,否则可能导致通信故障无法实现通信,库存储器地址分配过程见图1-9所示。
图1-9 为MB_Server库分配存储器
耐心看完本文的小伙伴们,恭喜你已经学会了S7-200SMART最新推出的Modbus TCP通信功能啦,是不是迫不及待的想去测试一下呢?
-
以太网
+关注
关注
40文章
5331浏览量
170662 -
西门子
+关注
关注
93文章
2986浏览量
115405 -
TCP
+关注
关注
8文章
1342浏览量
78901 -
S7-200
+关注
关注
13文章
407浏览量
50265
原文标题:西门子S7-200SMART原来还支持Modbus TCP通信
文章出处:【微信号:GKB1508,微信公众号:工控帮】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论