上海代理商
SIEMENS西門子上海朕鋅電氣設備有限公司
鐘濤()
24小時銷售及:
電 話:
手 機:
: 1824547528
地址:上海市金山區楓灣路500號
說明: 為了對文本文件進行保存或讀取信息的操作,必須能夠訪問 Windows CE 的文件系統。通過的對象變量進行這種訪問。
使用VB腳本可以存儲任何數據到操作面板或USB可移動介質。該FAQ解釋如何編寫相應的腳本。
描述:
為了對文本文件進行保存或讀取信息的操作,必須能夠訪問 Windows CE 的文件系統。通過的對象變量進行這種訪問。
注意:
- 只有當WinCC的標準機制(存儲數據歸檔)不能滿足應用需求時,才會考慮使用腳本保存數據。
- 下面涉及到的方法,依賴于操作面板的操作系統和使用的組態軟件。關于處理其它配置的信息,請參考本文末尾的注釋。
目錄:
- 將信息保存到文本文件或 csv 文件的示例
- 從文本文件或 csv 文件讀取信息的示例
- 下載源代碼和示例工程
在 WinCC flexible 中關于 VBScript 命令的文檔
關于 VBScript 的相關信息可以參見 WinCC flexible 幫助系統,位于“目錄” 頁面下“WinCC flexible 信息系統 > 使用 WinCC flexible > 參考”。
圖 01
將信息保存到文本文件或 csv 文件的示例
下面的表格說明如何在 WinCC flexible 中,將信息保存到文本文件或 csv 文件。
序號 | 操作過程 |
1 | 創建一個新項目 通過單擊“項目 > 新建...”,并選擇“Multi Panels > MP 370 12" Touch”操作面板,創建新項目。 圖 02
|
2 | 創建變量- 通過“項目 > Operator panel_1 > 通訊 > 變量”打開變量編輯器。
- 按如下名稱,添加 4 個內部變量:
序號 | 變量 | 數據類型 | 1 | bExtension | Bool | 2 | szMaterial | String | 3 | nPressure | Int | 4 | nTemperature | Int | 表 01 - 變量 圖 03
注意: 示例中僅使用了內部變量。可以使用連接控制器的變量。 |
3 | 添加對象- 添加兩個矩形。
- 組合一個符號 IO 域和三個普通 IO 域。
- 擴大 WinCC flexible 畫面,添加 1 個按鈕和 9 個文本域。
- 如圖 04 所示布局所有對象,并輸入如下文字:
“Process values” “Pressure:” “Temperature:” “Material:” “Text file:” “mbar” “°C”
"Settings" “ Extension:” - 創建一個文本列表,命名為“Extension”,并包含如下條目:
0 => “.txt” 1 => “.csv”
圖 04
|
4 | 建立腳本、文本列表和變量間的關聯- 創建一個腳本,名稱為“Write_data”。為此在項目樹中單擊“腳本 > 添加腳本”。
- 連接如下的變量和新創建的腳本到相關對象上:
變量/腳本 | 對象 | 對象用于... | nPressure | IO field | Pressure | nTemperature | IO field | Temperature | szString_1 | IO field | Material | bExtension | Symbolic IO field | Extension | Write_data | Button | Save file | 表 02 - 鏈接到不同對象 - 將文本列表“Extension”連接到符號 IO 域。
圖 05
|
5 | 創建腳本 - *步- 添加示例代碼到“Write_data”腳本中。
注意: 關于不同 VBScript 命令的更多信息,請參見 WinCC flexible 幫助。
源代碼的說明: 在 <行 10> 中聲明的變量只在腳本內部有效。在 <行 12> 中的變量“bExtension”是一個全局變量,可以在整個 WinCC flexible 項目中使用。使用該變量,可以通過符號 IO 域選擇包含文件名稱和擴展名的路徑。 如果腳本發生運行時錯誤,那么“On Error Resume Next”語句是必需的。只要發生這種錯誤,該錯誤程序的下一條語句能自動執行。
在 <行 24> 中的語句將訪問 Windows 文件系統的對象傳送到對象變量“f”。如下源代碼包含運行時錯誤處理程序。如果運行時發生錯誤,將會在消息窗口中輸出錯誤消息并終止腳本的運行。 注意: 如果使用“FileCtl.File”,將不能訪問 Windows CE 文件系統。如果在使用其它操作系統的面板上運行該腳本,將會出現運行時錯誤。 圖 06
|
6 | 注意事項 使用創建的“f”對象的“Open”方法,打開由“path”(路徑名稱)參數的文件。如果相關的文件不存在,則如上提到的錯誤處理程序將執行。- file.Open Path name, Mode, [access], [lock], [reclength]
如果文件或路徑名稱不存在,則如上提到的錯誤處理程序將執行。 的字符串將被“f”對象的“LinePrint”方法寫入已打開的文件中。在此,變量值也被傳送和保存。 注意: 如果欲為文本字符串保存時間戳,可以使用 Now 函數。
示例: f.LinePrint( Now & "; material; " & szMaterial & ";") 然后使用“Close”方法關閉該文件。關鍵字“Nothing” 用于分離對象變量,該變量由“Set”命令分配給該對象。 上海代理商 zui后一條語句傳輸用戶自定義的系統消息到 HMI 消息系統。 圖 07
|
7 | 啟動運行- 將 WinCC flexible 工程傳輸到操作面板并啟動運行。
注意: 為了調試腳本,啟動帶腳本調試器的 WinCC flexible 運行系統。 - 預設不同的數值并輸入期望的材料名稱。
- 然后單擊“Save data”按鈕。
- 在符號 IO 域選擇“.csv”并再次點擊按鈕。
- 終止操作面板的運行。
圖 08
|
8 | 打開文本文件 如果將兩種文本文件都存到存儲卡上,那么可以在 PC 上使用讀卡器看到這些文件,并使用適當的程序打開。- 打開擴展名為“.txt”的文本文件。
- 然后關閉文件。
圖 09
- 可以使用 Microsoft Excel 打開擴展名為“.csv”的文件。
- 關閉 Excel 程序。
圖 10
|
從文本文件或 csv 文件讀取信息的示例
如下表格說明如何從文本文件或 csv 文件中讀出信息并在 WinCC flexible 中顯示。
該示例基于先前的示例。先前示例中的配置在該示例中不是必須的。但是用到的組件仍然適用。
序號 | 操作過程 |
1 | 創建一個新項目 - 可選項 如果使用先前的工程,那么直接進入 步驟 2。- 通過單擊“項目 > 新建...”,并選擇“Multi Panels > MP 370 12" Touch”操作面板,創建新項目。
|
2 | 連接變量- 通過“項目 > Operator Panel_1 > 通訊 > 變量”打開變量編輯器。
- 添加如下名稱的3個內部變量:
序號 | 變量 | 數據類型 | 1 | szString_1 | String | 2 | nValue_1 | Int | 3 | nValue_2 | Int | 表 03 - 變量
注意: 如果不使用先前的項目,需要添加一個“Bool”變量“bExtension”。
圖 11
|
3 | 添加對象- 添加一個矩形 - 見圖 12。
- 如果沒有,放置一個符號 IO 域和三個普通 IO 域。
- 擴大 WinCC flexible 畫面,添加 1 個按鈕和 4 個文本域。
- 如圖 12 所示布局所有對象并輸入如下文字:
“Value_1:” “Value_2:” “String_1:” “Text file:” “Settings” (如果沒有) “Extension:” (如果沒有) - 若尚未創建文本列表,則創建一個文本列表,命名為“Extension”,并含有如下條目:
0 => “.txt” 1 => “.csv”
圖 12
|
4 | 建立腳本、文本列表和變量間的關聯- 創建一個腳本,名稱為“Read_data”。為此在項目樹中單擊“腳本 > 添加腳本”。
- 鏈接如下變量和新創建的腳本到相關的對象上:
變量/腳本 | 對象 | 對象用于... | nValue_1 | IO field | Value_1 | nValue_2 | IO field | Value_2 | szString_1 | IO field | String_1 | bExtension*) | Symbolic IO field | Extension | Read_data | Button | Read data | 表 04 - 鏈接到不同對象 *)這些鏈接僅當沒有為存儲文件做過配置時是必需的。 - 將文本列表“Extension”連接到符號 IO 域,若尚未作此操作(也可參見圖 05)。
圖 13
|
5 | 創建腳本 - *步- 添加示例代碼到“Read_data”腳本中。
注意: 關于不同 VBScript 命令的更多信息,請參見 WinCC flexible 幫助。
源代碼的說明: 腳本中聲明的所有變量只在腳本內部有效。使用符號 IO 域,通過在腳本 <行 17> 中的變量“bExtension”,可以選擇包含文件名稱和擴展名的路徑。
如果腳本發生運行時錯誤,那么“On Error Resume Next”語句是必需的。只要發生這種錯誤,只要發生這種錯誤,該錯誤程序的下一條語句能自動執行。 在 <行 24> 中的語句將訪問 Windows 文件系統的對象傳送到對象變量“f”。如下源代碼包含運行時錯誤處理程序。如果運行時發生錯誤,將會在消息窗口中輸出錯誤消息并終止腳本的運行。 注意: 如果使用“FileCtl.File”,將不能訪問 Windows CE 文件系統。如果在使用其它操作系統的面板上運行該腳本,將會出現運行時錯誤。 圖 14
|
6 | 創建腳本 - 第二步 使用創建的“f”對象的“Open”方法,打開由“path”(路徑名稱)參數的文件。如果相關的文件不存在,則如上提到的錯誤處理程序將執行。- file.Open Path name, Mode, [access], [lock], [reclength]
如果文件無法打開,則如上提到的錯誤處理程序將執行,從而安全地終止腳本運行。 使用“Do-While-Loop”語句,通過對象變量“f”的“LineInputString”方法,當循環執行時,可以一行一行地讀出文本文件中的內容。一旦到達文本文件末尾循環就被終止。 函數“Split”以分隔符來分離從文件中讀取的文本行(expression),該分隔符作為第二個可選參數。分離后的內容被傳送到一個一維數組。本例中沒有使用zui后兩個參數。 - Split(Expression[,delimiter[,Number[,compare]]])
因為當保存時,可能包含空字符串(例如,參見圖 09),這些字符串通過“Replace”函數來刪除。因此,前三個參數必須。*個參數包含字符串 (expression) ,對該字符串執行搜索(SearchCS) ,搜索到的字符被替換為由參數“ReplaceWith”的字符。 - Replace(Expression, find, replace with [,Start[,Number[,Compare]]])
圖 15
|
7 | 創建腳本 - 第三步 為了保持數據結構,所有數據被傳入一個二維數組“HiField”。因此并非該數組中所有的數據都是必需的,所以僅將數組中相關的數據傳送到 WinCC flexible 全局變量中。示例 - HiField (a, b)的結構和內容: 數組 | b | 0 | 1 | 2 | a | 0 | "material" | "Steel" | "" | 1 | "pressure" | "12" | "mbar" | 2 | "temperature" | "56" | "°C" |
|