小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

PLC編碼規(guī)范

 龍之吻6iinxl8c 2019-09-21

PC在編碼規(guī)范方面比PLC要好很多。既然它們都是編程語言,那么PC方面的規(guī)范是否可以用與PLC呢?答案是肯定的,但需要作取舍。下面規(guī)范中的大部分可以用于一般PLC,其中有些只是針對西門子博途,使用時需注意。

變量命名

目前PLC中的變量命名沒有統(tǒng)一的規(guī)則,這方面我們可以參考PC編程,在PC的編程中有如下規(guī)則:

  1. camelCase,又叫駱駝命名法,變量中第一單詞首字母小寫,后面單詞的首字母大寫,就像camelCase名稱一樣。Java、C++等高級語言中普遍使用。
  2. snake_case,又叫蛇蛇命名法,單詞都小寫,單詞與單詞間用下劃線隔開。是Python推薦的命名風格
  3. PascalCase,帕斯卡命名法,源自于Pascal語言。和camelCase相似,不過首字母也大寫。幾乎在所有的高級語言中,用來命名類名。
  4. Hungarian,有匈牙利人發(fā)明,所以也叫匈牙利命名法。微軟早期推薦的風格?,F(xiàn)在也基本沒人使用。

結論:推薦普通變量,全局變量,共享DB,F(xiàn)C函數(shù)用camelCase。而FB用PascalCase,相應的背景數(shù)據(jù)塊則在后面加DB。對于常量用全大寫的SNAKE_CASE。有些名字如果傳統(tǒng)就是大寫,就不要改小寫,比如HMI,F(xiàn)C,F(xiàn)B,SV,PV等。在SCL中,建議關鍵詞用小寫,系統(tǒng)自帶的函數(shù)用大寫,以區(qū)分用戶的函數(shù),這個TIA Portal會自動完成。

變量取名

寫程序最頭痛的事不是組織邏輯關系,而是變量的命名。一個有意義的名字會讓程序清晰不少。

  1. 對于Q輸出,都是完成某一動作,最好用動詞+名詞,或名詞+動詞。
  2. 對于I輸入,按鈕啟動電機(push button),可以寫成pbStartMotor, 旋轉(zhuǎn)開關(switch button)切換自動手動,可以寫成sbAutoMan,限位開關(limit switch)可以寫成lsCylinderOut。如果反應一個位置狀態(tài),那么就寫成名詞+形容詞或名詞+方位。比如lsCylinderOut,vehicleOnLeft等等。最好固定一類詞。這次小車叫vehicle,那么下次就不要叫dolly。
  3. 對于某些bool型變量,很難歸類,比如想表達“是否完成”等判斷概念,寫成hasDone,isGood會比較好。
  4. 對于M,如果是完成動作,和Q一致,如果是表示狀態(tài),和I一致。
  5. 對于定時器和計數(shù)器較難命名,但可以寫成以ton或ctu開頭的,以區(qū)分一般變量。
  6. 在SCL中,對于循環(huán)變量,習慣用i,j,k來表示。
  7. 對于FC和FB比較麻煩,如果是完成動作,用動詞+名詞。如果是組織程序,用工位號來代替。

變量的取名很難,這里就不一一列舉。

數(shù)組

  1. 西門子的數(shù)組起始索引可以是負的,建議始終從1開始,以配合SCL中的循環(huán)。SCL中循環(huán)起始和結束都是閉區(qū)間。這個概念不是很好講清楚,自己體會吧。

變量的使用

  1. 對于M全局變量,僅在OB中使用,用來在FC或FB之間傳輸數(shù)據(jù)用,限制性的使用M。另外傳輸數(shù)據(jù)用共享DB也很好。TIA Portal中有組的概念,把共享DB和相關的FC,F(xiàn)B放在同一組中。
  2. 對于定時器和計數(shù)器
    由于傳統(tǒng)的定時器和計數(shù)器是全局的,我們限制性使用。對于FC,可以在同組的共享DB塊中聲明,對于FB可以在static中聲明。如果FB中的計數(shù)器和定時器外部需要訪問,可以用output傳出,不要直接讀背景數(shù)據(jù)塊,背景數(shù)據(jù)塊是供FB使用的。
  3. 對于HMI訪問的變量,可以建一個FC和一個共享DB,作為接口使用。在命名上可以寫成interfaceHMI+編號,每個HMI各搞一個接口,方便管理,寫界面的和寫程序的可以分開了。

程序邏輯

  1. 在開始寫程序時,首先要建模,從大局入手,切不可一上來就寫程序,通過建模,你可以更清晰了解工藝流程,修改模型也比較方便,方便工程師之間溝通。PC編程有UML建模語言,狀態(tài)機就屬于其中的一種。Matlab的狀態(tài)機最為強大。當然PLC也有自己的工具,SFC。建模完成后,可以根據(jù)模型轉(zhuǎn)換為LAD和SCL,或直接生成PLC程序。如何轉(zhuǎn)換可以參考我的技術博客。
  2. 程序中注釋,過去一直認為越詳細越好,不過世道變了,現(xiàn)在推薦代碼自我注釋,也就是說,清晰的代碼不要注釋也很容易理解,而凌亂的代碼即使有注釋也不大理解。注釋不要去解釋某條語句或指令,要寫出代碼的意圖。對于FC,F(xiàn)B,接口參數(shù)必需要注釋。
  3. 代碼重構。通用編程有專門討論重構的書。對于一個控制要求,當你第一遍寫時,由于對問題理解的不夠深刻,寫出的代碼很凌亂,變量的命名亦很隨意,當寫完第一遍,程序可以正常運行,但信心不足,此時你再在以前代碼的基礎上又寫了一遍,發(fā)現(xiàn)你對的控制程序更有信心了,這個過程叫重構,有時候這個過程會重復好幾遍。好的程序是反復推敲出來的。如果有需求,你可以寫成FC或FB,作為庫反復使用。
  4. 盡量使用常開觸點。其實我們大部分人都習慣常開。但極限限位一般都是常閉接法。另外自動手動可以分別寫成兩個觸點,都用常開表示。

程序組織

  1. 組織程序,其實用FB塊比較好,這樣可以用它的靜態(tài)變量來來作為程序間的通訊。當然用FC也可以,指定一個共享DB塊作為程序間通信用。
  2. 手動和自動程序可以分別寫一個塊,然后分別輸出到中間變量 ,可以是DB或M區(qū)。再新建一個塊,把這些中間變量組合在一起控制Q輸出,可以添加一些互鎖條件,命名為outAssignment。
  3. 老的編程軟件中,我們把相同工位號的塊命名成“工位號+功能”,博途有個組的功能,可以添加一個新組,命名位相關工位號,然后把工位相關的程序放在其中。此時可以精簡塊的工位號,但“組織”塊不宜精簡掉,它需要在OB塊中調(diào)用。

今天寫到這里,謝謝。

非常歡迎大家反饋,后期會修改

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多