公司新聞
西門子TIA Portal中WinCC 腳本使用技巧匯總
發布時間: 2024-05-13 23:33 更新時間: 2024-12-02 08:00
(1)為什么一個由內部變量的 “數值改變” 事件觸發的腳本不被執行?如果使用一個內部變量調用另外一個內部變量,以此,例如被調用的變量又去執行一個腳本(比如,根據變量變化),此時一個安全機制會阻止這個功能被執行。此安全功能是為了阻止連續的執行。例如在內部變量 “HMI_Tag_01” 屬性下,“更改數值”事件去置位內部變量 “HMI_Tag_02” 中的某一位。同時內部變量 “HMI_Tag_02” 的“更改數值”事件下又調用一個腳本。結果:這個腳本不會被執行。解決辦法使用和控制器通訊的外部變量。請注意,通過使用外部變量可以規避上述安全機制。在項目運行時可能會產生問題。(2)如何在一個腳本中訪問數組中的元素?對數組元素的訪問是通過數組的名稱和數組中由括號分隔的數組索引來實現的:“SmartTags("Array Name")(array index) ”例如 訪問數組 "DB10_HMI_Data" 的第二個元素 :Dim Tag_01 'Internal script tagTag_01 = SmartTags("DB10_HMI_Data")(2)注意使用下面語法訪問字符串類型數組中的元素:Dim Tag_01 'Internal script tagTag_01 = SmartTags("DB10_HMI_Data[2]")例如 通過一個循環描述數組 "DM10_HMI_Data" 的第一個元素至第十一個元素Dim Tag_01For Tag_01=0 to 10 SmartTags("DB10_HMI_Data")(Tag_01) = 5Next局部腳本的數組(該數組僅在此腳本中可用)可以使用同樣的方式查詢,對于多維數組,各個維度通過一個逗號分隔開。例如 訪問二維數組變量 "HMI_Data" 沒有連接控制器。Dim HMI_Data(10,10)Dim Tag_01Tag_01 = HMI_Data(0, 5)注意當使用控制器連接的數組元素時,推薦在腳本開始前將他們賦值給腳本內部變量,然后再使用內部變量進行其他工作。結束腳本前,將內部變量賦值給數組元素。 (3)如何在控制器和腳本之間有效的賦值過程變量數組?從控制器到一個腳本賦值,過程變量數組需要在一個循環中將數組元素一個一個賦值,參考示例。然而,也可以通過一個簡單的指令把局部腳本的數組的值賦給過程變量數組。例如 把控制器的數組 "CPU_Array" 的值賦給內部數組 "local_array" 和 把內部數組 "local_array" 的值賦給控制器的數組 "CPU_Array" Dim local_array(10)Dim i...' Copy from the CPU to the script:For i = 0 To 9 local_array(i) = SmartTags("CPU_Array")(i)Next...' Copy back to the CPU:SmartTags("CPU_Array") = local_array注意使用數組可能導致較高的通信負載和數據不一致。 (4)如何訪問動態庫 ( "動態鏈接庫 ",DLLs)?WinCC Comfort 和 Advanced 不能訪問 DLLs。WinCC Professional在用戶定義的C函數里可以調用DLL函數 (DLL = Dynamic Link Library) 。DLL 位于“..\Common Files\Siemens\bin”文件夾中,或位于 PATH 系統變量所定義的文件夾中。此變量由操作系統的系統屬性指定。步驟按如下步驟執行,以通過 DLL 調用函數:(1)打開要調用 DLL 函數的用戶自定義 C 函數。(2)在用戶自定義 C 函數的開始位置添加以下代碼: #pragma code(".dll")//聲明在 DLL 中存儲的函數:(...);(...);...(...);#pragma code結果<名稱.dll> 中的函數 <函數名稱 1=""> ... <函數名稱 n=""> 被聲明。可在用戶自定義 C 函數中調用這些函數。示例:以下示例顯示如何集成“kernel32.dll”文件和調用“GetLocalTime”函數: #pragma code("kernel32.dll")VOID GetLocalTime(LPSYSTEMTIME lpSystemTime);#pragma code() SYSTEMTIME st; GetLocalTime(&st); (5)如何用VBS腳本確定鼠標當前的位置?為了讀取當前鼠標的位置,需要訪問操作系統的 API (Application Programming Interface) 。VBS 不支持通過 DLLs 訪問操作系統的 API 。(6)為什么不能在腳本里使用 “ MsgBox ” 命令?“MsgBox” 命令不能用于 WinCC Comfort 和 WinCC Advanced 版本是由于安全的原因。 “MsgBox”的彈出顯示可能會覆蓋掉元素操作,比如:阻止設備的快速操作。此外,消息框可能會阻止腳本的進一步執行。解決辦法可以使用系統函數 ShowSystemAlarm。如何在一個腳本中使用十六進制符號給變量賦值?在腳本編輯器中把字符組合 "&h" 作為個十六進制常數的標識。例如Dim Tag_01Tag_01 = &h45E ' Corresponds to the decimal value "1118" (7)如何在腳本里顯示或隱藏各個層級?使用層是 WinCC (TIA Portal) 開發系統的一個功能。層只能在這里組態及顯示隱藏。這個功能在操作面板或 PC 的運行系統中不可用。所以不能用腳本顯示或隱藏“層”。解決辦法在 “ 屬性>動畫>可見性 ” 組態變量,根據變量值控制相關對象的顯示或隱藏。 (8)如何在腳本中合并字符串?可以使用 “ & ” 來合并字符串:例如 將 "Tag_Text_01", "Tag_Text_02" 和 "Tag_Text_03" 合并成新字符串 "Tag_01" Dim Tag_01, Tag_Text_01, Tag_Text_02, Tag_Text_03 Tag_01 = Tag_Text_01 & Tag_Text_02 & Tag_Text_03注意VB函數 CStr (Expression) 將相應的表達式轉換為“字符串”類型。 這樣在連接字符串轉換之前可以避免運行時出現錯誤。 (9)在腳本中如何在單獨的字符串之間插入一個通配符(空格)?為了在兩個文本之間插入任意數量的空格,可以使用兩個引號 " "。“空格”的數量取決于兩個引號間的距離" "。連接下一個字符需要再次使用連接操作 "&"。例如 將字符串 "Tag_Text_01", "Tag_Text_02" 和 "Tag_Text_03" 還有空格組合成一個新的字符串 "Tag_01" Dim Tag_01, Tag_Text_01, Tag_Text_02, Tag_Text_03 Tag_01 = Tag_Text_01 & " " & Tag_Text_02 & " " & Tag_Text_03(10)如何組態帶返回值和參數的腳本?腳本類型必須是 “ Function ” 才可以有返回值。所以,請在TIA Portal 中添加新 VB 函數的 "Properties > General > Settings" 類型的下拉列表框中選擇 “Function” 。在 “ Parameter ” 表格中您以創建腳本變量用來將內部變量或控制器變量傳入在腳本需要的時候。組態函數返回值,在腳本中為腳本的名稱分配表達式。例如組態函數類型,。按下面所示,在TIA Portal 組態名稱為 “ VBFunction_1 ” 腳本函數的參數和返回值: 圖. 01例如,腳本在按鈕的 “ Click ” 的事件中被使用。圖. 02在腳本中使用 "HMI_Tag_1" 的值賦給"Parameter_1" ,"HMI_Tag_2" 的值賦給"Parameter_2" ,必須有一行腳本定義了返回值。下面的例子的返回值是兩個傳入參數的乘積:VB_Function_1= Parameter_1 * Parameter_2"VB_Function_1" 是這個函數的名字,在執行這個腳本后,"HMI_Tag_3" 獲得這個函數的返回值是 "HMI_Tag_1" * "HMI_Tag_2" 。注意定義一個 "by reference" 的參數 ,這意味著作為 "By_Ref " 參數,僅對腳本中定義的和引用的變量產生影響,對 HMI 內部變量或者控制器變量不起作用。
其他新聞
- 弱電工程RS485總線知識匯總 2024-12-02
- 西門子 | 用SCL語言設計的功能塊,一鍵啟停 2024-12-02
- 案例 | 200SMART的模塊與SIMATIC NET 進行 S7 通信 2024-12-02
- PLC輸出信號—類型與詳細解析 2024-12-02
- 【經典】PLC之modbus 通訊案例 2024-12-02
- 實用 |PLC控制系統現場安裝調試實操步驟(二) 2024-12-02
- 實用 |PLC控制系統現場安裝調試實操步驟(一) 2024-12-02
- 圖文詳解 | 接近開關的功能原理和用途 2024-12-02
- 在PLC中用FOR循環指令如何輕松實現多個數據按順序排列? 2024-12-02
- 實例詳解 | 西門子200Smart的模擬量編程 2024-12-02
- 1500PLC 連接 V90 伺服系統實現位置閉環控制 2024-12-02
- 實例 | 1500PLC 連接 V90 伺服系統實現位置閉環控制 2024-12-02
- 如何下載和保存PLC程序? 2024-12-02
- 實例 | 威綸觸摸屏與三菱D700變頻器通訊 2024-12-02
- 解決問題 | 西門子V90 PTI位置控制常用問題匯總 2024-12-02
產品分類
聯系方式
- 電 話:13922889745
- 經理:向小姐
- 手 機:18475208684
- 微 信:18475208684