天天看點

博途軟體SCL程式設計規範的幾點建議

作者:一個發芽的洋芋

一、注釋的使用規範

有兩種不同類型的注釋:

  • 塊注釋“(*…*)”或多行注釋“(/*…*/)”,用于描述一個函數或一個代碼片段
  • 行注釋“//”描述單行代碼,位于代碼行的末尾或前面

若為了便于調試的目的進行代碼屏蔽, 則此時隻允許使用行注釋“//”。

注釋的目的是向讀者提供資訊,說明代碼意圖。注釋的内容為寫這段代碼的原因。特别注意,注釋不能是代碼的備援堆積,同時也不應該描述代碼的功能細節(因為代碼本身已經對此進行了描述)。相反,應描述編寫代碼的原因。

注意:可以使用“注釋”按鈕,避免手動輸入注釋符号。

通過系統菜單支援此功能,以注釋文本或删除注釋符号。此外,使用“(*...*)”或“(/*...*/)”,可以避免嵌套注釋塊的文法問題。

二、塊調用的實參左對齊

要将塊調用的實參進行左對齊,請執行以下操作步驟:

1、在“選項”(Options) 菜單中,選擇“設定”(Settings) 指令。“設定”(Settings) 視窗随即顯示在工作區中。

2、在區域導航中,選擇“正常 > 腳本/文本編輯器” (General > Script/text editors) 組。

3、在“縮進”(Indent) 中,選擇“智能”(Smart) 選項。如下圖:

博途軟體SCL程式設計規範的幾點建議

4、在區域導航中,選擇“PLC 程式設計 > SCL(結構化控制語言)”(PLC programming > SCL (Structured Control Language)) 組。

5、在“視圖”(View) 中,選擇“左對齊實參”(Left-align actual parameters) 複選框。在新插入的塊中,實參左對齊。如下圖:

博途軟體SCL程式設計規範的幾點建議

6、要将目前塊調用中的實參進行左對齊,可選擇該塊調用并單擊程式編輯器工具欄中的“自動格式化所選擇的文本”(Automatically format selected text)按鈕。

博途軟體SCL程式設計規範的幾點建議

三、運算符和表達式的使用規範

  • 在運算符的前面和後面必須使用空格。
  • 表達式總是放在括号中

為了使解釋順序清晰,表達式根據所需的解釋順序放入括号中。

示例:

#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;

繼續閱讀