From da107f3b89271191052d9ece45e0010bb2d7d795 Mon Sep 17 00:00:00 2001
From: 啊鑫 <t2856754968@163.com>
Date: 星期六, 26 七月 2025 15:41:40 +0800
Subject: [PATCH] 修复Oracle数据库列名映射错误和空引用异常

---
 GSModbus使用操作指南.md |  212 +++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 189 insertions(+), 23 deletions(-)

diff --git "a/GSModbus\344\275\277\347\224\250\346\223\215\344\275\234\346\214\207\345\215\227.md" "b/GSModbus\344\275\277\347\224\250\346\223\215\344\275\234\346\214\207\345\215\227.md"
index 518c315..306019e 100644
--- "a/GSModbus\344\275\277\347\224\250\346\223\215\344\275\234\346\214\207\345\215\227.md"
+++ "b/GSModbus\344\275\277\347\224\250\346\223\215\344\275\234\346\214\207\345\215\227.md"
@@ -36,13 +36,40 @@
    - 浣嶇疆锛歚config/modbus_config.json`
    - 鐢ㄤ簬瀛︿範鍜屾祴璇�
 
-### 3. 杩炴帴 PLC
+### 3. 娴嬭瘯鏁版嵁搴撹繛鎺ワ紙鍙�夛級
 
-閰嶇疆鏂囦欢鍔犺浇鎴愬姛鍚庯細
+閰嶇疆鏂囦欢鍔犺浇鎴愬姛鍚庯紝濡傛灉鍚敤浜嗘暟鎹簱鍔熻兘锛岀郴缁熶細鑷姩鏄剧ず鏁版嵁搴撹繛鎺ョ姸鎬侊細
+
+#### 鏁版嵁搴撹繛鎺ョ晫闈㈣鏄�
+- **鏁版嵁搴撶姸鎬佹樉绀�**锛氫綅浜嶱LC杩炴帴鐘舵�佸彸渚э紝鏄剧ず褰撳墠鏁版嵁搴撹繛鎺ョ姸鎬�
+- **娴嬭瘯鏁版嵁搴撴寜閽�**锛氱敤浜庢墜鍔ㄦ祴璇曟暟鎹簱杩炴帴
+- **鐘舵�佹寚绀哄櫒**锛氱豢鑹茶〃绀鸿繛鎺ユ垚鍔燂紝绾㈣壊琛ㄧず杩炴帴澶辫触
+
+#### 鏁版嵁搴撹繛鎺ユ祴璇曟楠�
+1. 妫�鏌ユ暟鎹簱鐘舵�佹樉绀猴紙浣嶄簬PLC杩炴帴鐘舵�佸彸渚э級
+2. 鐐瑰嚮 **"娴嬭瘯鏁版嵁搴�"** 鎸夐挳楠岃瘉鏁版嵁搴撹繛鎺�
+3. 瑙傚療鐘舵�佸彉鍖栵細
+   - 馃煝 **杩炴帴鎴愬姛**锛氭樉绀虹豢鑹茬姸鎬佸拰鎴愬姛淇℃伅
+   - 馃敶 **杩炴帴澶辫触**锛氭樉绀虹孩鑹茬姸鎬佸拰閿欒淇℃伅
+4. 濡傛灉杩炴帴澶辫触锛岃妫�鏌ユ暟鎹簱閰嶇疆鍜岀綉缁滆繛鎺�
+
+#### 鑷姩琛ㄥ垱寤哄姛鑳�
+绯荤粺鏀寔鑷姩鍒涘缓蹇呴渶鐨勬暟鎹簱琛細
+- **PRODUCTION_DATA**锛氬瓨鍌ㄤ粠PLC璇诲彇鐨勭敓浜ф暟鎹�
+- **COMMUNICATION_LOG**锛氳褰曢�氫俊浜嬩欢鍜岀姸鎬�
+- **ERROR_LOG**锛氳褰曠郴缁熼敊璇拰寮傚父
+- **STATISTICS**锛氫繚瀛橀�氫俊缁熻淇℃伅
+
+**娉ㄦ剰**锛歄racle 11g鏁版嵁搴撻噰鐢ㄥ師鐢烻QL鏂瑰紡鍒涘缓琛紝纭繚鏈�浣冲吋瀹规��
+
+### 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**锛氭槸鍚﹀惎鐢ㄦ暟鎹簱鍔熻兘锛坱rue/false锛�
+- **Type**锛氭暟鎹簱绫诲瀷锛圤racle銆丼qlServer銆丮ySQL銆丼QLite锛�
+- **ConnectionString**锛氭暟鎹簱杩炴帴瀛楃涓�
+- **AutoCreateTables**锛氭槸鍚﹁嚜鍔ㄥ垱寤烘暟鎹簱琛�
+- **DataRetentionDays**锛氭暟鎹繚鐣欏ぉ鏁帮紙0琛ㄧず涓嶈嚜鍔ㄦ竻鐞嗭級
+- **Tables**锛氳嚜瀹氫箟琛ㄥ悕閰嶇疆锛堝彲閫夛紝浣跨敤榛樿鍚嶇О濡傛灉鏈寚瀹氾級
+
 ### 鏁版嵁搴撹〃缁撴瀯
 
 绯荤粺鑷姩鍒涘缓浠ヤ笅琛細
-- **PRODUCTION_DATA**: 涓昏鐢熶骇鏁版嵁
-- **COMMUNICATION_LOG**: 閫氫俊鏃ュ織
-- **ERROR_LOG**: 閿欒鏃ュ織
-- **STATISTICS**: 缁熻淇℃伅
+
+#### 1. PRODUCTION_DATA锛堢敓浜ф暟鎹〃锛�
+- **ID**锛氫富閿紝鑷搴忓垪
+- **READ_TIME**锛氭暟鎹鍙栨椂闂�
+- **PROJECT_NAME**锛氶」鐩悕绉�
+- **PLC_IP_ADDRESS**锛歅LC 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**锛歅LC 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**锛歅LC IP鍦板潃
+- **ERROR_TYPE**锛氶敊璇被鍨�
+- **ERROR_MESSAGE**锛氶敊璇秷鎭�
+- **STACK_TRACE**锛氬爢鏍堣窡韪�
+- **SEVERITY**锛氫弗閲嶇骇鍒紙High/Medium/Low锛�
+- **RETRY_COUNT**锛氶噸璇曟鏁�
+- **IS_RESOLVED**锛氭槸鍚﹀凡瑙e喅锛�1/0锛�
+
+#### 4. STATISTICS锛堢粺璁′俊鎭〃锛�
+- **ID**锛氫富閿紝鑷搴忓垪
+- **STATISTICS_TIME**锛氱粺璁℃椂闂�
+- **PROJECT_NAME**锛氶」鐩悕绉�
+- **PLC_IP_ADDRESS**锛歅LC 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**锛氱粺璁″懆鏈熺粨鏉熸椂闂�
+
+**娉ㄦ剰**锛歄racle 11g琛ㄥ垱寤洪噰鐢ㄥ師鐢烻QL璇彞锛屼笌SqlSugar ORM鍒嗙浠ョ‘淇濆吋瀹规��
 
 ## 鏁呴殰鎺掗櫎
 
@@ -230,11 +321,30 @@
 - 纭PLC瀵勫瓨鍣ㄦ暟鎹槸鍚︽湁鏁�
 
 #### 4. 鏁版嵁搴撹繛鎺ュけ璐�
-**鐜拌薄**: 鏃ュ織鏄剧ず鏁版嵁搴撹繛鎺ラ敊璇�
+**鐜拌薄**: 鏁版嵁搴撶姸鎬佹樉绀轰负绾㈣壊锛屾垨鐐瑰嚮"娴嬭瘯鏁版嵁搴�"鎸夐挳鍚庢樉绀鸿繛鎺ュけ璐�
 **瑙e喅鏂规硶**:
-- 妫�鏌ユ暟鎹簱杩炴帴瀛楃涓�
-- 纭鏁版嵁搴撴湇鍔℃槸鍚﹁繍琛�
-- 楠岃瘉鐢ㄦ埛鏉冮檺
+- **妫�鏌ヨ繛鎺ュ瓧绗︿覆**锛氱‘璁ゆ暟鎹簱IP銆佺鍙c�佺敤鎴峰悕銆佸瘑鐮佹纭�
+- **楠岃瘉鏁版嵁搴撴湇鍔�**锛氱‘璁racle/SQL Server绛夋暟鎹簱鏈嶅姟姝e湪杩愯
+- **妫�鏌ョ綉缁滆繛鎺�**锛氱‘淇濆簲鐢ㄧ▼搴忚兘璁块棶鏁版嵁搴撴湇鍔″櫒
+- **楠岃瘉鐢ㄦ埛鏉冮檺**锛氱‘璁ゆ暟鎹簱鐢ㄦ埛鏈夊垱寤鸿〃鍜岃鍐欐暟鎹殑鏉冮檺
+- **Oracle鐗规畩闂**锛氬鏋滄槸Oracle鏁版嵁搴擄紝纭繚宸插畨瑁匫racle Client鎴栦娇鐢∣racle.ManagedDataAccess
+
+#### 5. Oracle鏁版嵁搴撶壒娈婇棶棰�
+**鐜拌薄**: 鎻愮ず"ORA-00936: 缂哄け琛ㄨ揪寮�"鎴栧叾浠朞racle璇硶閿欒
+**瑙e喅鏂规硶**:
+- 绯荤粺宸查拡瀵筄racle 11g杩涜浼樺寲锛屼娇鐢ㄥ師鐢烻QL鏂瑰紡鍒涘缓琛�
+- 纭繚Oracle杩炴帴瀛楃涓叉牸寮忔纭細`Data Source=IP:PORT/SERVICE_NAME;User Id=USERNAME;Password=PASSWORD;`
+- 妫�鏌racle鏈嶅姟鍚嶇О鍜岀洃鍚櫒閰嶇疆
+- 濡傞渶鎵嬪姩鍒涘缓琛紝鍙傝�僠DatabaseManager.cs`涓殑Oracle寤鸿〃鑴氭湰
+
+#### 6. 鑷姩寤鸿〃澶辫触
+**鐜拌薄**: 鏁版嵁搴撹繛鎺ユ垚鍔熶絾琛ㄥ垱寤哄け璐�
+**瑙e喅鏂规硶**:
+- 妫�鏌ユ暟鎹簱鐢ㄦ埛鏄惁鏈塁REATE TABLE鏉冮檺
+- 瀵逛簬Oracle锛岀‘淇濈敤鎴锋湁瓒冲鐨勮〃绌洪棿閰嶉
+- 妫�鏌ヨ〃鍚嶆槸鍚︿笌鐜版湁瀵硅薄鍐茬獊
+- 鏌ョ湅搴旂敤绋嬪簭鏃ュ織鑾峰彇璇︾粏閿欒淇℃伅
+- 濡傛灉闇�瑕侊紝鍙互鎵嬪姩鎵ц寤鸿〃鑴氭湰
 
 ## 楂樼骇鍔熻兘
 
@@ -251,10 +361,26 @@
 ### 2. 閰嶇疆楠岃瘉
 
 绯荤粺鍦ㄥ姞杞介厤缃枃浠舵椂浼氳嚜鍔ㄩ獙璇侊細
-- IP鍦板潃鏍煎紡
-- 绔彛鍙疯寖鍥�
-- 鍦板潃鏄犲皠瀹屾暣鎬�
-- 鏁版嵁绫诲瀷鏈夋晥鎬�
+- **杩炴帴閰嶇疆**锛欼P鍦板潃鏍煎紡銆佺鍙e彿鑼冨洿銆佽秴鏃惰缃�
+- **鍦板潃鏄犲皠**锛氬湴鍧�瀹屾暣鎬с�佹暟鎹被鍨嬫湁鏁堟�с�佸瓧娈甸暱搴�
+- **鏁版嵁搴撻厤缃�**锛氳繛鎺ュ瓧绗︿覆鏍煎紡銆佹暟鎹簱绫诲瀷鏀寔
+- **琛ㄩ厤缃�**锛氳〃鍚嶆湁鏁堟�с�佸懡鍚嶈鑼�
+
+### 3. 鏁版嵁搴撹繛鎺ユ祴璇�
+
+绯荤粺鎻愪緵瀹炴椂鏁版嵁搴撹繛鎺ユ祴璇曞姛鑳斤細
+- **鑷姩妫�娴�**锛氶厤缃姞杞藉悗鑷姩妫�娴嬫暟鎹簱杩炴帴鐘舵��
+- **鎵嬪姩娴嬭瘯**锛氱偣鍑�"娴嬭瘯鏁版嵁搴�"鎸夐挳杩涜杩炴帴楠岃瘉
+- **鐘舵�佹樉绀�**锛氬疄鏃舵樉绀鸿繛鎺ョ姸鎬侊紙缁胯壊=鎴愬姛锛岀孩鑹�=澶辫触锛�
+- **閿欒璇婃柇**锛氭樉绀鸿缁嗙殑杩炴帴澶辫触鍘熷洜
+
+### 4. 鑷姩琛ㄧ鐞�
+
+鏁版嵁搴撹〃鑷姩鍒涘缓鍜岀鐞嗗姛鑳斤細
+- **鏅鸿兘妫�娴�**锛氳嚜鍔ㄦ娴嬭〃鏄惁瀛樺湪锛岄伩鍏嶉噸澶嶅垱寤�
+- **鍏煎澶勭悊**锛歄racle浣跨敤鍘熺敓SQL锛屽叾浠栨暟鎹簱浣跨敤SqlSugar ORM
+- **閿欒瀹归敊**锛氳〃宸插瓨鍦ㄦ椂涓嶄細鎶ラ敊锛岀户缁甯歌繍琛�
+- **鏃ュ織璁板綍**锛氳缁嗚褰曡〃鍒涘缓杩囩▼鍜岀粨鏋�
 
 ### 3. 鑷姩閲嶈繛
 
@@ -274,6 +400,19 @@
 - 灏嗛厤缃枃浠舵斁鍦� `config/` 鐩綍涓�
 - 寤鸿涓轰笉鍚岄」鐩垱寤虹嫭绔嬬殑閰嶇疆鏂囦欢
 - 瀹氭湡澶囦唤閲嶈鐨勯厤缃枃浠�
+- 浣跨敤鏈夋剰涔夌殑鏂囦欢鍚嶏紙濡傦細`鐢熶骇绾緼_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` - 鍘熷闇�姹傛枃妗e拰PLC鍦板潃鏄犲皠
+- `CLAUDE.md` - 寮�鍙戣�呮寚鍗楀拰椤圭洰鏋舵瀯璇存槑
+- `docu/MES鍦板潃.xlsx` - 璇︾粏鐨凱LC鍦板潃鏄犲皠琛�
+
+### 鏁版嵁搴撶浉鍏虫枃浠�
+- `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閫氫俊绯荤粺
\ No newline at end of file
+**鍔熻兘**: GSModbus鍩虹閫氫俊绯荤粺
+
+---
+
+**閫傜敤浜�**: GSModbus閫氱敤Modbus閫氫俊绯荤粺  
+**鏁版嵁搴撴敮鎸�**: Oracle 11g, SQL Server, MySQL, SQLite  
+**寮�鍙戞鏋�**: .NET 8.0 Windows Forms
\ No newline at end of file

--
Gitblit v1.9.3