当前位置: 首页 > news >正文

基于pymodbus开发的的模拟表app

一、功能特性

  1. 协议支持
    • 完整兼容 标准Modbus RTU协议
    • 基于pymodbus标准库开发,具备良好扩展性

  2. 配置灵活
    • 全参数可配置:
    o 设备类型
    o 寄存器大小
    o 设备寄存器地址
    • 支持动态配置调整

  3. 可视化界面
    • 采用PyQt5框架开发
    • 实时显示窗口包含:
    o 串口通信日志
    o 设备状态信息
    o 寄存器数据可视化

  4. 数据格式支持

  5. 基础数据类型
    类型编号 格式标识符 说明 字节序
    0 stringhex HEX字符串原始数据 -
    1 uint16 无符号16位整型 AB (默认)
    3 uint16_CD_AB 无符号16位整型 CD AB (字节交换)
    5 int16 有符号16位整型 AB
    7 int16_CD_AB 有符号16位整型 CD AB

  6. 32位整型
    类型编号 格式标识符 说明 字节序
    9 uint32 无符号32位整型 AB CD (小端)
    11 uint32_GH_EF_CD_AB 无符号32位整型 GH EF CD AB (大端)
    13 int32 有符号32位整型 AB CD
    15 int32_GH_EF_CD_AB 有符号32位整型 GH EF CD AB
    21 uint32_EF_GH_AB_CD 无符号32位整型 EF GH AB CD (混合端)
    22 int32_EF_GH_AB_CD 有符号32位整型 EF GH AB CD

  7. 浮点型
    类型编号 格式标识符 说明 字节序
    17 float32 IEEE754单精度浮点 AB CD (小端)
    19 float32_GH_EF_CD_AB IEEE754单精度浮点 GH EF CD AB (大端)
    二、打包指南

  8. 无控制台模式(静默运行)
    bash
    pyinstaller --onefile --noconsole
    --name="模拟表app"
    --icon=app_icon.ico
    main.py

  9. 调试模式(显示控制台)
    bash
    pyinstaller --onefile
    --name="模拟表app"
    --icon=app_icon.ico
    main.py

打包建议:
• 生产环境推荐使用--noconsole模式
• 调试阶段建议保留控制台查看日志
• 图标文件建议使用256x256像素ICO格式
三、程序界面

  1. 串口打印

  2. 模拟表 数据参数配置

四、配置项
1.确保软件同目录下有该配置文件,否则默认加载程序内置写死的几个设备。
{
"测试用": {
"registerSize": {
"d": 10,
"c": 10,
"h": 1000,
"i": 1000
},
"dataTable": [
[1,8,"字符串",0,1,"0","i"],
[12,1,"uint16大端",0,1,"1","i"],
[13,1,"uint16小端",0,1,"3","i"],
[14,1,"int16大端",0,1,"5","i"],
[15,1,"int16小端",0,1,"7","i"],
[16,2,"uint32大端",0,1,"9","i"],
[18,2,"uint32小端",0,1,"11","i"],
[20,2,"int32大端",0,1,"13","i"],
[22,2,"int32小端",0,1,"15","i"],
[24,2,"float32大端",0,1,"17","i"],
[26,2,"float32小端",0,1,"19","i"],
[28,2,"uint32_EF_GH_AB_CD",0,1,"21","i"],
[30,2,"int32_EF_GH_AB_CD",0,1,"22","i"]
]
}
}

参数 说明 补充
测试用 最外侧字段,为要配置的设备名称,自定义即可
registerSize 设备寄存器大小,分为四个部分,对应关系看补充 register_map = {
'h':'保持寄存器',
'i':'输入寄存器',
'c':'线圈',
'd':'离散输入'
}

dataTable 数据表,即要模拟的设备具体数据项
dataTable 列1 寄存器地址 确保为int
dataTable 列2 寄存器数量 确保为int
dataTable 列3 该数据项具体名称 确保为string
dataTable 列4 默认数据,写0即可 确保为int
dataTable 列5 倍率比:如频率:实际49.99,存储4999,则倍率填写100即可 确保为int
dataTable 列6 数据类型,具体见补充 type_map = {
"0": "stringhex",
"1": "uint16",
"3": "uint16_CD_AB",
"5": "int16",
"7": "int16_CD_AB",
"9": "uint32",
"11": "uint32_GH_EF_CD_AB",
"13": "int32",
"15": "int32_GH_EF_CD_AB",
"17": "float32",
"19": "float32_GH_EF_CD_AB",
"21": "uint32_EF_GH_AB_CD",
"22": "int32_EF_GH_AB_CD",
}

dataTable 列7 寄存器类型,参考registerSize补充内容
五、程序及配置文件下载路径
https://wwgs.lanzoue.com/b0mbtnh2f密码:1czr

http://www.sczhlp.com/news/1075/

相关文章:

  • 111
  • 快慢指针法检测环
  • java笔记
  • 2025.7.29
  • 【即将截稿、IEEE出版、往届会后3个月检索】第七届物联网、自动化和人工智能国际学术会议(IoTAAI 2025)
  • valtio
  • WebRTC
  • 基于模糊控制的避障导航算法
  • MySQL JSON数据存储结构与操作
  • TypeScript 无法识别 .vue 文件的类型
  • halcon_01_HALCON基础语法变量与数据类型
  • Nginx:怎么携带参数重定向
  • Unity调整自适应分辨率
  • 【哈尔滨信息工程学院主办、往届三个月发表】第五届电子材料与信息工程国际学术会议 (EMIE 2025)
  • wpf 进度条
  • P1896 [SCOI2005] 互不侵犯
  • P1879 [USACO06NOV] Corn Fields G
  • P1270 “访问”美术馆
  • 20250726模拟赛T1
  • element plus table 修改勾选中的背景颜色
  • Java使用直接内存的好处
  • Jenkins Pipeline 中的主要组件解释
  • 在powershell窗口执行npm install无法运行
  • SVC总结与思考
  • 国产高精度芯片LHA8961,代替AD7690
  • 【IEEE出版、往届均完成EI检索】第六届计算机视觉与数据挖掘国际学术会议(ICCVDM 2025)
  • 平衡树的一些记录和带插入区间K小值
  • 基于块匹配的全景图像拼接
  • 【ACM独立出版、EI快速稳定检索】第二届虚拟现实、图像和信号处理国际学术会议(VRISP 2025)
  • BMP图像原理与应用