6ES7 952-1KL00-0西門子內存卡6ES7 952-1KL00-0AA0
說明:
當與第三方系統通訊時(例如通過 Modbus 協議時), 由于在存儲器中不同的字節順序可能會導致通信的沖突。 S7-200 是以大尾形式存儲:數據中的高字節存儲在存儲區的低位地址。其它的存儲方式:
- 小尾:數據中的低字節存儲在存儲區的低位地址。
- 中尾:3-4-1-2 順序或 2-1-4-3 順序 (數字順序與所參考的大尾雙字中的字節順序相對應)
通過使用 "Endian" 庫將字和雙字轉換成為需要的字節順序
圖. 01
庫包含了以下程序塊 "Endian_B_DW", "Endian_D_DW" and "Endian_B_W"。
Endian_B_DW
圖. 02
"Endian_B_DW" 塊將 "IN" 端雙字的字節順序轉換成 "OUT" 端雙字的字節順序,此功能被用來將大尾形式存儲的雙字轉換成小尾形式存儲或相反。
圖. 03
圖. 03 顯示了雙字 VD0 = 16#1A2B3C4D 轉換成雙字 VD4 = 16#4D3C2B1A。雙整型數 439.041.101 與 16 進制數1A2B3C4D 和浮點數 3.541068*10^(-23) 是相*的。
Endian_W_DW
圖. 04
"Endian_W_DW" 塊將 "IN" 端 雙字中字的順序轉換成為 "OUT" 端雙字中字的順序。此功能將以大尾存儲的雙字轉換為中尾3-4-1-2存儲或相反。
圖. 05
圖. 05 顯示了雙字 VD0 = 16#1A2B3C4D 轉換成為雙字 VD8 = 16#3C4D1A2B。
Endian_B_W
圖. 06
"Endian_B_W" 塊將 "IN" 端 字中的字節順序轉換成 "OUT" 端字中的字節順序 。此功能將以大尾存儲的字轉換成小尾存儲或相反。如果將此功能用于雙字中的兩個字,就可以實現將大尾存儲的雙字轉換成中尾2-1-4-3存儲或相反。
問題描述:
當高性能電容的時間(根據 CPU 類型不同而不同)用完,或者電池模塊過期(200天),修改過的參數就會丟失。使用以下程序庫所提供的子程序,可以在 CPU 中的內部 EEPROM 中保存完整的變量區域,在運行期內該區域是不易失的(在系統手冊中僅說明了保存單個變量)。
軟件要求:
此操作程序庫使用需要 STEP 7 Micro/WIN V4.0 SP7 或者更高的版本 。
警告:
當 CPU 啟動時,包含 DB (數據塊)的存儲卡不可以被插入。如果包含 DB 的存儲卡被插入,CPU 會讀出存儲卡的內容而不是去讀內部 EEPROM,同時存儲數據被錯誤的寫回。
合并和使用庫:
- 將下載的文件“store_to_eeprom.zip”保存在電腦上。
- 在獨立的目錄下解壓文件“store_to_eeprom.zip”。
- 雙擊開始解壓的 STEP 7 Micro/WIN 庫 “store_to_eeprom.mwl”。
- 在 STEP 7-Micro/WIN 對話欄中打開確認集成的庫。
增加的 “EEPROM (v1.0)”文件夾中包含了子程序“EEPROM_Direct"”和 “EEPROM_Indirect”。
圖:01
使用子程序:
- 在網絡中從文件夾“EEPROM (v1.0)”插入所需要的子程序。
- 根據例程中的參數列表給所選子程序分配輸入輸出參數。
使用適當的邏輯連接,以確保在執行期間程序執行觸發輸入位“Start”保持為1 (高)。
更多的信息也可以在子程序的注釋中得到。.
注意:
不能以很高的頻率在 EEPROM 上保存數據。EEPROM 典型的存儲次數為100,000次。如果超過這個值,CPU 將發生故障。 如果按小時在 EEPROM 上保存數值,那么 EEPROM 的預計使用壽命是 11 到 12 年。
起始地址為直接尋址“EEPROM_direct"”例程:
圖: 02
參數 | 變量類型 | 說明 |
EN | BOOL | 必須始終為1(高) |
Start | BOOL | 上升沿 (0 ->1)觸發程序運行;必須保持1 (高) 直到 BUSY 位變成 0 (低)。 |
V_Start | INT | 偏移量(起始地址)。例如,200=VB 200 |
Length | INT | 從偏移量(起始地址)開始待保存的字節數 |
Memory | INT | 用于子程序的臨時存儲區 |
Busy | BOOL | 過程狀態 1 (高),程序在運行中 |
Done | BOOL | 結束狀態 1 (高),成功完成保存 |
表: 01
起始地址為間接尋址“EEPROM_indirect”例程:
圖: 03
參數 | 變量類型 | 說明 |
EN | BOOL | 必須始終為1(高) |
Start | BOOL | 上升沿 (0 ->1)觸發程序運行;必須保持1 (高) 直到 BUSY 位變成 0 (低)。 |
Address | DWORD | 起始地址偏移量(起始地址以DWORD類型變量讀入) |
Length | INT | 從偏移量(起始地址)開始待保存的字節數目 |
Memory | INT | 用于子程序的臨時存儲 |
Busy | BOOL | 過程狀態 1 (高),程序在運行中 |
Done | BOOL | 結束狀態 1 (高),成功完成保存 |
表:02
程序測試:
程序運行后, 刪除可保持的 V 變量并將存儲的數據裝載回 CPU。
序號. | 解釋 |
1 | 刪除數據: 由路徑“View > Component > System Block"”到“System Block"”選擇“Retentive Ranges”表。
選擇數據范圍,輸入起始地址和范圍。點擊“Clear”按鈕。 例程如下圖顯示: |