一、注釋的使用規範
有兩種不同類型的注釋:
- 塊注釋“(*…*)”或多行注釋“(/*…*/)”,用于描述一個函數或一個代碼片段
- 行注釋“//”描述單行代碼,位于代碼行的末尾或前面
若為了便于調試的目的進行代碼屏蔽, 則此時隻允許使用行注釋“//”。
注釋的目的是向讀者提供資訊,說明代碼意圖。注釋的内容為寫這段代碼的原因。特别注意,注釋不能是代碼的備援堆積,同時也不應該描述代碼的功能細節(因為代碼本身已經對此進行了描述)。相反,應描述編寫代碼的原因。
注意:可以使用“注釋”按鈕,避免手動輸入注釋符号。
通過系統菜單支援此功能,以注釋文本或删除注釋符号。此外,使用“(*...*)”或“(/*...*/)”,可以避免嵌套注釋塊的文法問題。
二、塊調用的實參左對齊
要将塊調用的實參進行左對齊,請執行以下操作步驟:
1、在“選項”(Options) 菜單中,選擇“設定”(Settings) 指令。“設定”(Settings) 視窗随即顯示在工作區中。
2、在區域導航中,選擇“正常 > 腳本/文本編輯器” (General > Script/text editors) 組。
3、在“縮進”(Indent) 中,選擇“智能”(Smart) 選項。如下圖:
4、在區域導航中,選擇“PLC 程式設計 > SCL(結構化控制語言)”(PLC programming > SCL (Structured Control Language)) 組。
5、在“視圖”(View) 中,選擇“左對齊實參”(Left-align actual parameters) 複選框。在新插入的塊中,實參左對齊。如下圖:
6、要将目前塊調用中的實參進行左對齊,可選擇該塊調用并單擊程式編輯器工具欄中的“自動格式化所選擇的文本”(Automatically format selected text)按鈕。
三、運算符和表達式的使用規範
- 在運算符的前面和後面必須使用空格。
- 表達式總是放在括号中
為了使解釋順序清晰,表達式根據所需的解釋順序放入括号中。
示例:
#tempSetFlag := (#tempPositionAct < #MIN_POS) OR (#tempPositionAct > #MAX_POS);
四、條件和指令用換行符分隔
必須在條件和指令之間建立明确的區分。這意味着, 在一個條件(例如 THEN)之後或在一個替代分支(例如 ELSE)之後, 必須在程式設計指令之前使用換行符。此規則适用于其他類似構造的條件(例如, CASE, FOR, WHILE, REPEAT) 。
示例:
IF #isConnected THEN //注釋
; // IF的執行語句
ELSE
; // ELSE的執行語句
END_IF;
五、複雜條件下的換行符
在複雜表達式的情況下,用換行符突出顯示每個部分條件是有意義的。運算符放在每一行部分條件表達式前面。如, 将運算符放在新的條件前面。
示例:
#tempResult := (#enable AND #tempEnableOld)
OR (
#enable AND #isValid AND
NOT (#hasError OR #hasWarning)
);
六、條件和說明的适當縮進
控制結構體中的每個指令都必須縮進,如果單行過長,布爾表達式将在下一行繼續。
IF 語句中的多行條件縮進兩個空格,THEN新的一行中與IF是相同的縮進級别。當IF條件适用于單行時,可以将THEN 放在同一行的末尾。在嵌套深度較深的情況下,THEN指令單獨放一行。單個右括号訓示嵌套條件的結束,操作符總是在行的開頭。
這些規則适用于其他類似控制結構的條件(例如,CASE,FOR,WHILE,REPEAT)。
示例:
IF #enable //注釋
AND (
(#turnLeft XOR #turnRight)
OR (#statIsMaintenance AND #statIsManualMode)
) //注釋
AND #tempIsConnected
THEN
; //執行語句
ELSE
; //執行語句
END_IF;
IF #enable THEN
; //執行語句
IF #tempIsReleased THEN
; //執行語句
END_IF;
ELSE
; //執行語句
END_IF;