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