S7-200 SMART 与调试助手之间 Modbus TCP 通信
STEP7-Micro/WIN SMART 从 V2.4 版本开始,软件中直接集成 Modbus TCP 库指令,无需单独安装或者购买。安装软件后,Modbus TCP 指令位于 STEP7-Micro/WIN SMART 项目树中“指令”文件夹的“库”文件夹中。如图 1 Modbus TCP 库指令所示。
指令分为客户端和服务器两种,目前指令版本为 V1.0。客户端指令会占用开放式用户通信资源主动连接,最多 8 个;服务器指令会占用开放式用户通信资源的被动连接资源,最多也是 8 个。
图 1 Modbus TCP 库指令
硬件和软件需求及所完成的通信任务
硬件:
① PC (带以太网卡)(IP 地址 192.168.0.1 ;子网掩码: 255.255.255.0)
② S7-200 SMART CPU (固件版本 V2.5) ( IP 地址 192.168.0.20 ;子网掩码: 255.255.255.0)
③ TP 以太网电缆
软件:
① STEP 7 Micro/WIN SMART ( 软件版本 V2.5 )
② ModScan32
③ Modbus Slave
所完成的通信任务:
① ModScan32 接收 6 个字节数据: <-- ( S7-200 SMART 侧做服务器响应 ) VW0~VW10
② Modbus Slave 接收 6 个字节数据: <-- ( S7-200 SMART 侧做客户端写 ) VW20~VW30
ModScan32 (S7 200 SMART 做服务器)
1. 打开 ModScan32 软件
2. 点击“Setup”---“Display Definition”---设定“Point Type”(本例程以保持型寄存器为例)---“Length”为 6
如图 1 所示,设置完成后点击 OK
图 1 Display Definition
3. 点击“Connection”----“Connect”
图 2 建立连接
① Connect选择Remote TCP/IP Server;
② 设置 IP Address 和端口号与 cpu 中设置的保持一致。
S7-200 SMART 侧编程
1. 打开 STEP 7 Micro/WIN SMART>项目树>指令树>库>Modbus TCP Server(v1.0),调用 MBUS_SERVER,如图 5、图 6 所示。
图 5. Modbus TCP Server 指令库
图 6. MBUS_SERVER
2. 鼠标选中程序块文件夹,单击右键,下拉菜单中选择库存储器,如图 7 所示。
图 7. 点击库存储器
3. 在库存储区分配对话框中手动输入存储区的起始地址。此实例为 VB5000 开始,以使指令库可以正常工作。确保库存储区与程序中其他已使用的地址不冲突。使用建议地址无法确定是否有地址重叠,所以推荐手动输入正确的库存储区首地址。如图 8 所示。
图 8. 库存储区地址分配
4. 编译项目,下载程序。
通信结果如下:
图 9. 测试结果
Modbus Slave (S7 200 SMART 做客户端)
1. 打开 Modbus Slave 软件
2. 点击 "Setup" --- "Slave Definition" --- 设定 "Function”(本例程以保持型寄存器为例)---"Quantity" 为 6---"Display" 为 Signed
如图 10 所示,设置完成后点击 OK
图 10. Slave Definition
3. 点击 "Connection" ----"Connect"
图 11. 建立连接
① Connect 选择 TCP/IP;
② 设置 TCP/IP Port 为 502 与 cpu 中设置的保持一致,勾选 Ignore Unit ID。
S7-200 SMART 侧编程
1. 打开 STEP 7 Micro/WIN SMART>项目树>指令树>库>Modbus TCP Client(v1.4),调用 MBUS_CLIENT,如图 12 所示。
图 12. MBUS_CLIENT
2. 鼠标选中程序块文件夹,单击右键,下拉菜单中选择库存储器,如图 13 所示。
图 13. 点击库存储器
3. 在库存储区分配对话框中手动输入存储区的起始地址。此实例为 VB5000 开始,以使指令库可以正常工作。确保库存储区与程序中其他已使用的地址不冲突。使用建议地址无法确定是否有地址重叠,所以推荐手动输入正确的库存储区首地址。如图 14 所示。
图 14. 库存储区地址分配
4. 编译项目,下载程序。
通信测试结果
在状态图表中创建变量,VW20-VW30 共 6 个字,赋值后,将 M0.0 置位为 1,监视值如图 15 所示。
图 15. 读取服务器数据
免责声明
本例程仅供参考,程序中的 CPU 版本、类型可能与用户实际使用不同,用户可能需要先对例子程序做修改和调整,才能将其用于测试。本例程的作者和拥有者对于该例程的功能性和兼容性不负任何责任,使用该例程的风险完全由用户自行承担。由于它是免费的,所以不提供任何担保,错误纠正和热线支持,用户不必为此联系西门子技术支持与服务部门。