SCL(Structured Control Language,結(jié)構(gòu)化控制語(yǔ)言)是一種基于 PASCAL 的高級(jí)編程語(yǔ)言。這種語(yǔ)言基于標(biāo)準(zhǔn) DIN EN 61131-3(國(guó)際標(biāo)準(zhǔn)為 IEC 1131-3)。
根據(jù)該標(biāo)準(zhǔn),可對(duì)用于可編程邏輯控制器的編程語(yǔ)言進(jìn)行標(biāo)準(zhǔn)化。SCL 編程語(yǔ)言實(shí)現(xiàn)了該標(biāo)準(zhǔn)中定義的 ST 語(yǔ)言 (結(jié)構(gòu)化文本) 的 PLCopen 初級(jí)水平。
S7-1200從V2.2版本開(kāi)始支持SCL語(yǔ)言。
語(yǔ)言元素
SCL 除了包含 PLC 的典型元素(例如,輸入、輸出、定時(shí)器或存儲(chǔ)器位)外,還包含高級(jí)編程語(yǔ)言。
表達(dá)式
賦值運(yùn)算
運(yùn)算符
程序控制語(yǔ)句
SCL 提供了簡(jiǎn)便的指令進(jìn)行程序控制。例如,創(chuàng)建程序分支、循環(huán)或跳轉(zhuǎn)。
應(yīng)用
因此,SCL 尤其適用于下列應(yīng)用領(lǐng)域:
數(shù)據(jù)管理
過(guò)程優(yōu)化
配方管理
數(shù)學(xué)計(jì)算 / 統(tǒng)計(jì)任務(wù)
表達(dá)式
說(shuō)明:表達(dá)式將在程序運(yùn)行期間進(jìn)行運(yùn)算,然后返回一個(gè)值。一個(gè)表達(dá)式由操作數(shù)(如常數(shù)、變量或函數(shù)調(diào)用)和與之搭配的操作符(如 *、/、+ 或 -)組成。通過(guò)運(yùn)算符可以將表達(dá)式連接在一起或相互嵌套。
運(yùn)算順序
表達(dá)式將按照下面因素定義的特定順序進(jìn)行運(yùn)算:
相關(guān)運(yùn)算符的優(yōu)先級(jí),優(yōu)先級(jí)數(shù)越小越優(yōu)先
同等優(yōu)先級(jí)運(yùn)算符的運(yùn)算順序按照從左到右的順序
賦值運(yùn)算的計(jì)算按照從右到左的順序進(jìn)行
括號(hào)優(yōu)先級(jí)最高
表達(dá)式類型
不同的運(yùn)算符,分別可使用以下不同類型的表達(dá)式:
算術(shù)表達(dá)式
關(guān)系表達(dá)式
邏輯表達(dá)式
算數(shù)表達(dá)式
說(shuō)明:算術(shù)表達(dá)式既可以是一個(gè)數(shù)字值,也可以是由帶有算術(shù)運(yùn)算符的兩個(gè)值或表達(dá)式組合而成。
算術(shù)運(yùn)算符可以處理當(dāng)前 CPU 所支持的各種數(shù)據(jù)類型。如果在該運(yùn)算中有 2 個(gè)操作數(shù),那么可根據(jù)以下條件來(lái)確定結(jié)果的數(shù)據(jù)類型:
如果這 2 個(gè)操作數(shù)均為有符號(hào)的整數(shù),但長(zhǎng)度不同,那么結(jié)果將采用長(zhǎng)度較長(zhǎng)的那個(gè)整數(shù)數(shù)據(jù)類型(例如,Int + DInt = DInt)。
如果這 2 個(gè)操作數(shù)均為無(wú)符號(hào)整數(shù),但長(zhǎng)度不同,那么結(jié)果將采用長(zhǎng)度較長(zhǎng)的那個(gè)整數(shù)數(shù)據(jù)類型(例如,USInt + UDInt = UDInt)。
如果一個(gè)操作數(shù)為有符號(hào)整數(shù),另一個(gè)為無(wú)符號(hào)整數(shù),那么結(jié)果將采用另一個(gè)長(zhǎng)度較大的有符號(hào)數(shù)據(jù)類型(其包含此無(wú)符號(hào)整數(shù))(例如,SInt + USInt = Int)
如果一個(gè)操作數(shù)為整數(shù),另一個(gè)為浮點(diǎn)數(shù),那么結(jié)果將采用浮點(diǎn)數(shù)的數(shù)據(jù)類型(例如,Int + Real = Real)。
如果 2 個(gè)操作數(shù)均為浮點(diǎn)數(shù),但長(zhǎng)度不同,結(jié)果將采用長(zhǎng)度較長(zhǎng)的那個(gè)浮點(diǎn)數(shù)的數(shù)據(jù)類型(例如,Real + LReal = LReal)。
對(duì)于操作數(shù)為"Time"和"日期和時(shí)間"數(shù)據(jù)類型組,運(yùn)算結(jié)果的數(shù)據(jù)類型請(qǐng)參見(jiàn)表1。
算術(shù)表達(dá)式的數(shù)據(jù)類型
表1列出了在算術(shù)表達(dá)式中可使用的數(shù)據(jù)類型:
運(yùn)算 | 運(yùn)算符 | 優(yōu)先級(jí) | 第一個(gè)操作數(shù) | 第二個(gè)操作數(shù) | 結(jié)果 |
---|---|---|---|---|---|
乘方 | ** | 2 | 整數(shù)/浮點(diǎn)數(shù) | 整數(shù)/浮點(diǎn)數(shù) | 浮點(diǎn)數(shù) |
正號(hào) | + | 3 | 整數(shù)/浮點(diǎn)數(shù) | - | 整數(shù)/浮點(diǎn)數(shù) |
Time | Time | ||||
負(fù)號(hào) | - | 整數(shù)/浮點(diǎn)數(shù) | - | 整數(shù)/浮點(diǎn)數(shù) | |
Time | Time | ||||
乘法 | * | 4 | 整數(shù)/浮點(diǎn)數(shù) | 整數(shù)/浮點(diǎn)數(shù) | 整數(shù)/浮點(diǎn)數(shù) |
Time | 整數(shù) | Time | |||
除法 | / | 整數(shù)/浮點(diǎn)數(shù) | 整數(shù)/浮點(diǎn)數(shù)(≠0) | 整數(shù)/浮點(diǎn)數(shù) | |
Time | 整數(shù) | Time | |||
取模 | MOD | 整數(shù) | 整數(shù) | 整數(shù) | |
加法 | + | 5 | 整數(shù)/浮點(diǎn)數(shù) | 整數(shù)/浮點(diǎn)數(shù) | 整數(shù)/浮點(diǎn)數(shù) |
Time | Time | Time | |||
Time | DInt | Time | |||
TOD | Time | TOD | |||
TOD | DInt | TOD | |||
Date | TOD | DTL | |||
DTL | Time | DTL | |||
減法 | - | 整數(shù)/浮點(diǎn)數(shù) | 整數(shù)/浮點(diǎn)數(shù) | 整數(shù)/浮點(diǎn)數(shù) | |
Time | Time | Time | |||
Time | DInt | Time | |||
TOD | Time | TOD | |||
TOD | DInt | TOD | |||
TOD | TOD | Time | |||
Date | Date | Time | |||
DTL | Time | DTL | |||
DTL | DTL | Time |
示例
以下為一些算術(shù)表達(dá)式的示例:
"MyTag1":= "MyTag2" * "MyTag3";
關(guān)系表達(dá)式
說(shuō)明:關(guān)系表達(dá)式將兩個(gè)操作數(shù)的值或數(shù)據(jù)類型進(jìn)行比較,然后得到一個(gè)布爾值。如果比較結(jié)果為真,則結(jié)果為 TRUE,否則為 FALSE。
關(guān)系運(yùn)算符可以處理當(dāng)前 CPU 所支持的各種數(shù)據(jù)類型。結(jié)果的數(shù)據(jù)類型始終為 Bool。
編寫(xiě)關(guān)系表達(dá)式時(shí),請(qǐng)注意以下規(guī)則:
以下數(shù)據(jù)類型組中的所有變量都可以進(jìn)行比較:
整數(shù)/浮點(diǎn)數(shù)
位、位序列
字符串
對(duì)于以下數(shù)據(jù)類型,只能比較相同類型的變量:
TIME
日期和時(shí)間
UDT
Array
Struct
Variant
String 比較是對(duì)以 Windows 字符集編碼的字符進(jìn)行比較;而 WSting比較則是對(duì) UTF-16 編碼的字符進(jìn)行比較。在比較過(guò)程中,將比較變量的長(zhǎng)度及各字符對(duì)應(yīng)的數(shù)值。
Array 比較需要數(shù)組維度、數(shù)組元素?cái)?shù)據(jù)類型與數(shù)量完全相同
UDT、Array、Struct、Variant等進(jìn)行的比較只能使用S7-1200 V4.2及其以上的版本。
關(guān)系表達(dá)式的數(shù)據(jù)類型
表2列出了在關(guān)系表達(dá)式中可使用的數(shù)據(jù)類型/數(shù)據(jù)類型組:
運(yùn)算 | 運(yùn)算符 | 優(yōu)先級(jí) | 第一個(gè)操作數(shù) | 第二個(gè)操作數(shù) | 結(jié)果 |
---|---|---|---|---|---|
小于、小于等于、大于、大于等于 | <、<=、>、>= | 6 | 整數(shù)/浮點(diǎn)數(shù) | 整數(shù)/浮點(diǎn)數(shù) | Bool |
位序列 | 位序列 | Bool | |||
字符串 | 字符串 | Bool | |||
Time | Time | Bool | |||
日期和時(shí)間 | 日期和時(shí)間 | Bool | |||
等于、不等于 | ==、<> | 7 | 整數(shù)/浮點(diǎn)數(shù) | 整數(shù)/浮點(diǎn)數(shù) | Bool |
位序列 | 位序列 | Bool | |||
字符串 | 字符串 | Bool | |||
Time | Time | Bool | |||
日期和時(shí)間 | 日期和時(shí)間 | Bool | |||
Variant | 任意數(shù)據(jù)類型 | Bool | |||
UDT | UDT | Bool | |||
Array | Array | Bool | |||
Struct | Struct | Bool |
示例
以下舉例說(shuō)明了一個(gè)關(guān)系表達(dá)式:
IF a > b THEN c:= a;
IF A > 20 AND B < 20 THEN C:= TRUE;
IF A<>(B AND C) THEN C:= FALSE;
邏輯表達(dá)式
說(shuō)明:邏輯表達(dá)式由兩個(gè)操作數(shù)和邏輯運(yùn)算符(AND、OR 或 XOR)或取反操作數(shù) (NOT) 組成。
邏輯運(yùn)算符可以處理當(dāng)前 CPU 所支持的各種數(shù)據(jù)類型。如果兩個(gè)操作數(shù)都是 Bool 數(shù)據(jù)類型,則邏輯表達(dá)式的結(jié)果也為 Bool數(shù)據(jù)類型。如果兩個(gè)操作數(shù)中至少有一個(gè)是位序列,則結(jié)果也為位序列而且結(jié)果是由最高操作數(shù)的類型決定。例如,當(dāng)邏輯表達(dá)式的兩個(gè)操作數(shù)分別是 Byte 類型和 Word 類型時(shí),結(jié)果為 Word類型。
邏輯表達(dá)式中一個(gè)操作數(shù)為 Bool類型而另一個(gè)為位序列時(shí),必須先將 Bool類型的操作數(shù)顯式轉(zhuǎn)換為位序列類型。
邏輯表達(dá)式的數(shù)據(jù)類型
下表列出了邏輯表達(dá)式中可使用的數(shù)據(jù)類型:
運(yùn)算 | 運(yùn)算符 | 優(yōu)先級(jí) | 第一個(gè)操作數(shù) | 第二個(gè)操作數(shù) | 結(jié)果 |
---|---|---|---|---|---|
取反 | NOT | 3 | Bool | - | Bool |
求反碼 | 位序列 | - | 位序列 | ||
與 | AND、& | 8 | Bool | Bool | Bool |
位序列 | 位序列 | 位序列 | |||
異或 | XOR | 9 | Bool | Bool | Bool |
位序列 | 位序列 | 位序列 | |||
或 | OR | 10 | Bool | Bool | Bool |
位序列 | 位序列 | 位序列 |
示例
以下為一個(gè)邏輯表達(dá)式的示例:
IF "MyTag1" AND NOT "MyTag2" THEN c := a;
MyTag := A OR B;
賦值運(yùn)算
定義:通過(guò)賦值運(yùn)算,可以將一個(gè)表達(dá)式的值分配給一個(gè)變量。賦值表達(dá)式的左側(cè)為變量,右側(cè)為表達(dá)式的值。
函數(shù)名稱也可以作為表達(dá)式。賦值運(yùn)算將調(diào)用該函數(shù),并返回其函數(shù)值,賦給左側(cè)的變量。
賦值運(yùn)算的數(shù)據(jù)類型取決于左邊變量的數(shù)據(jù)類型。右邊表達(dá)式的數(shù)據(jù)類型必須與該數(shù)據(jù)類型一致。
賦值運(yùn)算的計(jì)算按照從右到左的順序進(jìn)行。
可通過(guò)以下方式編程賦值運(yùn)算:
單賦值運(yùn)算:執(zhí)行單賦值運(yùn)算時(shí),僅將一個(gè)表達(dá)式或變量分配給單個(gè)變量:
示例:a := b;
多賦值運(yùn)算:執(zhí)行多賦值運(yùn)算時(shí),一個(gè)指令中可執(zhí)行多個(gè)賦值運(yùn)算。
示例:a := b := c;
此時(shí),將執(zhí)行以下操作:
b := c;
a := b;
組合賦值運(yùn)算:執(zhí)行組合賦值運(yùn)算時(shí),可在賦值運(yùn)算中組合使用操作符"+"、"-"、"*"和"/":
示例:a += b;
此時(shí),將執(zhí)行以下操作:
a := a + b;
也可多次組合賦值運(yùn)算:
a += b += c *= d;
此時(shí),將按以下順序執(zhí)行賦值運(yùn)算:
c := c * d;
b := b + c;
a := a + b;
示例
下表舉例說(shuō)明了單賦值運(yùn)算的操作:
"MyTag1" := "MyTag2"; | (* 變量賦值 *) |
"MyTag1" := "MyTag2" * "MyTag3"; | (* 表達(dá)式賦值 *) |
"MyTag" := "MyFC"(); | (* 調(diào)用一個(gè)函數(shù),并將函數(shù)值賦給 "MyTag" 變量 *) |
#MyStruct.MyStructElement := "MyTag"; | (* 將一個(gè)變量賦值給一個(gè)結(jié)構(gòu)元素 *) |
#MyArray[2] := "MyTag"; | (* 將一個(gè)變量賦值給一個(gè) ARRAY 元素 *) |
"MyTag" := #MyArray[1,4]; | (* 將一個(gè) ARRAY 元素賦值給一個(gè)變量 *) |
#MyString[2] := #MyOtherString[5]; | (* 將一個(gè) STRING 元素賦給另一個(gè) STRING 元素 *) |
下表舉例說(shuō)明了多賦值運(yùn)算的操作:
"MyTag1" := "MyTag2" := "MyTag3"; | (* 變量賦值 *) |
"MyTag1" := "MyTag2" := "MyTag3" * "MyTag4"; | (* 表達(dá)式賦值 *) |
"MyTag1" := "MyTag2" := "MyTag3 := "MyFC"(); | (* 調(diào)用一個(gè)函數(shù),并將函數(shù)值賦值給變量 "MyTag1"、"MyTag1" 和 "MyTag1" *) |
#MyStruct.MyStructElement1 := #MyStruct.MyStructElement2 := "MyTag"; | (* 將一個(gè)變量賦值給兩個(gè)結(jié)構(gòu)元素 *) |
#MyArray[2] := #MyArray[32] := "MyTag"; | (* 將一個(gè)變量賦值給兩個(gè)數(shù)組元素 *) |
"MyTag1" := "MyTag2" := #MyArray[1,4]; | (* 將一個(gè)數(shù)組元素賦值給兩個(gè)變量 *) |
#MyString[2] := #MyString[3]:= #MyOtherString[5]; | (* 將一個(gè) STRING 元素賦值給兩個(gè) STRING 元素 *) |
?
?
下表舉例說(shuō)明了組合賦值運(yùn)算的操作:
"MyTag1" += "MyTag2"; | (* "MyTag1" 和 "MyTag2" 相加,并將相加的結(jié)果賦值給 "MyTag1"。*) |
"MyTag1" -= "MyTag2" += "MyTag3"; | (* "MyTag2" 和 "MyTag3" 相加。將相加的結(jié)果賦值給操作數(shù)"MyTag2",再?gòu)?"MyTag1" 中減去"MyTag2",計(jì)算結(jié)果將賦值給 "MyTag1"。*) |
#MyArray[2] += #MyArray[32] += "MyTag"; | (* 數(shù)組元素 "MyArray[32]" 加上 "MyTag"。計(jì)算結(jié)果將賦值給 "MyArray[32]"。之后這個(gè)數(shù)組元素 "MyArray[32]" 與數(shù)組中另一個(gè)元素"MyArray[2]"相加,然后將結(jié)果分配給數(shù)組元素 "MyArray[2]"。在該運(yùn)算中,相應(yīng)的數(shù)據(jù)類型必需兼容。*) |
#MyStruct.MyStructElement1 /= #MyStruct.MyStructElement2 *= "MyTag"; | (* 結(jié)構(gòu)化元素 "MyStructElement2" 乘以 "MyTag"。計(jì)算結(jié)果將賦值給 "MyStructElement2"。之后,將結(jié)構(gòu)化元素 "MyStructElement1" 除以 "MyStructElement2",并將計(jì)算結(jié)果賦值給 "MyStructElement1"。在該運(yùn)算中,相應(yīng)的數(shù)據(jù)類型必需兼容。*) |
尋址與調(diào)用
尋址
SCL尋址分為符號(hào)尋址與地址尋址。
符號(hào)尋址
DB塊變量:"DB塊名稱"(."變量名稱")
PLC變量:變量名稱
局部變量:#變量名稱
地址尋址
DB塊變量:%DB塊號(hào)(.變量地址),TIA PORTAL軟件會(huì)判斷該地址有沒(méi)有對(duì)應(yīng)符號(hào)名稱,如果有則立即轉(zhuǎn)換為符號(hào)名稱,沒(méi)有則保留絕對(duì)地址
PLC變量:%變量地址,TIA PORTAL軟件會(huì)判斷該地址有沒(méi)有對(duì)應(yīng)符號(hào)名稱,如果有則立即轉(zhuǎn)換為符號(hào)名稱,沒(méi)有則新建符號(hào)名稱
Temp變量:SCL不支持非優(yōu)化FC/FB的Temp變量的地址尋址
舉例:
? | ? | 符號(hào)名 | 說(shuō)明 |
---|---|---|---|
符號(hào)尋址 | DB塊變量 | "MyDB".Variable.Static_1 | ? |
"MyDB".Array[0] | 訪問(wèn)數(shù)組元素 | ||
"MyDB" | DB塊名作為參數(shù) | ||
PLC變量 | "Start" | ? | |
局部變量 | #Input_1 | ? | |
#Temp_1.x0 | 變量名片段訪問(wèn) | ||
地址尋址 | DB塊變量 | %DB2.DBB1 | ? |
%DB2 | DB塊名作為參數(shù),會(huì)立刻轉(zhuǎn)換為DB塊名 | ||
PLC變量 | %M100.0 | 會(huì)立刻轉(zhuǎn)換為"符號(hào)名" | |
%Q1.0:P | 會(huì)立刻轉(zhuǎn)換為"符號(hào)名":P |
調(diào)用
程序調(diào)用分為以下幾類:
FC調(diào)用
FB調(diào)用
FB多重背景調(diào)用
調(diào)用可以從指令列表或者項(xiàng)目樹(shù)程序塊中拖拽入程序編輯區(qū)域,也可以直接輸入。
FC調(diào)用
FC調(diào)用的格式是
"FC塊名稱"(輸入形參:=實(shí)參,輸出形參=>實(shí)參,輸入輸出形參:=實(shí)參...)
返回值:=“FC塊名稱”(輸入形參:=實(shí)參,輸出形參=>實(shí)參,輸入輸出形參:=實(shí)參...)
FC調(diào)用需要確保所有形參都有對(duì)應(yīng)實(shí)參。如果沒(méi)有參數(shù)的FC也需要有括號(hào)。
如圖所示的例子;
圖1 FC調(diào)用
FB調(diào)用
FB調(diào)用的格式是
"背景數(shù)據(jù)塊名稱"(輸入形參:=實(shí)參,輸出形參=>實(shí)參,輸入輸出形參:=實(shí)參...)
一般情況下,F(xiàn)B的簡(jiǎn)單數(shù)據(jù)類型形參可以沒(méi)有對(duì)應(yīng)實(shí)參,復(fù)雜數(shù)據(jù)類型的輸入、輸出也可以沒(méi)有對(duì)應(yīng)實(shí)參,所以FB可以隱藏或不隱藏不出現(xiàn)的形參。如果沒(méi)有參數(shù)的FB也需要有括號(hào)。
如圖2所示,顯示了一些FB調(diào)用的例子。
圖2 FB調(diào)用
如圖3所示,當(dāng)FB的參數(shù)全部顯示,在背景數(shù)據(jù)塊右鍵可以激活"僅顯示分配的參數(shù)";當(dāng)FB的參數(shù)只顯示了分配的參數(shù)時(shí),在背景數(shù)據(jù)塊右鍵可以激活"顯示所有參數(shù)"。
圖3 顯示分配/所有參數(shù)
FB多重背景調(diào)用
FB多重背景調(diào)用的格式是
#多重背景(輸入形參:=實(shí)參,輸出形參=>實(shí)參,輸入輸出形參:=實(shí)參...)
#多重背景[索引](輸入形參:=實(shí)參,輸出形參=>實(shí)參,輸入輸出形參:=實(shí)參...)
一般情況下,F(xiàn)B的簡(jiǎn)單數(shù)據(jù)類型形參可以沒(méi)有對(duì)應(yīng)實(shí)參,復(fù)雜數(shù)據(jù)類型的輸入、輸出也可以沒(méi)有對(duì)應(yīng)實(shí)參,所以FB可以隱藏或不隱藏不出現(xiàn)的形參。如果只有Static的FB也需要有括號(hào)。
如圖4所示,顯示了一些FB多重背景調(diào)用的例子。
圖4 FB多重背景調(diào)用
注意:
對(duì)于定時(shí)器和計(jì)數(shù)器的SCL調(diào)用,有特殊的格式,請(qǐng)參考鏈接:定時(shí)器、計(jì)數(shù)器。
新建SCL
有兩種方式新建SCL:
第一種是在新建塊,選擇OB/FC/FB后,設(shè)置語(yǔ)言為SCL,如圖5所示。
第二種是在LAD、FBD中直接插入SCL語(yǔ)言段,這需要TIA PORTAL V14及其以上的版本,如圖6所示。
圖5 新建SCL塊
①在項(xiàng)目樹(shù)中,找到PLC,然后展開(kāi)程序塊,點(diǎn)擊"添加新塊"
②在彈出對(duì)話框中,選擇塊類型,可以是OB/FB/FC,
③選擇語(yǔ)言為SCL
圖6 在LAD中插入SCL段
區(qū)域與注釋
和LAD/FBD不同,LAD/FBD在程序編輯器是一段一段的,編輯器可以插入新的網(wǎng)絡(luò)段,每一個(gè)網(wǎng)絡(luò)段可以有各自的注釋。而SCL是文本語(yǔ)言,不分網(wǎng)絡(luò)段(LAD/FBD語(yǔ)言內(nèi)增加SCL除外),需要用其他的方法來(lái)解決。
區(qū)間
從TIA PORTAL V14以后,增加區(qū)間功能,使用指令:
REGION 區(qū)間名稱
程序文本
END_REGION
可以在指令中間增加需要編寫(xiě)的程序還不影響程序邏輯,并且支持嵌套。此外還可以像網(wǎng)絡(luò)段一樣收折疊來(lái),如圖7所示。
圖7 區(qū)域
其中左邊為區(qū)間總覽,可以看出整體的結(jié)構(gòu)
①使得程序或總覽全部展開(kāi)
②使得程序或總覽全部折疊
③全部展開(kāi)/折疊是針對(duì)總覽與程序還是只針對(duì)總覽,圖中為針對(duì)總覽與程序
④獨(dú)立展開(kāi)/折疊程序
注釋
編輯器的空行,或者調(diào)用塊的右側(cè)均可以增加注釋,如圖8所示有兩種方式注釋:
第一種是://注釋內(nèi)容
第二種是:(/*注釋內(nèi)容*/)
可以在工具欄中利用按鈕整段注釋或取消注釋。此外從TIA PORTAL V16開(kāi)始支持多語(yǔ)言注釋,使用指令(*多語(yǔ)言注釋內(nèi)容*),具體參考多語(yǔ)言文檔。
圖8 注釋
①注釋掉選中段落
②對(duì)注釋掉的段落取消注釋
編輯:黃飛
?
評(píng)論
查看更多