| | |
| | | - ä½ç½®ï¼`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 æ°æ®å¹¶èªå¨ä¿åå°æ°æ®åºï¼å¦æå¯ç¨ï¼ |
| | | |
| | | ## é
ç½®æä»¶è¯¦è§£ |
| | | |
| | |
| | | "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å离以确ä¿å
¼å®¹æ§ |
| | | |
| | | ## æ
éæé¤ |
| | | |
| | |
| | | - 确认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ï¼ç¡®ä¿ç¨æ·æè¶³å¤ç表空é´é
é¢ |
| | | - æ£æ¥è¡¨åæ¯å¦ä¸ç°æå¯¹è±¡å²çª |
| | | - æ¥çåºç¨ç¨åºæ¥å¿è·å详ç»éè¯¯ä¿¡æ¯ |
| | | - 妿éè¦ï¼å¯ä»¥æå¨æ§è¡å»ºè¡¨èæ¬ |
| | | |
| | | ## é«çº§åè½ |
| | | |
| | |
| | | ### 2. é
ç½®éªè¯ |
| | | |
| | | ç³»ç»å¨å è½½é
ç½®æä»¶æ¶ä¼èªå¨éªè¯ï¼ |
| | | - IPå°åæ ¼å¼ |
| | | - 端å£å·èå´ |
| | | - å°åæ å°å®æ´æ§ |
| | | - æ°æ®ç±»åæææ§ |
| | | - **è¿æ¥é
ç½®**ï¼IPå°åæ ¼å¼ã端å£å·èå´ãè¶
æ¶è®¾ç½® |
| | | - **å°åæ å°**ï¼å°å宿´æ§ãæ°æ®ç±»åæææ§ãåæ®µé¿åº¦ |
| | | - **æ°æ®åºé
ç½®**ï¼è¿æ¥åç¬¦ä¸²æ ¼å¼ãæ°æ®åºç±»åæ¯æ |
| | | - **表é
ç½®**ï¼è¡¨åæææ§ãå½åè§è |
| | | |
| | | ### 3. æ°æ®åºè¿æ¥æµè¯ |
| | | |
| | | ç³»ç»æä¾å®æ¶æ°æ®åºè¿æ¥æµè¯åè½ï¼ |
| | | - **èªå¨æ£æµ**ï¼é
ç½®å è½½åèªå¨æ£æµæ°æ®åºè¿æ¥ç¶æ |
| | | - **æå¨æµè¯**ï¼ç¹å»"æµè¯æ°æ®åº"æé®è¿è¡è¿æ¥éªè¯ |
| | | - **ç¶ææ¾ç¤º**ï¼å®æ¶æ¾ç¤ºè¿æ¥ç¶æï¼ç»¿è²=æåï¼çº¢è²=å¤±è´¥ï¼ |
| | | - **éè¯¯è¯æ**ï¼æ¾ç¤ºè¯¦ç»çè¿æ¥å¤±è´¥åå |
| | | |
| | | ### 4. èªå¨è¡¨ç®¡ç |
| | | |
| | | æ°æ®åºè¡¨èªå¨å建å管çåè½ï¼ |
| | | - **æºè½æ£æµ**ï¼èªå¨æ£æµè¡¨æ¯å¦åå¨ï¼é¿å
éå¤å建 |
| | | - **å
¼å®¹å¤ç**ï¼Oracle使ç¨åçSQLï¼å
¶ä»æ°æ®åºä½¿ç¨SqlSugar ORM |
| | | - **é误容é**ï¼è¡¨å·²å卿¶ä¸ä¼æ¥éï¼ç»§ç»æ£å¸¸è¿è¡ |
| | | - **æ¥å¿è®°å½**ï¼è¯¦ç»è®°å½è¡¨å建è¿ç¨åç»æ |
| | | |
| | | ### 3. èªå¨éè¿ |
| | | |
| | |
| | | - å°é
ç½®æä»¶æ¾å¨ `config/` ç®å½ä¸ |
| | | - 建议为ä¸å项ç®å建ç¬ç«çé
ç½®æä»¶ |
| | | - 宿å¤ä»½éè¦çé
ç½®æä»¶ |
| | | - ä½¿ç¨ææä¹çæä»¶åï¼å¦ï¼`ç产线A_config.json`ã`æµè¯ç¯å¢_config.json`ï¼ |
| | | |
| | | ### æ°æ®åºå®å
¨ |
| | | - **è¿æ¥åç¬¦ä¸²ä¿æ¤**ï¼é¿å
å¨é
ç½®æä»¶ä¸ä½¿ç¨ææå¯ç |
| | | - **æéæ§å¶**ï¼ä¸ºåºç¨ç¨åºå建ä¸ç¨æ°æ®åºç¨æ·ï¼ä»
æäºå¿
è¦æé |
| | | - **æ°æ®å å¯**ï¼æææ°æ®å¨ä¼ è¾åå卿¶è¿è¡å å¯ |
| | | - **è®¿é®æ¥å¿**ï¼å¯ç¨æ°æ®åºè®¿é®æ¥å¿è®°å½ |
| | | |
| | | ### æ§è½ä¼å |
| | | - **è¿æ¥æ± **ï¼ç³»ç»èªå¨ç®¡çæ°æ®åºè¿æ¥æ± |
| | | - **æ¹éæä½**ï¼æ¯ææ¹éæå
¥æ°æ®ä»¥æé«æ§è½ |
| | | - **èªå¨æ¸
ç**ï¼æ ¹æ®é
ç½®èªå¨æ¸
çè¿ææ°æ® |
| | | - **ç´¢å¼ä¼å**ï¼å
³é®å段已å建éå½ç´¢å¼ |
| | | |
| | | ### å®å
¨èè |
| | | - ä¿æ¤æ°æ®åºè¿æ¥å符串ä¸çå¯ç |
| | |
| | | - `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 |