9 个重大版本更新

0.10.0 2022年2月3日
0.8.0 2022年1月11日
0.7.0 2021年12月10日

#776硬件支持

每月 22 次下载

MIT/Apache

145KB
1.5K SLoC

另一个 Modbus 模拟器

YAMS

一个使用纯 Rust 开发的 Modbus 客户端/服务器模拟器,支持基于 YAML 的配置和行为定义。

YAMS 支持通过 YAML 文件进行 Modbus 设备配置和行为定义。这意味着可以在运行模拟器之前预先定义模拟器的工作方式,包括

  • 设备类型:服务器/客户端
  • 协议类型:Modbus TCP/RTU
  • 通信配置:IP 地址、波特率等。
  • Modbus 配置:设备 ID 等。
  • Modbus 服务器属性
    • 支持的函数代码
    • 支持的寄存器/线圈及其值
    • 支持线圈和寄存器的重叠
    • 支持由寄存器/线圈写入触发用户定义的服务器行为:启用此功能后:YAMS 将通过数据(yaml)文件与用户程序共享寄存器/线圈数据。每次寄存器/线圈更新时,指定的用户程序将被调用以根据用户定义的逻辑更新寄存器/线圈数据,只要外部程序将新数据写回文件,YAMS 将获取新数据并继续运行。
  • Modbus 客户端行为
    • 发送到服务器(s)的请求
    • 支持重复请求(单/多请求重复)
    • 支持请求之前的预定延迟
  • 人性化的用户界面
    • 基于 YAML 的灵活配置/请求组织
    • 支持详细模式,显示更多网络细节
    • 支持打印请求/响应索引
    • 以自己的类型设置和显示测量值:例如 32 位浮点数

为了支持快速测试,提供了单次模式,这样可以使用命令行参数运行 YAMS,尽管建议使用 YAML 配置文件来充分利用 YAMS。

安装

  • 确保已安装 Cargo。有关详细信息,请参阅安装页面
  • 通过以下命令安装 YAMS:cargo install yams

快速演示

DEMO

可配置项

请参阅 基于 YAML 的配置

待办事项

  • 实现 Modbus TCP 支持
  • 实现基于 YAML 的配置/请求支持
  • 实现 Modbus RTU 支持
  • 实现对重复请求(s)的支持
  • 实现对请求(s)之前的延迟的支持
  • 实现错误处理
  • 实现无配置文件的单次模式
  • 实现详细模式以打印更多详细/数据
  • 实现请求/响应计数打印
  • 实现支持由用户定义的寄存器/线圈写入触发的服务器行为
  • 实现不同字节序的支持
  • 实现所有当前功能的全部数据支持,并附带测试
  • 实现以下功能代码支持
    • 读取线圈
    • 读取离散输入
    • 读取保持寄存器
    • 读取输入寄存器
    • 写入单个线圈
    • 写入单个寄存器
    • 读取异常状态
    • 诊断
    • 获取通信事件计数器
    • 获取通信事件日志
    • 写入多个线圈
    • 写入多个寄存器
    • 报告服务器ID
    • 读取文件记录
    • 写入文件记录
    • 掩码写入寄存器
    • 读取/写入多个寄存器
    • 读取FIFO队列
    • 封装接口传输
    • CANopen通用参考请求和响应PDU
    • 读取设备标识

依赖关系

~8-22MB
~259K SLoC