使用SIMATIC控制器或者SIMOTION編程時,程序員的任務(wù)是創(chuàng)建一個盡可能清晰可讀的用戶程序。每個程序員都會使用自己的方法和策略,例如命名變量或程序塊甚至是注釋的寫法。不同的程序員的方法和策略創(chuàng)建了非常不同的用戶程序,最終會產(chǎn)生各種不同的代碼。 這對程序維護和協(xié)作工作會造成一定的困難。因此可以考慮采用一致的編程風(fēng)格。 *使用一致的編程風(fēng)格的優(yōu)勢 如果有幾個程序員在同一個程序上工作,建議堅持使用統(tǒng)一協(xié)調(diào)的編程風(fēng)格。這提供了以下優(yōu)點: ● 一致的連續(xù)風(fēng)格 ● 易于閱讀和理解 ● 簡單的維護和可重用性 ● 輕松快速的故障排除和糾錯 ● 多個程序員在同一項目中高效工作 規(guī) 1 則 -THE FIRST- camelCasing表示法定義標(biāo)識符-比如tempMaxLength 1. 如果編程風(fēng)格中沒有注明標(biāo)識符表示法的其他規(guī)則 2. 指南,各自的標(biāo)識符寫在camelCasing中。 3. 以下規(guī)則適用于camelCasing: a. 首字母以小字體書寫。 b. 不使用分隔符(如連字符或下劃線)。 4. 如果標(biāo)識符由多個單詞組成,則每個單詞的首字母寫成大寫字母。 規(guī) 2 則 -THE SECOND- 塊的標(biāo)識符以大寫字母開頭;實例DB塊的前綴使用'inst'/'Inst'塊(OB,F(xiàn)B,F(xiàn)C,DB,背景數(shù)據(jù)塊,TO等)的標(biāo)識符以大寫字母開頭 例如: ConveyorControl 實例:DB塊的前綴使用'inst'/'Inst': 例如: 單次實例:InstHeater (大寫→自己的塊) 多重實例:instTimerMotor(小寫→在一個實例中) 規(guī) 3 則 -THE THIRD- 在程序中初始化臨時變量 臨時變量(TEMP)必須由用戶進行初始化。通常,必須確保在讀取臨時變量之前始終先初始化或者寫入臨時變量值。 Example #tempAcceleration := 0.0; #tempVelocity := #MAX 規(guī) 4 則 -THE FORTH- 在FC或者FB中,僅使用本地數(shù)據(jù)變量.FC和FB中不允許訪問全局?jǐn)?shù)據(jù) 1. FC和FB中不允許訪問全局?jǐn)?shù)據(jù)。這包括以下內(nèi)容: a. 訪問全局?jǐn)?shù)據(jù)塊和使用其他實例數(shù)據(jù)塊 b. 訪問標(biāo)簽(標(biāo)簽表)。 2. 訪問數(shù)據(jù)通過接口進行。 規(guī) 5 則 -THE FIFTH- 始終評估錯誤代碼 如果程序中調(diào)用的FC,F(xiàn)B或系統(tǒng)函數(shù)提供錯誤信息和標(biāo)識,則始終需要對這些信息和標(biāo)識進行評估。通過設(shè)置布爾錯誤變量來指示錯誤。 規(guī) 6 則 -THE SIXTH- 常量的定義使用大寫字母和下劃線 常量的定義使用大寫字母和下劃線,常量的名稱總是以大寫字母書寫要檢測單個單詞或縮寫,應(yīng)在單個單詞或縮寫之間使用下劃線。比如:MAX_VELOCITY。而且應(yīng)該盡量使用本地常量。 規(guī) 7 則 -THE SEVENTH- 對于復(fù)雜的變量比如需要使用結(jié)構(gòu)體的情況下定義為用戶數(shù)據(jù)類型 用戶定義數(shù)據(jù)類型的標(biāo)識符前面帶有前綴“type”。 規(guī) 8 則 -THE EIGHTH- 在程序的開始進行重要信息的注釋 程序代碼(SCL,LAD,F(xiàn)BD),需要描述重要的信息,例如: //============================================ // Company// (c)Copyright (year) //----------------------------------------------------------------------------- // Library: (that the source is dedicated to) // Tested with: (test system with FW version) // Engineering: TIA Portal (SW version) // Restrictions: (OB types, etc.) // Requirements: (hardware, technological package, memory needed, etc.) // Functionality:(that is implemented in the block) //----------------------------------------------------------------------------- // Change log table: // Version Date Expert in charge Changes applied // 01.00.00 dd.mm.yyyy (Name of expert) First released version //============================================ 更多詳細(xì)信息,請參考如下: 技術(shù)文檔: 《Programming Styleguide for S7-1200/1500》 https://support.industry./cs/us/en/view/109478084 系列視頻: TIA博途.探索之旅系列學(xué)習(xí)教程 https://www.ad..cn/service/elearning/series/168.html |
|