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






