指令表(IL)由一系列指令組成。每條指令都由一個新行開始,包含一個操作符以及和操作符類型相關的一個或多個操作數,并用逗號分開。在指令前可以有標號,后接一個冒號。
注解必須在一行的*后,指令之間可以插入空行。
示例:
標號 | 操作符 | 操作數 | 注釋 |
LD | 17 | ||
ST | lint | (*comment*) | |
GE | 5 | ||
JMPC | next | ||
LD | idword | ||
EQ | istruct.sdword | ||
STN | test | ||
Nest: |
在IL語言中,可以使用下面的操作符和修飾符。
修飾符:
JMP、CAL、RET中帶C:指令在預置表達式結果為TRUE時執行。
JMPC、CALC、RETC中帶N:指令在預置表達式結果為FALSE時執行。
其它指令中帶N:操作數取反(不是累加器)。
操作符 | 修飾符 | 意義 |
LD | N | 使當前結果等于操作數 |
ST | N | 在操作數位置保存當前結果 |
S | 如果當前位置為TRUE,置位布爾操作數為TRUE | |
R | 如果當前位置為TRUE,復位布爾操作數為FALSE | |
AND | N,( | 位與 |
OR | N,( | 位或 |
XOR | ( | 位異或 |
ADD | ( | 加 |
SUB | ( | 減 |
MUL | ( | 乘 |
DIV | ( | 除 |
GT | ( | > |
EQ | ( | = |
NE | ( | <> |
LT | ( | <= |
JMP | ( | < |
CAL | ( | 跳轉到標號 |
PET | CN | 調用功能塊 |
) | CN | 評估括號操作 |
下表為IL中全部的操作符及可能的修飾符和相關的意義:
IL是一種面向行的語言。
標號 | : | 操作符/功能 | 操作數(表) | 注釋 |
跳轉標號 | 分隔符 | IL操作符或功能名 | 用于操作符的零個,一個或多個常數、變量,或用于功能的輸入參數,由逗號分隔。 | 在(*…*)中的注釋,可選 |
通過不同的操作符組修改CR
影響CR數據類型的操作符組 | 縮寫 | 操作符示例 |
Create(建立) | C | LD |
Process(處理) | P | GT |
Leaveunchanged(保持不變) | U | ST:JMPC |
Settoundefined(設置為未定義的) | CAL=功能塊的無條件調用,
|
操作符 | 操作符組 | 描述 | |
LD | LDN | C | 裝入操作數(操作數的反值)到CR |
ANDAND( | ANDNANDN( | P | 操作數(操作數的反值)和CR的布爾AND(“與”運算) |
OROR( | ORNORN( | P | 操作數(操作數的反值)和CR的布爾OR(“或”運算) |
XORXOR( | XORNXORN( | p | 操作數(操作數的反值)和CR的布爾XOR(“異或”運算) |
ST | STN | U | 將CR存到操作數 |
S | U | 若CR=1,則將操作數設置為TRUE | |
R | U | 若CR=1,則將操作數設置為FALSE | |
) | U | 結束括號:對遞延操作求值 |
帶布爾操作數(BOOL類型)的操作符
用于類屬數據類型(類型ANY)操作數的操作符
操作符 | 操作符組 | 描述 | |
LD | C | 操作數裝入CR | |
ST | U | 將CR存儲到操作數 | |
ADD | ADD( | P | 加操作數,結果存入CR |
SUB | SUB( | P | 從CR減去操作數,結果存入CR |
MUL | MUL( | P | 操作數乘以CR |
DIV | DIV( | P | CR除以操作數 |
GT | GT( | P | CR>操作數(大于) |
GE | GE( | P | CR>=操作數(大于或等于) |
EQ | EQ( | P | CR=操作數(等于) |
NE | NE( | P | CR<>操作數(不等于) |
LE | LE( | P | CR<=操作數(小于或等于) |
LT | LT( | P | CR<操作數(小于) |
) | U | 結束括號級 |
跳轉和調用
操作符 | 操作符組 | ||||
JMP | -或U | (無)/有條件跳轉到一個跳轉標號 | |||
JMPC | JMPCN | U | |||
CAL | -或U | (無)/有條件調用一個功能塊 | |||
CALC | CALCN | U | |||
RET | -或U | (無)/有條件從一個功能或功能塊返回 | |||
RETC | RETCN | U | |||
功能名 | P | 功能調用 |
使用功能和功能塊
A.調用一個功能
在IL語言中,調用一個功能只是簡單地寫入該功能名即可。隨后的實際參數用逗號分隔。這種語法和帶有幾個操作數的操作符的語法相同。
功能的**個參數是當前結果(CR)。因此必須正好在功能調用之前將該值裝入CR中。用于功能調用的**個操作數實際上是功能的第二個參數,并依次類推。
B.調用一個功能塊
操作符CAL(或條件調用CALC和條件取反調用CALCN)可以激活一個功能塊。
IEC61131-3描述IL語言中給一個FB傳送參數的三種方法:
1).使用一個調用,它包括在括號內的實際輸入和輸出參數的一個列表
2).在調用FB前,裝載和保存輸入參數
3).用輸入參數作為操作符“隱性地”調用
第三種方法只對標準FB有效,不適合用戶定義的FB。
2、結構化文本ST
T語言的優點(與IL語言相比較):編程任務高度壓縮化的表達格式,在語句塊中清晰的程序結構,控制命令流的強有力結構,這些優點亦帶來其本身的缺陷:
由于它借助于編譯程序自動地執行程序,因此用戶不能直接影響其翻譯成機器碼。
高度抽象導致效率降低(通常,編譯程序的時間更長且執行速度更慢)
ST語句
關鍵字 | 說明 | 示例 | 說明 |
:= | 賦值 | d:=10 | 將右邊的一個供計算的數值賦值給左邊的標識符 |
調用FB | FBName(Par1:=10,Par2:=20); | 調用另一個類型為FB的POU,包括其參數 | |
RETURN | 返回 | RETURN | 脫離當前的POU和返回到調用POU |
IF | 選擇 | IFd | 通過布爾表達式選擇替代值 |
CASE | 多重選擇 | CASEfOF1:g:=11;2:g:=12;ELSEg:=FunName();END_CASE | 根據表達式”f”的值選擇一個語句塊 |
FOR | 跌代(1) | FORh:=1TO10BY2DOF[h/2]:=h;END_FOR | 一個多循環語句塊,帶有起始和結束條件以及一個增量值 |
WHILE | 跌代(2) | WHILEm>1DON:=n/2;END_WHILE | 一個多循環語句塊,具有在開始端的結束條件 |
REPEAT | 跌代(3) | 一個多循環語句塊,具有在結束端的結束條件 | |
EXIT | 循環的結束 | EXIT | 一個跌代語句的結束條件。 |
; | 空白語句 | ;; |
ST語言不包括跳轉指令(GOTO)。
3、功能塊圖FBD
功能塊圖(FBD)語言起源于信號處理領域,對信號處理而言,整數與/或浮點數是很重要的。
使用圖形化語言FBD或LD的POU表達式包括的部分與文本化語言相同。
1).POU的引導部分和結束部分
2).說明部分
3).代碼部分
代碼部分,分為若干個網絡。網絡有助于構造POU的控制流。
一個網絡包括1).網絡標號2).網絡注釋3).網絡圖形
4、梯形圖LD
梯形圖語言(LD)源自機電一體化的繼電器系統的應用領域,它描述一個POU的網絡自左至右的能量流。編程語言主要是設計用于處理布爾信號。
梯形圖LD接點分類:
常開接點 | 常閉接點 | 上升沿接點 | 下降沿接點 |
梯形圖LD線圈分類:
線圈--()-- | 線圈的取反--(/)-- | 置位(鎖存)線圈--(S)-- | 復位(解除鎖存)線圈--(R)-- |
保持(記憶)線圈--(M)-- | 置位保持(記憶)線圈--(SM)-- | 復位保持(記憶)線圈--(RM)-- | |
上升沿線圈--(P)-- | 下降沿線圈--(N)-- |
梯形圖LD執行控制分類:
無條件返回 | 條件返回 | 無條件跳轉 | 條件跳轉 |
了解更多相關技術資訊,請點擊:http://m.lmelshi.com/tech/