编辑 | blame | 历史 | 原始文档

GSModbus 使用操作指南

系统概述

GSModbus 是一个通用的、配置驱动的 C# Windows Forms 应用程序,用于实现 PLC 与 MES 系统之间的 Modbus TCP 通信。系统通过 JSON 配置文件实现动态配置,无需修改代码即可适配不同的 PLC 设备和地址映射。

快速开始

1. 启动应用程序

双击 GSModbus.exe 或使用以下命令启动:
bash dotnet run

2. 选择配置文件

应用程序启动后,您需要选择适合的配置文件:

方法一:点击"选择配置文件"按钮

  1. 点击界面上的 "选择配置文件" 按钮
  2. 在弹出的文件选择对话框中,导航到 config 文件夹
  3. 选择合适的配置文件(通常是 .json 文件)
  4. 点击"打开"

方法二:使用预置配置文件

系统提供两个预配置文件:

  1. production_config.json - 生产环境配置(推荐)
  • 位置:config/production_config.json
  • 基于实际需求文档配置
  • PLC地址:192.168.3.250:502
  • 包含完整的 D6000-D6048 地址映射
  1. modbus_config.json - 演示配置
  • 位置:config/modbus_config.json
  • 用于学习和测试

3. 测试数据库连接(可选)

配置文件加载成功后,如果启用了数据库功能,系统会自动显示数据库连接状态:

数据库连接界面说明

  • 数据库状态显示:位于PLC连接状态右侧,显示当前数据库连接状态
  • 测试数据库按钮:用于手动测试数据库连接
  • 状态指示器:绿色表示连接成功,红色表示连接失败

数据库连接测试步骤

  1. 检查数据库状态显示(位于PLC连接状态右侧)
  2. 点击 "测试数据库" 按钮验证数据库连接
  3. 观察状态变化:
  • 🟢 连接成功:显示绿色状态和成功信息
  • 🔴 连接失败:显示红色状态和错误信息
  1. 如果连接失败,请检查数据库配置和网络连接

自动表创建功能

系统支持自动创建必需的数据库表:
- PRODUCTION_DATA:存储从PLC读取的生产数据
- COMMUNICATION_LOG:记录通信事件和状态
- ERROR_LOG:记录系统错误和异常
- STATISTICS:保存通信统计信息

注意:Oracle 11g数据库采用原生SQL方式创建表,确保最佳兼容性

4. 连接 PLC

数据库连接确认无误后(如果启用了数据库功能):
1. 检查界面上的配置文件状态显示为绿色
2. 确认数据库状态显示为绿色(如果启用)
3. 点击 "连接PLC" 按钮
4. 等待连接状态变为"已连接"(绿色)
5. 开始接收 PLC 数据并自动保存到数据库(如果启用)

配置文件详解

配置文件结构

配置文件采用 JSON 格式,主要包含以下部分:

{
  "ConfigVersion": "1.0",
  "ProjectName": "项目名称",
  "Connection": {
    "IpAddress": "192.168.3.250",
    "Port": 502
  },
  "InputAddresses": {
    "ControlSignals": { ... },
    "ProductData": { ... },
    "MeasurementData": { ... }
  },
  "Database": { ... }
}

关键配置项说明

1. 连接配置 (Connection)

{
  "Connection": {
    "IpAddress": "192.168.3.250",    // PLC IP地址
    "Port": 502,                     // Modbus TCP端口
    "ConnectionTimeoutMs": 5000,     // 连接超时时间
    "OperationTimeoutMs": 3000       // 操作超时时间
  }
}

2. 数据地址配置 (InputAddresses)

系统支持三种数据类别:

  • ControlSignals - 控制信号(如心跳、数据就绪信号)
  • ProductData - 产品数据(如型号、测试结果、时间戳)
  • MeasurementData - 测量数据(如尺寸、电压、电流等)

3. 数据类型支持

  • Byte: 单字节数值 (0-255)
  • Integer: 多字节整数,支持缩放
  • String: 字符串,支持大端/小端编码
  • Timestamp: 时间戳,支持自定义格式
  • Float: 浮点数
  • Boolean: 布尔值

自定义配置文件

创建新的配置文件

  1. 复制现有的配置文件(如 production_config.json
  2. 修改以下关键参数:
  • IpAddress: PLC的IP地址
  • Port: Modbus TCP端口(通常为502)
  • ProjectName: 项目名称
  • 地址映射:根据实际PLC地址修改各字段的 Address

配置文件示例

{
  "ConfigVersion": "1.0",
  "ProjectName": "我的项目",
  "Connection": {
    "IpAddress": "192.168.1.100",
    "Port": 502
  },
  "InputAddresses": {
    "ProductData": {
      "ProductModel": {
        "Address": 6004,
        "DataType": "String",
        "Length": 10,
        "DisplayName": "产品型号"
      }
    }
  }
}

操作流程

标准操作流程

  1. 启动应用程序
  • 运行 GSModbus.exe
  1. 加载配置文件
  • 点击"选择配置文件"按钮
  • 选择合适的 .json 配置文件
  • 确认配置文件状态显示为绿色
  1. 连接PLC
  • 点击"连接PLC"按钮
  • 等待连接状态变为"已连接"
  1. 监控数据
  • 查看日志窗口中的实时数据
  • 监控连接状态和统计信息
  1. 断开连接
  • 点击"断开连接"按钮
  • 或直接关闭应用程序

日志解读

系统日志按类别显示接收的数据:

📊 [数据 #1] 14:30:25.123
   控制信号:
     • PLC心跳: 1
     • 数据就绪: 数据就绪
   产品数据:
     • 产品型号: ABC123
     • 测试结果: 合格
   测量数据:
     • 工作电压: 24.50 V
     • 工作电流: 1.25 A
   --------------------------------------------------

数据库功能

数据库配置

系统支持多种数据库:
- Oracle 11g(推荐用于生产环境)
- SQL Server
- MySQL
- SQLite

配置数据库连接

在配置文件中设置数据库参数:
json { "Database": { "Enabled": true, "Type": "Oracle", "ConnectionString": "Data Source=localhost:1521/XE;User Id=PRODUCTION_MES;Password=your_password;", "AutoCreateTables": true, "DataRetentionDays": 90, "Tables": { "ModbusDataTable": "PRODUCTION_DATA", "CommunicationLogTable": "COMMUNICATION_LOG", "ErrorLogTable": "ERROR_LOG", "StatisticsTable": "STATISTICS" } } }

数据库配置参数说明

  • Enabled:是否启用数据库功能(true/false)
  • Type:数据库类型(Oracle、SqlServer、MySQL、SQLite)
  • ConnectionString:数据库连接字符串
  • AutoCreateTables:是否自动创建数据库表
  • DataRetentionDays:数据保留天数(0表示不自动清理)
  • Tables:自定义表名配置(可选,使用默认名称如果未指定)

数据库表结构

系统自动创建以下表:

1. PRODUCTION_DATA(生产数据表)

  • ID:主键,自增序列
  • READ_TIME:数据读取时间
  • PROJECT_NAME:项目名称
  • PLC_IP_ADDRESS:PLC IP地址
  • CONTROL_SIGNALS_JSON:控制信号数据(JSON格式)
  • PRODUCT_DATA_JSON:产品数据(JSON格式)
  • MEASUREMENT_DATA_JSON:测量数据(JSON格式)
  • RAW_REGISTERS_JSON:原始寄存器数据(调试用)
  • CREATED_AT:记录创建时间

2. COMMUNICATION_LOG(通信日志表)

  • ID:主键,自增序列
  • LOG_TIME:日志时间
  • PROJECT_NAME:项目名称
  • PLC_IP_ADDRESS:PLC IP地址
  • EVENT_TYPE:事件类型(连接、断开、数据读取等)
  • EVENT_DESCRIPTION:事件描述
  • IS_SUCCESS:是否成功(1/0)
  • DURATION_MS:操作耗时(毫秒)
  • ADDITIONAL_DATA_JSON:附加数据

3. ERROR_LOG(错误日志表)

  • ID:主键,自增序列
  • ERROR_TIME:错误发生时间
  • PROJECT_NAME:项目名称
  • PLC_IP_ADDRESS:PLC IP地址
  • ERROR_TYPE:错误类型
  • ERROR_MESSAGE:错误消息
  • STACK_TRACE:堆栈跟踪
  • SEVERITY:严重级别(High/Medium/Low)
  • RETRY_COUNT:重试次数
  • IS_RESOLVED:是否已解决(1/0)

4. STATISTICS(统计信息表)

  • ID:主键,自增序列
  • STATISTICS_TIME:统计时间
  • PROJECT_NAME:项目名称
  • PLC_IP_ADDRESS:PLC IP地址
  • TOTAL_CONNECTION_ATTEMPTS:总连接尝试次数
  • SUCCESSFUL_CONNECTIONS:成功连接次数
  • TOTAL_DATA_READS:总数据读取次数
  • SUCCESSFUL_DATA_READS:成功数据读取次数
  • TOTAL_ERRORS:总错误次数
  • AVERAGE_RESPONSE_TIME_MS:平均响应时间
  • MAX_RESPONSE_TIME_MS:最大响应时间
  • MIN_RESPONSE_TIME_MS:最小响应时间
  • CONNECTION_SUCCESS_RATE:连接成功率
  • DATA_READ_SUCCESS_RATE:数据读取成功率
  • PERIOD_START:统计周期开始时间
  • PERIOD_END:统计周期结束时间

注意:Oracle 11g表创建采用原生SQL语句,与SqlSugar ORM分离以确保兼容性

故障排除

常见问题及解决方法

1. 无法连接 PLC

现象: 点击连接后显示"连接PLC失败"
解决方法:
- 检查PLC IP地址是否正确
- 确认网络连接是否正常
- 验证PLC Modbus TCP服务是否启用
- 检查防火墙设置

2. 配置文件加载失败

现象: 配置文件状态显示为红色
解决方法:
- 检查JSON格式是否正确
- 验证必填字段是否完整
- 确认文件路径是否存在

3. 数据读取异常

现象: 连接成功但无数据或数据错误
解决方法:
- 检查地址映射是否正确
- 验证数据类型配置
- 确认PLC寄存器数据是否有效

4. 数据库连接失败

现象: 数据库状态显示为红色,或点击"测试数据库"按钮后显示连接失败
解决方法:
- 检查连接字符串:确认数据库IP、端口、用户名、密码正确
- 验证数据库服务:确认Oracle/SQL Server等数据库服务正在运行
- 检查网络连接:确保应用程序能访问数据库服务器
- 验证用户权限:确认数据库用户有创建表和读写数据的权限
- Oracle特殊问题:如果是Oracle数据库,确保已安装Oracle Client或使用Oracle.ManagedDataAccess

5. Oracle数据库特殊问题

现象: 提示"ORA-00936: 缺失表达式"或其他Oracle语法错误
解决方法:
- 系统已针对Oracle 11g进行优化,使用原生SQL方式创建表
- 确保Oracle连接字符串格式正确:Data Source=IP:PORT/SERVICE_NAME;User Id=USERNAME;Password=PASSWORD;
- 检查Oracle服务名称和监听器配置
- 如需手动创建表,参考DatabaseManager.cs中的Oracle建表脚本

6. 自动建表失败

现象: 数据库连接成功但表创建失败
解决方法:
- 检查数据库用户是否有CREATE TABLE权限
- 对于Oracle,确保用户有足够的表空间配额
- 检查表名是否与现有对象冲突
- 查看应用程序日志获取详细错误信息
- 如果需要,可以手动执行建表脚本

高级功能

1. 命令行参数

# 运行演示模式
dotnet run -- demo

# 指定配置文件
dotnet run -- --config "path/to/config.json"

2. 配置验证

系统在加载配置文件时会自动验证:
- 连接配置:IP地址格式、端口号范围、超时设置
- 地址映射:地址完整性、数据类型有效性、字段长度
- 数据库配置:连接字符串格式、数据库类型支持
- 表配置:表名有效性、命名规范

3. 数据库连接测试

系统提供实时数据库连接测试功能:
- 自动检测:配置加载后自动检测数据库连接状态
- 手动测试:点击"测试数据库"按钮进行连接验证
- 状态显示:实时显示连接状态(绿色=成功,红色=失败)
- 错误诊断:显示详细的连接失败原因

4. 自动表管理

数据库表自动创建和管理功能:
- 智能检测:自动检测表是否存在,避免重复创建
- 兼容处理:Oracle使用原生SQL,其他数据库使用SqlSugar ORM
- 错误容错:表已存在时不会报错,继续正常运行
- 日志记录:详细记录表创建过程和结果

3. 自动重连

系统支持自动重连功能:
- 连接断开时自动尝试重连
- 可配置重连间隔和最大重试次数
- 重连状态实时显示

部署注意事项

系统要求

  • .NET 8.0 或更高版本
  • Windows 操作系统
  • 网络连接到目标PLC

配置文件管理

  • 将配置文件放在 config/ 目录下
  • 建议为不同项目创建独立的配置文件
  • 定期备份重要的配置文件
  • 使用有意义的文件名(如:生产线A_config.json测试环境_config.json

数据库安全

  • 连接字符串保护:避免在配置文件中使用明文密码
  • 权限控制:为应用程序创建专用数据库用户,仅授予必要权限
  • 数据加密:敏感数据在传输和存储时进行加密
  • 访问日志:启用数据库访问日志记录

性能优化

  • 连接池:系统自动管理数据库连接池
  • 批量操作:支持批量插入数据以提高性能
  • 自动清理:根据配置自动清理过期数据
  • 索引优化:关键字段已创建适当索引

安全考虑

  • 保护数据库连接字符串中的密码
  • 限制网络访问权限
  • 定期更新系统组件

技术支持

日志文件位置

  • 应用程序日志:界面日志窗口
  • 系统调试信息:控制台输出

配置示例

参考 config/ 目录下的示例配置文件:
- production_config.json - 生产环境配置
- modbus_config.json - 基础配置模板

文档资源

  • config/Oracle使用指南.md - Oracle 11g数据库配置指南
  • docu/需求.txt - 原始需求文档和PLC地址映射
  • CLAUDE.md - 开发者指南和项目架构说明
  • docu/MES地址.xlsx - 详细的PLC地址映射表

数据库相关文件

  • Database/DatabaseManager.cs - 数据库管理核心代码
  • Database/DatabaseEntities.cs - 数据库实体定义
  • config/production_config.json - 包含数据库配置的生产环境配置
  • GSModbus.csproj - 项目文件,包含数据库驱动包引用


更新记录

版本 1.1(当前版本)

更新日期: 2024年12月
主要更新:
- ✅ 新增数据库连接测试按钮和状态显示
- ✅ 增强Oracle 11g兼容性,使用原生SQL建表
- ✅ 自动表创建功能,支持多种数据库类型
- ✅ 改进数据库配置管理,支持自定义表名
- ✅ 优化错误处理和日志记录
- ✅ 添加数据库性能优化和安全增强

版本 1.0

更新日期: 2024年
功能: GSModbus基础通信系统


适用于: GSModbus通用Modbus通信系统
数据库支持: Oracle 11g, SQL Server, MySQL, SQLite
开发框架: .NET 8.0 Windows Forms