S7 协议调试工具 / 模拟器 -- HSL Communication demo 中的 S7 Virtual Server
参考文章
前言
之前写过一个使用 Snap7 demo 进行通讯的教程:S7 协议调试工具 / 模拟器 --snap7 demo server_partner_client-CSDN博客
最近发现另一个很好用的软件 – 胡工科技 HSL Communication demo
官网:http://www.hsltechnology.cn/Home/Download
HSL Communication 是胡工科技开发的工业上位机通讯中间件
功能强大,可实现与市面上几乎所有品牌、所有工控协议的通讯
这个 demo 软件相当于在中间件基础上的测试 demo 界面,具有以下特点:
- 支持的协议多、丰富,功能全面,西门子 S7 协议、Modbus 协议、MQTT、OPC UA 等主流工控协议都可在此软件中进行调试
- 此调试软件个人研究用途使用免费,无功能、时间限制
- 经测试 demo 软件性能不错
只测试了 Modbus RTU 的性能,使用 demo 中的《modbus rtu 客户端》发送连续的 40 个寄存器,最快发送周期 15ms - 目前来看软件售后OK,更新频繁(基本上每个月都有新版本),短期之内没有跑路问题
- 此软件是国人开发(看软件界面、官网风格就知道),支持国产
HSL demo 软件下载、安装(略)
软件的下载、安装跳过,上官网下载即可
下面直接介绍打开软件之后如何使用实现 S7 通讯
HSL demo 软件做 S7 服务端
HSL 软件的使用,有以下几个步骤
- 启动 HSL 中的 S7 服务端仿真功能 – S7 Virtual Server
- 配置 S7 Sever 的 DB 块:新增、设置 DB 块编号、长度
- 读写仿真DB中的数据:
- 在 HSL 的 S7 服务端界面中批量写入数据
- 使用 HSL 的 S7 客户端写入数据
- 使用外部工具写入数据(如 Snap7 client demo)
- 监控当前模拟的数据
- HSL 点位变量功能,以表格形式监控数据
- HSL 模拟数据功能,实现变化的模拟数据
- HSL 批量读取+解析,对报文数据实现自定义解析
- HSL 调试软件的其他功能
- 解决端口冲突:端口转发 tcp2tcp
启动服务
在软件左侧找到:西门子 --> S7 Virtual Server,双击进入此协议测试界面
测试界面点击【启动服务】
添加测试数据
添加数据的方法
测试数据可通过以下两种方法添加:
- 在右侧【单数据写入测试】区域,输入地址、值、然后点击要写入的方法(写入的数据类型)写入数据
- 使用【批量读取】中的报文【解析】 + 【批量回写】功能写入数据

使用【批量读取】功能
- 先输入要读取的【地址】、【长度】
- 然后勾选左下角的【解析】功能,然后弹出右侧表格
- 需要在表格中定义批量读取的数据,在 value 列输入要设置的值
- 最后然后点击【批量回写】
批量读取 -> 解析 --> 表格中的配置项
- 起始地址
- 数据类型
- 长度(数据的数量)
- 偏移量(在 S7 中偏移量从0开始,Bool 类型算的是 bit 位的偏移,其他数据类型算的是 Byte 的偏移量)
HSL 软件中支持的地址、地址的写法
可在软件的【地址示例】中查看
HSL 软件中支持的数据值写法
数组(读写多个相同类型变量)、重复,详见软件说明文字
示例1:使用 HSL 软件添加数据
示例1-1:HSL 的 S7 服务端,使用【单数据写入测试】写入 DB1.6 整个 Byte 的数据
(从左往右为低到高位,图中数据对应 Byte 值 = 138)
示例1-2:HSL 的 S7 服务端,使用【单数据写入测试】写入 DB1.6 中第 2 位的数据(位索引从 0 开始)
示例1-3:HSL 的 S7 服务端,使用【批量读取】+解析+【批量回写】写入 多个数据
| DB地址 | 数据类型 | 数据长度(数量) | Byte偏移(占用Byte数) | HSL软件中的地址 | 设置值 |
|---|---|---|---|---|---|
| 1 | SHORT | 1 | 0(2) | DB1.0 | 212 |
| 1 | FLOAT | 1 | 2(4) | DB1.2 | 123.456 |
| 1 | BOOL | 8 | 6(1) | DB1.48 | [0,1,0,1,0,0,0,1] |
读取、解析测试数据 – 使用 HSL 服务端界面功能监控数据(略)
读取数据的配置方法、地址写法,与上面的【单数据写入测试】、【批量读取】+解析类似,这里省略
读取、解析测试数据 – 使用 HSL 中的 客户端 读写 HSL 服务端数据
HSL 默认配置了 DB1、DB2、DB3,每个 DB 长度为 55535 字节(与 Snap7 demo 界面配置相同)
若使用以上默认,则无需额外配置,然后照着上面的【单数据写入测试】、【批量读取】+解析两种方式设置值即可
若使用其他 DB,需要先在【db block】选项中添加对应编号的 DB 块,然后再按照上面的步骤进行设置
读写测试数据 – Snap7 demo 读写 HSL 服务端数据
使用之前在我的另一篇博文中介绍过的 Snap7 demo 实现 DB 块的读写,但服务端使用 HSL 软件实现
Snap7 client demo 的使用,见我的博文:https://blog.csdn.net/weixin_44112083/article/details/130627005
HSL demo 软件的其他功能
解决端口冲突:TCP数据包转发 tcp2tcp
HSL 内部有个小工具,可实现不同端口数据的互通
点击软件界面上方 菜单栏【调试】–> tcp2tcp,打开【tcp2TCP】选项卡
相关配置说明:
- 本地发送给【本地端口】的数据,通过 HSL 软件发送给【远程IP】的【远程端口】
- 从远程IP返回的响应数据,HSL 软件接收后,返回给本地对应的软件
- 由于要通过本机 HSL 软件做数据转发,因此在调试软件客户端中,通讯的IP地址应为本机 IP
127.0.0.1
使用示例
西门子 S7 协议通讯
本地:使用 Snap7 demo client 客户端软件访问,地址 127.0.0.1,本地端口 102
远程:使用 HSL 的 S7 服务端进行模拟,远程 IP 地址 192.168.0.100,远程端口 1010
配置 HSL 的 tcp2tcp 功能
测试结果:Snap7 client demo 正确读写 HSL 服务端中的数据
更多推荐



所有评论(0)