回覆列表
  • 1 # 工控人

    PLC程式結構怎麼搭建,自動流程圖怎麼才能構思縝密沒漏洞

    首先我們瞭解下PLC程式設計所對應的控制型別:

    順序控制,所謂的順序控制就是按照預先確定的順序進行動作是PLC基本的控制,通常使用一些按鈕、開關即可完成對傳統繼電器下圖的控制,如指示燈、中間繼電器、接觸器等,這些輸入和輸出的狀態只有兩種ON(閉合)和OFF(斷開)由0和1來表示稱之為開關量。

    過程控制,過程控制的物件狀態就不是0和1,而是介於兩種之間的連續狀態的控制。例如水閥控制,現在想要以1/3大小的流量出水,又如溫度資料的採集它是一個連續變化的數值,如果採用開關量控制則滿足不了要求,那這些連續變化的控制則需要採用模擬量實現,常見的控制物件是一些儀器儀表如溫度、壓力、流量等感測器以及變頻器等驅動器。

    運動控制,運動控制主要針對的是精確定位功能,PLC以高速輸入和高速輸出的形式來實現,如對編碼器的高速脈衝輸入的採集進行計數、定位和測速等,發出高頻脈衝驅動步進、伺服電機進行運動,它的普通的輸入輸出的區別是頻率較高,採用中斷方式進行處理。

    除了開關量和模擬量,PLC還有通訊方式實現控制,如MODBUS、CAN、CCLINK、乙太網等,如果你的PLC和控制物件都具有通訊功能就能使用。

    不同的控制方式在我們PLC程式設計中的結構是有所區別的,甚至可以採用不同的程式語言。其中順序控制是最為簡單的,主要理清楚邏輯順序比如自動洗車機,按照順序一步一步編寫即可,把每個動作的完成標誌找出來,有時間、計數和限位等要求,檢測到這個標誌訊號進行下一步即可。過程控制主要是模擬量資料的採集和輸出,它是一個持續性的過程控制,如溫度資料的讀取,我們要根據溫度大小來決定輸出不同的訊號(加熱、冷卻),它在PLC程式設計中需要注意模擬量、數字量和實際工程量的轉換,由工藝要求去確定輸出。運動控制的主要理解定位指令和對應的概念如相對位置、絕對位置、原點回歸等,相對定位要計算距離和方向,絕對定位要知道目的。

    其實程式結構和自動流程圖的搭建一定是在機械、工藝流程的基礎上進行指定的,一個複雜的工程可能不僅僅是單一的控制型別,往往是幾個控制型別的組成,因此模組化的程式設計思想很重要,要清楚控制物件的在整個工程所起到的作用。無論思路是多麼的縝密,漏洞是肯定會有的,PLC的程式設計只是其中的一部分,後期的裝置除錯才是重要的環節。程式儘量做到容易懂和可擴充套件性強的要求,當然如果前期的程式結構設計的好、自動流程比較清晰則後面的工作相對輕鬆。

  • 2 # 控制研究控

    在做PLC程式的時候,主程式中的程式結構一般會更加清晰一些,而後邊的子程式也可以像主程呼叫子程式一樣,實現子程式對子程式的呼叫!---這樣從主程式到後邊的子程式展開來看的話呼叫關係就比較清楚!--但是具體主程式中呼叫幾個子程式,以及子程式中又呼叫幾個子程式,這個程式結構的劃分,或者你說的搭建,這個源頭應該是根據對工藝控制檔案的仔細分析而後規劃出來的!

    PLC電氣工程師應該和熟悉工藝流程的技術人員一起討論,將整個專案的控制物件,以及每個控制物件的控制要求,按照手動,半自動以及自動情況下的動作特性,啟動順序,連鎖特點等完全的反應出來,不管是以文字描述的方式,還是流程圖的方式,務求將每一點的控制要求都描述清楚!

    當然在形成一個初步的自動化流程控制圖後,應該讓大家一起來討論,看看有沒有被忽略掉的條件!---這個步驟其實最重要,因為程式的不完善性,或者說漏洞就是因為做控制檔案的時候討論的不夠細,導致忽略了默寫工況,實際執行後正好出現了那樣的工況,造成邏輯錯誤!

    我簡單的舉一個例子來說明一下,請先看下圖:

    其實我在其他的文章中也舉過這個例子,在同一個管道上有3個閥門或者料筒,當閥門開啟的時候管道應該有相應的顏色指示!一般情況下,PLC程式設計工程可能最自然的就是想到如上圖的一對一關係,但是這個流程圖明顯的忽略瞭如果閥門A開啟的同時,閥門B和C也可能會開啟,如果此時閥門B開啟管道應該顯示設麼顏色?

    如果此時閥門C開啟管道應該是設麼顏色?

    如果閥門A,B,C同時開啟又應該是設麼顏色?

    如果同時只能開啟一個閥門,那麼A,B,C三者之間就會有限制關係,這些限制關係同樣需要在程式控制檔案中清晰的表述出來,這樣程式設計人員的寫程式的時候,照著大家商定好了統一版本,直接寫程式即可,不用一邊寫一邊思考!一邊寫程式一邊考慮此處的工藝要求,通常程式就無法寫完善,特別是像我舉例這種3對1的情況,就需要靜下心來把控制要求整理成檔案,而後再去做程式是比較好的!---應該說這是“磨刀不誤砍柴工”,2對1的情況還比較簡單,一旦出現3對1,或者4對1以及以上的情況,程式的條件判斷就很多了,是特別需要細心應對的,當然這只是我的一點個人經驗!

    就簡單說這麼多了,PLC程式目的就是實現工藝動作要求的控制,工藝控制要求做成流程圖後,大家充分的討論把每個點的條件都考慮清楚,形成大家都認可的檔案,則可以大大的減少後續程式執行中的漏洞!---另外,程式的結構劃分,也是需要站在工藝流程檔案的角度上來劃分,比如幾個裝置存在明顯的連鎖關係,那麼這幾個裝置是適合放置在一個程式塊中集中控制的,當然,像閥門,電機,感測器等同一型別的那個公共程式塊,也是適合做成共用塊,然後再具體呼叫!---總之,程式的結構劃分,也是靈活的,需要建立在工藝流程的基礎上!

  • 3 # 閒暇光陰

    個人認為PLC的一套程式出來前首先要知道我編輯的這套程式需要做什麼,需要有那些功能,然後根據功能來確定我的程式需要分成幾部分。

    前陣子因為公司產品研發需要,自己做了一個小的檢測程式,功能簡單:當工人把產品放入進去後按檢測按鈕,固定產品的部件開始工作,進行檢測,檢測正常,固定產品部件鬆開,工人取料。當產品不合格時,發出聲光報警,工人按復位鍵後,部件才能鬆開。在確定了以上幾點後,我程式就分為檢測和報警兩段(結束語不算)

    因為也才開始接觸PLC的程式設計越深入,越好奇,還有各個軟體(PLC品牌公司)的差異,只能一直學習[呲牙][呲牙]

  • 4 # MaxwellSit

    結合專案的實際情況,

    選用合適的程式設計結構,

    注意程式設計常用技巧,

    可以事半功倍。

    題圖:西門子S7-1200 PLC

    PLC程式設計,常用的結構有三種:線性化程式設計、模組化程式設計、結構化程式設計。下面我們就以西門子PLC為例,對這三種程式結構展開敘述。

    線性化程式設計是將整個使用者程式放在組織塊OB1(主程式)中,在CPU迴圈掃描時執行OB1中的全部指令。其特點是結構簡單,但效率低下。另一方面,某些相同或相近的操作需多次執行,這樣會造成不必要的程式設計工作。再者,由於程式結構不清晰,會造成管理和除錯的不方便。所以在編寫大型程式時,避免線性化程式設計。模組化程式設計是將程式根據功能分為不同的邏輯塊,且每一邏輯塊完成的功能不同。在OB1(主程式)中可以根據條件呼叫不同的功能或功能塊。其特點是易於分工合作,除錯方便。由於邏輯塊是有條件的呼叫,所以可以提高CPU的利用率(圖中FC類似子程式)。結構化程式設計是將過程中要求類似或相關的任務歸類,在功能或功能塊中程式設計,形成通用解決方案。透過不同的引數呼叫相同的功能或透過不同的背景資料塊呼叫相同的功能塊。其特點是結構化程式設計必須對系統功能進行合理分析、分解和綜合,所以對設計人員的要求較高,另外,當使用結構化程式設計方法時,需要對資料進行管理[1]。

    第一種線性化程式設計,即不採用分支的形式,在一個頁面中從頭寫到尾;

    第二種模組化程式設計,即把程式分為例如手動、自動、初始化、資料換算等子程式;

    第三種結構化程式設計,即把控制過程中分為獨立的部分,再來呼叫,比如可以做成多個獨立的單步流程動作。

    說完程式結構的三種方式後,再來說說程式設計中的一些技巧。

    1.簡單性

    使PLC程式儘可能簡單。簡單的含義就是儘可能的使用標準化的程式框架,儘可能使用簡單的指令。

    要想程式簡單,從大的方面講,要最佳化程式結構,用流程控制指令簡化程式,從小的方面講還要用功能強的指令取代功能單一的指令,以及注意指令的安排順序等。

    2.可讀性

    要求設計的程式可讀性要好,以便於除錯、維護,利己利人。

    要使程式可讀性好,所設計的程式就要儘可能清晰。要注意層次,實現模組化。

    如遇特殊情況下采用語言程式設計,多數情況下請使用梯形圖程式設計,方便閱讀。

    再就是I/O分配和內部暫存器要有規律性,以及做好註釋,便於記憶與理解。

    3.可靠性

    有的PLC程式,在正常的工作條件下或合法操作時能正確工作,而出現非正常工作條件(如臨時停電,又很快再通電)或進行非法操作(如一些按鈕不按順序按,或同時按若干按鈕)後,程式就不能正常工作了。這種程式,就不大可靠,或說不穩定,就是不好的程式。

    4.擴充套件性

    許多程式可能在進現場之前都已經編好,但是到了現場,可能還需要新增另外的程式,為了避免打亂整套系統的結構,需要在每個功能區預留一定的空間作為備用[2]。

    結合專案的實際情況,選用合適的程式設計結構,注意程式設計常用技巧,可以事半功倍。

    參考

    1.劉華波.09程式設計方法《西門子S7-300/400 PLC程式設計與應用》第二版.青島大學-西門子先進自動化技術聯合實驗室.2016

    2.工控幫.完美PLC程式什麼樣子?.2017

  • 中秋節和大豐收的關聯?
  • 人為什麼會迷惘,有時候不知道自己是誰,也不知道自己該幹什麼?