前面一篇博客通過幫助文件大體上描述了集中參數存儲類型的含義,這一篇就用一個實際的例子來體會一下。
1. 新建一個freelance 2019項目,搭建基本的層級結構
2. 硬件結構添加模擬器和操作員站
3. 模擬器和操作員站的IP地址都修改成127.0.0.1
4. 雙擊myFBD_Class層級,定義變量
可以看出定義了VAR_IN、VAR_OUT、VAR_DPS、PARA_EXP、PARA_VIS五種類型。
VAR_IN為自定義功能塊的輸入變量,在引用自定義功能塊的時候,可以和外部變量關聯。
VAR_OUT為自定義功能塊的輸出變量,組態自定義變量的對話框后,在引用自定義功能塊的時候,可以和外部變量關聯。
VAR_DPS為自定義功能塊的內部變量,組態自定義變量的時候這類變量不會出現在變量列表里面,不可以和外部變量關聯。
PARA_EXP 自定義功能塊要引用系統定義功能塊時,為系統功能塊參數做動態定義,這個后面還會詳細說明。
PARA_VIS 創建用戶自定義功能塊類就會自動創建PARA_VIS類型的參數,在主程序調用用戶自定義功能塊時,雙擊就會自動出現這幾個參數填寫的項目。
雙擊Analog_Scale,寫下面的程序
這里做了一個很簡單的程序,只是為了體會一下這幾種參數類型。
首先IN_INT為VAR_IN 類型,這種類型不會出現在自定義功能塊的對話框的變量列表,屬於“必選項”,在主程序使用自定義功能塊時,可以將AI模板通道定義的變量傳遞給它。輸入變量做了數據類型轉換,轉換成REAL數據類型,賦值給VAR_DPS類型變量IN_REAL,這種類型的變量僅僅用於自定義功能塊內部的數據傳遞,不會出現在對話框編輯的變量列表。
VAR_DPS類型變量IN_REAL傳遞數據給模擬量的量程轉換功能塊,這是一個系統自帶的功能塊,雙擊可以看到參數設置對話框
可以看出這個功能塊需要定義輸入和輸出的上下限范圍。在編輯自定義功能塊時,保持輸入輸出范圍為空,在主程序調用自定義功能塊的時候,通過PARA_EXP類型參數來賦值,從而滿足不同情況下的模擬量轉換需求。
可以注意到定義PARA_EXP類型參數時,有下圖紅圈的參數,這些參數看起來怪怪的,有些莫名其妙,是怎么來的,怎么知道含義?
關鍵點就是這個系統功能塊的幫助文件。
幫助文件很清楚的寫了這4個參數的名字。PARA_EXP類型的參數會出現在對話框編輯器里面。
VAR_DPS類型變量IN_REAL經過系統自帶的量程轉換功能塊,最終輸出給VAR_OUT類型的變量,VAR_OUT類型變量不會出現在對話框編輯其,屬於必選項。
打開myFBD_Class層級,點擊菜單編輯-對話框編輯
可以看到這個練習里面只有PARA_EXP類型參數出現在變量列表。紅圈的左移右移按鈕,表示這些變量是否出現在面板是可選的。
點擊下面的新頁,會創建一個新的參數設置頁和新的組。
將四個PARA_EXP變量移到新建的組,並且修改頁、組、變量標簽名字,這里要慎重,一定要對比幫助文件,確認變量和標簽含義的統一。
點擊確定按鈕,關閉對話框。
點擊保存、檢查錯誤,沒有問題.這一步必須要做,不然主程序調用自定義功能塊就找不到它。
雙擊打開程序測試層級,在右邊編輯區點擊鼠標右鍵,選擇塊-用戶功能塊。彈出用戶功能塊選擇列表
由於我只做了一個用戶功能塊類,所以列表只有一個選項。需要注意到盡管一個用戶功能塊類下面可以有很多用戶功能塊,但是主程序調用時,是選取的用戶功能塊類的名字,而不是其下程序段的名字。
選取完成后,右邊編輯區會出現剛才建立的功能塊類。
上圖中myFBD_Class就是我創建的用戶功能塊類的名字,這個FBD塊的外型和其他系統自帶的功能塊一致。
雙擊這個塊,彈出對話框
可以看出參數對話框頁名、組名、參數名字就和前面對話框組態時寫的名字一樣。所以在對話框編輯時,對頁名、組名、參數名做好注釋可以做到簡潔直觀。上面的名稱、短注釋、長注釋就是在創建用戶自定義功能塊類的時候,系統自動出現的Tag_Name、ShortText、LongText
看這4個參數的順序如果覺得別扭,可以重新回到自定義功能塊類的對話框編輯
把4個參數回退到左邊biani昂列表,然后按照輸入下限、輸入上限、輸出下限、輸出上限進行調整。
保存、檢查錯誤。
雙擊打開程序測試層級,再雙擊打開剛才新調用的用戶功能類myFBD_Class
這里參數的順序也調整過來了,數值也跟隨調整。說明調整自定義功能塊類的參數順序和分組之類,不需要把已經引用的自定義功能塊刪除掉,只要保存檢查錯誤沒有問題,就會更新一調用的功能塊。
完善一下程序
在操作員站的畫面引用PT1000_HMI變量。
保存、檢查錯誤沒有問題,運行模擬器,加載過程站和操作員站,修改PT1000數值,就可以看到PT1000_HMI隨着變化。
這個練習主要是針對自定義功能塊類的VAR_IN、VAR_OUT、VAR_DPS、PARA_EXP類型參數的理解。