暫存器
暫存器是 ADE HMI 設計中用來儲存輸出入資料,控制元件狀態和與使用者互動的重要工具, 本章將詳細描述ADE中暫存器的使用方法
ADE的元件,以運作方式分類的話,大致可以分為:
-
輸入元件:
從使用者或是外界(I/O,通訊)輸入資料的輸入元件,譬如各種按鈕,觸控區域,數位輸入和即時時鐘等。
-
輸出元件:
反映數值,或是對外輸出資料者,譬如圓形進度條,影像清單, 數位輸出,脈衝寬度調變和聲音等。
-
輸入&輸出元件:
同時具備輸入以及輸出特性,可以接受使用者輸入,並且輸出反映的數值的,譬如帶滑鈕的可輸入條狀調節器,以及可以提供使用者輸入的旋轉影像等。
然而輸入的值,可能需要被記錄,被Blockly程式運算,甚至是經過不同修改後才能反映到輸出端去,因此,抽象化出一個可以用來儲存使用者輸入,I/O輸入,通訊輸入,並提供程式運算,且能作為元件顯示數值,通訊輸出,或是I/O輸出的實體,即可滿足這些要求。在ADE中,這個實體叫做暫存器(Register),它的功能可以被想像成是高階語言中的全域變數,或是PLC內部的X,Y,D,M等暫存器,每個暫存器擁有名稱,編號(ID),資料型別等屬性,可以用來儲存對應的資料。
如欲快速入門,可以觀看博象教育影片,幫助了解暫存器
-
教育影片
暫存器介紹
暫存器分為三種:
-
系統預設暫存器:
譬如用來提供換頁功能的system_page,屬於這類暫存器,任何使用這程式,將頁面名稱寫入這個暫存器,系統立即跳到該頁。
-
產品樣板預設暫存器:
不同的產品,會搭配不同的I/O組態,每個IO會對應一個或是多個暫存器,這些暫存器在開啟設計文件樣版時會被加入設計中並自動綁定I/O元件,使用者不需設定與修改,即可直接使用。
-
使用者定義暫存器:
使用者可以自訂任一多暫存器,用來記錄各種數值或是狀態,其使用方式就像高階語言中的全域變數一般。
在程式工具的暫存器編輯視窗中,使用者可以自行建立暫存器,如下圖所示:
暫存器對話窗同時顯示暫存器的序號、名稱、描述、型別、初始值、是否為系統暫存器、當此暫存器值改變時是否自動通訊等,也可以利用Blockly編輯器驗證暫存器內容。若此暫存器無人使用,則按垃圾桶圖示即可刪除。
ADE會自動指定序號給暫存器,使用者可以藉由拖曳暫存器改變序號的順序。
當輸入元件要保存資料,只要在ADE指定要將資料儲存進去的暫存器即可。
當輸出元件要顯示資料,只要在ADE指定要取出資料來顯示的暫存器即可。
暫存器觀念的引入,可將ADE內,資料的取得和儲存的使用區分開來,並利用簡單的暫存器綁定,達到修改或是顯示暫存器內容的功能。
暫存器的綁定與操作可以參考以下範例:
首先,綁定暫存器num到➕按鍵的事件,設定遞增數值,因此當按鍵被按下時,綁定的暫存器數值會遞增
其次,綁定暫存器num到➖按鍵的事件,設定遞減數值,因此當按鍵被按下時,綁定的暫存器數值會遞減
第三,綁定暫存器num到歸零按鍵的事件,設定數值0,因此當按鍵被按下時,綁定的暫存器數值會被設定為0
使用者可以拖入進度條和捲動文本,將綁定暫存器值設為num,並將進度條最小資料值以及最大資料值設定成適當的值,這樣進度條和捲動文本就會即時顯示暫存暫存器的數值。
由範例可以看出,一個暫存器,一個暫存器的數值會被輸入元件影響,並且可由輸出元件顯示。
暫存器運用
關於ADE上暫存器使用請參考 暫存器選擇器 以及 暫存器操作 相關章節。
在ADE Blockly程式中亦可以使用以及設定暫存器,說明如下:
在Blockly編輯視窗中,選擇Register標籤,出現如下圖顯示,第一個積木為設定暫存器,其他積木為使用暫存器積木。所有既有暫存器皆會被列出。
-
設定暫存器:使用設定暫存器積木,可以選定暫存器,並在其後連接設定值。設定值的型別需要與暫存器型別一致。此外若此暫存器已經綁定元件,則改變暫存器的值會立即影響元件的顯示,並在下一次螢幕更新時改變顯示。
-
使用暫存器:暫存器積木可以用在數值運算式,邏輯運算式以及字串運算積木。 此外,暫存器也支援事件驅動程式撰寫方式,當暫存器數值變化時,執行設定的程式。
使用者可使用系統元件庫中的暫存器監視器來監視暫存器的變化,若有任何輸入元件、I/O或者使用者撰寫的Blockly程式修改暫存器的值,皆會觸發暫存器監視器,使用者附掛的Blockly程式就會被執行。
點選Register標籤會看到既有的所有暫存器,以及設定暫存器的積木
設定暫存器,選擇要進行設定的暫存器,並將數值指派給它
使用暫存器,取得暫存器內容,可用於數值運算等