人機介面HMI

之前以為人機介面(Human Machine Interface以下簡稱HMI)不就是控制I/O而以嘛,按按畫面上的按鈕讓機器去做對應的動作而以,不過經過一個小實驗,我用到了巨集,我才發現HMI也可以做的功能很強大,因為他內部提供了超多暫存器,還有很多運算比較功能,計時,計數器...等也是樣樣都有,功能不會比PLC差,未來我覺得有可能HMI會跟PLC做結合,也就是HMI+PLC做成同一台產品,這樣可以SHARE彼此沒用到的暫存器,成本應該也會降低吧,此專頁記錄人機巨集方面的備忘。

應用巨集指令 //在 [應用] 功能表中有三種應用巨集指令。

{

INITIAL巨集:當人機第一次RUN此應用時(通常指斷電後第一次重新送電執行應用畫面程式),只執行一次INITIAL巨集內的程式指令。一般作為通訊參數的格式宣告用,資料的初值化定義..等使用。

BACKGROUND巨集:當人機RUN此應用時,就會循環執行BACKGROUND巨集內的程式指令,但每次將只執行最多30行的巨集指令。而且不論人機當前所在畫面為何,此巨集均將被執行。一般作為通訊命令控制用,PLC取樣資料的轉換..等使用。

CLOCK巨集:當人機RUN此應用時,人機將固定以500ms週期循環執行巨集內的全部指令一次。一般作為畫面顯示效果控制用,PLC接點監視,定時通訊命令控制用,資料的定時累計轉換..等使用。

}

畫面巨集指令://在 [畫面] 功能表中有三種畫面巨集指令。

{

OPEN巨集:當人機每次打開或切換到此畫面時,每次只執行一次OPEN巨集內的程式指令。一般作為畫面資料的初值化定義,畫面顯示效果控制用,內部暫存器或接點初值化定義..等使用。

CLOSE巨集:當人機每次離開或關閉此畫面時,每次只執行一次CLOSE巨集內的程式指令。

CYCLIC巨集:當人機停留在此畫面時,就會循環執行CYCLIC巨集內的程式指令。當然人機系統也會週期性的去執行BACKGROUND巨集和CLOCK巨集內的指令。

}

ON/OFF按鈕巨集指令 //在按鈕元件中有二種ON/OFF巨集指令。

最重要的筆記 label的用法

ADP3巨集中的if判斷後面都加了GOTO label( ),以初以為是判斷成立就跳往標示label( )的那行執行命令,結果是程式會直接跳往那行中間的所有敍述都不會被執行,如下說明:

ADP3 CLOCK巨集中一段程式如下

1. IF @6 < 10 THEN GOTO LABEL 1

2. @0 = 1 + @0

3. @0 = @0 % 5

4. @6 = 0

6. LABEL 1

7 @6 = 1 + @6

CLOCK巨集每0.5秒掃描一次判斷到第1行@6 < 10的時候直接跳到第6行的LABEL 1,然後往下執行第7行@6 = 1 + @6

第2行到第4行全部不執行

整體程式換成C語言的寫法就是

{

if(@6<10)@6++; //還沒到5秒,@6每0.5秒+1

if(@6==10) //5秒到了

{

@0++; //@0+1

@0=@0%5; //@0+到5就歸0(5除以5,商=1,餘數=0)

@6=0; //@6歸0等待下一個5秒

}

}

所以,之前使用C語言中達到判斷條件成立就執行的觀念在這裡就很容易遇到問題,要小心使用!