啊鑫
2025-07-26 da107f3b89271191052d9ece45e0010bb2d7d795
GSModbusʹÓòÙ×÷Ö¸ÄÏ.md
@@ -36,13 +36,40 @@
   - ä½ç½®ï¼š`config/modbus_config.json`
   - ç”¨äºŽå­¦ä¹ å’Œæµ‹è¯•
### 3. è¿žæŽ¥ PLC
### 3. æµ‹è¯•数据库连接(可选)
配置文件加载成功后:
配置文件加载成功后,如果启用了数据库功能,系统会自动显示数据库连接状态:
#### æ•°æ®åº“连接界面说明
- **数据库状态显示**:位于PLC连接状态右侧,显示当前数据库连接状态
- **测试数据库按钮**:用于手动测试数据库连接
- **状态指示器**:绿色表示连接成功,红色表示连接失败
#### æ•°æ®åº“连接测试步骤
1. æ£€æŸ¥æ•°æ®åº“状态显示(位于PLC连接状态右侧)
2. ç‚¹å‡» **"测试数据库"** æŒ‰é’®éªŒè¯æ•°æ®åº“连接
3. è§‚察状态变化:
   - ðŸŸ¢ **连接成功**:显示绿色状态和成功信息
   - ðŸ”´ **连接失败**:显示红色状态和错误信息
4. å¦‚果连接失败,请检查数据库配置和网络连接
#### è‡ªåŠ¨è¡¨åˆ›å»ºåŠŸèƒ½
系统支持自动创建必需的数据库表:
- **PRODUCTION_DATA**:存储从PLC读取的生产数据
- **COMMUNICATION_LOG**:记录通信事件和状态
- **ERROR_LOG**:记录系统错误和异常
- **STATISTICS**:保存通信统计信息
**注意**:Oracle 11g数据库采用原生SQL方式创建表,确保最佳兼容性
### 4. è¿žæŽ¥ PLC
数据库连接确认无误后(如果启用了数据库功能):
1. æ£€æŸ¥ç•Œé¢ä¸Šçš„配置文件状态显示为绿色
2. ç‚¹å‡» **"连接PLC"** æŒ‰é’®
3. ç­‰å¾…连接状态变为"已连接"(绿色)
4. å¼€å§‹æŽ¥æ”¶ PLC æ•°æ®
2. ç¡®è®¤æ•°æ®åº“状态显示为绿色(如果启用)
3. ç‚¹å‡» **"连接PLC"** æŒ‰é’®
4. ç­‰å¾…连接状态变为"已连接"(绿色)
5. å¼€å§‹æŽ¥æ”¶ PLC æ•°æ®å¹¶è‡ªåŠ¨ä¿å­˜åˆ°æ•°æ®åº“ï¼ˆå¦‚æžœå¯ç”¨ï¼‰
## é…ç½®æ–‡ä»¶è¯¦è§£
@@ -190,18 +217,82 @@
    "Type": "Oracle",
    "ConnectionString": "Data Source=localhost:1521/XE;User Id=PRODUCTION_MES;Password=your_password;",
    "AutoCreateTables": true,
    "DataRetentionDays": 90
    "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**:自定义表名配置(可选,使用默认名称如果未指定)
### æ•°æ®åº“表结构
系统自动创建以下表:
- **PRODUCTION_DATA**: ä¸»è¦ç”Ÿäº§æ•°æ®
- **COMMUNICATION_LOG**: é€šä¿¡æ—¥å¿—
- **ERROR_LOG**: é”™è¯¯æ—¥å¿—
- **STATISTICS**: ç»Ÿè®¡ä¿¡æ¯
#### 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分离以确保兼容性
## æ•…障排除
@@ -230,11 +321,30 @@
- ç¡®è®¤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,确保用户有足够的表空间配额
- æ£€æŸ¥è¡¨åæ˜¯å¦ä¸ŽçŽ°æœ‰å¯¹è±¡å†²çª
- æŸ¥çœ‹åº”用程序日志获取详细错误信息
- å¦‚果需要,可以手动执行建表脚本
## é«˜çº§åŠŸèƒ½
@@ -251,10 +361,26 @@
### 2. é…ç½®éªŒè¯
系统在加载配置文件时会自动验证:
- IP地址格式
- ç«¯å£å·èŒƒå›´
- åœ°å€æ˜ å°„完整性
- æ•°æ®ç±»åž‹æœ‰æ•ˆæ€§
- **连接配置**:IP地址格式、端口号范围、超时设置
- **地址映射**:地址完整性、数据类型有效性、字段长度
- **数据库配置**:连接字符串格式、数据库类型支持
- **表配置**:表名有效性、命名规范
### 3. æ•°æ®åº“连接测试
系统提供实时数据库连接测试功能:
- **自动检测**:配置加载后自动检测数据库连接状态
- **手动测试**:点击"测试数据库"按钮进行连接验证
- **状态显示**:实时显示连接状态(绿色=成功,红色=失败)
- **错误诊断**:显示详细的连接失败原因
### 4. è‡ªåŠ¨è¡¨ç®¡ç†
数据库表自动创建和管理功能:
- **智能检测**:自动检测表是否存在,避免重复创建
- **兼容处理**:Oracle使用原生SQL,其他数据库使用SqlSugar ORM
- **错误容错**:表已存在时不会报错,继续正常运行
- **日志记录**:详细记录表创建过程和结果
### 3. è‡ªåŠ¨é‡è¿ž
@@ -274,6 +400,19 @@
- å°†é…ç½®æ–‡ä»¶æ”¾åœ¨ `config/` ç›®å½•下
- å»ºè®®ä¸ºä¸åŒé¡¹ç›®åˆ›å»ºç‹¬ç«‹çš„配置文件
- å®šæœŸå¤‡ä»½é‡è¦çš„配置文件
- ä½¿ç”¨æœ‰æ„ä¹‰çš„æ–‡ä»¶åï¼ˆå¦‚:`生产线A_config.json`、`测试环境_config.json`)
### æ•°æ®åº“安全
- **连接字符串保护**:避免在配置文件中使用明文密码
- **权限控制**:为应用程序创建专用数据库用户,仅授予必要权限
- **数据加密**:敏感数据在传输和存储时进行加密
- **访问日志**:启用数据库访问日志记录
### æ€§èƒ½ä¼˜åŒ–
- **连接池**:系统自动管理数据库连接池
- **批量操作**:支持批量插入数据以提高性能
- **自动清理**:根据配置自动清理过期数据
- **索引优化**:关键字段已创建适当索引
### å®‰å…¨è€ƒè™‘
- ä¿æŠ¤æ•°æ®åº“连接字符串中的密码
@@ -292,12 +431,39 @@
- `modbus_config.json` - åŸºç¡€é…ç½®æ¨¡æ¿
### æ–‡æ¡£èµ„源
- `config/Oracle使用指南.md` - Oracle数据库配置指南
- `docu/需求.txt` - åŽŸå§‹éœ€æ±‚æ–‡æ¡£
- `CLAUDE.md` - å¼€å‘者指南
- `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.0
---
## æ›´æ–°è®°å½•
### ç‰ˆæœ¬ 1.1(当前版本)
**更新日期**: 2024å¹´12月
**主要更新**:
- âœ… æ–°å¢žæ•°æ®åº“连接测试按钮和状态显示
- âœ… å¢žå¼ºOracle 11g兼容性,使用原生SQL建表
- âœ… è‡ªåŠ¨è¡¨åˆ›å»ºåŠŸèƒ½ï¼Œæ”¯æŒå¤šç§æ•°æ®åº“ç±»åž‹
- âœ… æ”¹è¿›æ•°æ®åº“配置管理,支持自定义表名
- âœ… ä¼˜åŒ–错误处理和日志记录
- âœ… æ·»åŠ æ•°æ®åº“æ€§èƒ½ä¼˜åŒ–å’Œå®‰å…¨å¢žå¼º
### ç‰ˆæœ¬ 1.0
**更新日期**: 2024å¹´  
**适用于**: GSModbus通用Modbus通信系统
**功能**: GSModbus基础通信系统
---
**适用于**: GSModbus通用Modbus通信系统
**数据库支持**: Oracle 11g, SQL Server, MySQL, SQLite
**开发框架**: .NET 8.0 Windows Forms