一套完整的PLC程序不僅簡單到系統(tǒng)可以運行,還要求運行前有完整的注釋、優(yōu)秀的架構、良好的擴展性、完整的報警保護系統(tǒng)和仿真系統(tǒng)。
1.簡單
使PLC程序盡可能簡單。簡單意味著盡可能使用標準化的程序框架和簡單的指令。
要讓程序簡單,從大的方面來說,要優(yōu)化程序結構,用流程控制指令簡化程序,從小的方面來說,要用功能強大的指令代替功能單一的指令,注意指令的順序。
2.可讀性
要求設計的程序應該是可讀的。這不僅方便程序員加深對程序的理解和調試,也方便別人閱讀你的程序和用戶維護。必要時,程序也可以推廣。
為了使程序可讀,設計的程序應該盡可能清晰。注意層次,實現(xiàn)模塊化,用面向對象的方法設計。使用更標準的設計。
如遇特殊情況,使用語言編程。大多數(shù)情況下,為了便于閱讀,請使用梯形圖。
也就是說,I/O分布應該是有規(guī)律的,容易記憶和理解。如有必要,應發(fā)表一些意見。內部設備也要定時使用,不能隨便使用。
程序設計之初就要注意可讀性。這完全不容易做到。因為在程序調試的過程中,指令的增減,內部器件使用的變化,都有可能讓原本清晰的程序變得有些凌亂。所以在設計中有一定的調試增減空間,然后在調試后做一些排序,這樣設計出來的程序質量更高。
對方案的意見至少應包括以下幾個方面:
A.系統(tǒng)說明:整個程序的版權公司和本程序的目的。
b、區(qū)塊注釋:此區(qū)塊的主要用途和作者。
c,段落注釋:這段代碼的目的。
d、變量注釋:重要性不用多說,包括I/O注釋和中間變量注釋。
至于保密,我覺得應該考慮程序的加密算法或者塊的加密,而不是用減少評論的小聰明。
3.正確性
PLC的程序一定要正確,一定要經(jīng)過實際工作的驗證,證明它能正確工作。這是對PLC程序最基本的要求。如果做不到這一點,其他的都不會好。
為了使程序正確,我們必須準確地使用指令和正確地使用內部設備。指令的準確使用關系到對指令的準確理解,所以必須明確指令的含義和使用條件。必要的時候可以編譯一些小程序來測試一些不清楚的指令。
對于同一個指令,由于PLC的出廠批次不同,或者PLC的系列型號不同,有些指令細節(jié)可能會有所不同。請仔細查閱編程手冊。
正確使用內部設備也很重要。例如,一些PLC具有電源故障保護,而另一些則沒有。要實現(xiàn)這種掉電保護,必須使用掉電保護器件,否則無法使用。
簡而言之,準確使用指令,正確使用內部器件,使編譯好的程序能正確完成,是PLC程序最根本的要求。
舉個簡單的例子,西門子的上升沿和下降沿需要使用具有存儲功能的變量作為中間變量,比如M點或者DB點。如果使用FC的temp變量,就會出現(xiàn)問題。
4.可靠性
程序不僅要正確,還要可靠??煽啃苑从沉薖LC程序的穩(wěn)定性,這也是PLC程序的基本要求。
有些PLC程序在正常工作條件下或合法操作下可以正常工作,但在非正常工作條件下(如暫時斷電,然后很快又上電)或非法操作(如某些按鈕按錯順序或幾個按鈕同時按下)就不能正常工作。這種程序不可靠,或者說不穩(wěn)定,就是壞程序。
一個好的PLC程序可以識別異常工況,將異常工況與正常工況聯(lián)系起來,使程序適應各種情況。好的PLC程序可以拒絕非法操作,不留“痕跡”。只接受合法經(jīng)營。
聯(lián)鎖是拒絕非法操作的常用手段。繼電器電路經(jīng)常使用這種方法,PLC也可以繼承這種方法。
5.易于修改
讓程序變得容易,也就是讓程序變得容易修改。
PLC的一個特點就是方便,可以靈活應用于各種場合。解決方法是修改或重新設計程序。
重新設計程序是用來改變PLC程序的應用要求。不僅程序被重新編程,而且I/O也被重新分配。大多數(shù)情況下,不需要重新編寫程序,只需要做一些修改。這就要求程序簡單易修改。
易變是指靈活性,要求只需少量改變就能達到改變參數(shù)或調整動作的目的。
6.可量測性
很多程序可能在進入站點之前就已經(jīng)編譯好了,但是到了站點,可能就需要添加其他程序了。為了避免打亂整個系統(tǒng)的結構,你需要在每個功能區(qū)預留一定的空間進行備份。
在硬件上留足余量。寫軟件的時候考慮手動,自動,半自動,離開位置。
7.完整的報警系統(tǒng)
PLC系統(tǒng)在工業(yè)環(huán)境中經(jīng)常使用,每一次事故都會造成或大或小的損失。為了對事故進行預先處理或在事故中最大限度地減少損失,必須重視PLC的報警和保護,并將其作為系統(tǒng)的重要組成部分。
8.程序模擬
為了保證現(xiàn)場調試進度或者展示給客戶看,往往需要在進入現(xiàn)場之前對自己的程序進行充分模擬。為此,有必要在程序中增加一個模擬程序部分,該部分在正?,F(xiàn)場操作后將被斷開。為了使程序具有模擬功能,需要做以下工作:
(1)將PLC的實際I/O點轉換成PLC的中間變量或數(shù)據(jù)塊變量;
(2)根據(jù)工藝要求,編寫了各設備的仿真程序。
在設計PLC程序的過程中,如果能滿足以上幾個方面的要求,就可以稱之為好程序。
二
PLC程序設計規(guī)范
1.選擇合適的PLC型號和I/O點,有特殊功能要求時選擇特殊功能模塊。
2.熟悉所選用的PLC編程指令和編譯軟件。
3.規(guī)劃軟件組件,包括內部繼電器、鎖存繼電器、數(shù)據(jù)寄存器、定時器、計數(shù)器等。
4.程序規(guī)劃,一般按照故障提取、故障處理、手動處理、自動處理、輸出處理的順序。大型項目或設備由職能單位分段、分塊處理。例如,如果自動化生產(chǎn)線中有起重機、移位、頂起和旋轉裝置,則上述裝置應分段和分塊編程。
畫
5.在按段、塊編寫的程序前,要加一小段注釋,說明這個程序的功能,必要時可以注明相應的處理流程。塊或分段程序。整體程序的位置順序應基本按照工藝流程順序排列,便于程序的可讀性。
6.在程序設計之前,要對設備進行抽象,常見的因素如停止、急停、過載、超限、超時、安全光幕、觸摸停止、門開關等。應提取并放入啟動回路或啟動主控和聯(lián)鎖回路,這是整個程序結構的前提。在此基礎上,程序可分為自動和手動功能區(qū)。
7.提取程序結構手動功能區(qū)的共同因素,如手動因素、危及設備人身安全的因素等,放入手動主控和聯(lián)鎖回路中,對手動控制進行保護、屏蔽和報警。
8.提取程序結構中自動功能區(qū)的常用因子,如自動、超限、超時等因子,放入自動總控和聯(lián)鎖回路中,對自動控制下的設備進行保護、屏蔽和報警。一個總的原則是,在保證安全的前提下,嚴格限制設備的進入,寬松限制設備的退出。
9.在設計程序時,應設計程序的總復位功能,便于用戶在設備出現(xiàn)故障時,盡快恢復設備的正常運行。重置期間,應始終充分考慮設備和人員的安全。
10.當自動模式切換到手動模式時,程序應清除自動模式下的輸出和中間狀態(tài)。特別是在自動模式下使用SET指令時,必須通過手動模式下的RESET指令清除。
1.編程中嚴禁使用雙輸出,即同一輸出語句或同一輸出線圈在程序中出現(xiàn)兩次或兩次以上。在不同的模式條件下,同一個輸出點的輸出通過中間繼電器傳遞,最后匯集到一起,綁到輸出點。
12.使用觸摸屏時,觸摸屏和PLC共用的控制區(qū)和狀態(tài)區(qū)不應被編程用于其他功能。
13.在使用PLC的專用模塊之前,首先要弄清楚它的控制區(qū)和狀態(tài)區(qū)是否占用工作字。如果是這樣的話,你就不應該用其他方式編寫這些工作詞。
14.PLC的輸入、輸出、中間繼電器、定時器、計數(shù)器和數(shù)據(jù)寄存器應用中文標注。輸入和輸出還應該有組件的名稱和標簽號。對應的輸入點,一般情況下,默認為外圍開關與NO觸點相連,需要與NC觸點相連的必須在備注中注明。所有的評論都要清晰,容易被誤解,盡量少用籠統(tǒng)的引用。
15.項目調試完成后,系統(tǒng)必須保留最終的軟件程序,保存的文件名應包含項目號/作者/日期信息/版本號等。
16.關于程序加密:加密程序的密碼必須保存在專門的文件中,注明對應的用戶名+密碼+權限,分發(fā)給至少兩個人知道密碼,防止密碼丟失導致程序無法打開。
三
編程建議
1.當PLC與上位機(或觸摸屏)組成監(jiān)控系統(tǒng)時,屏幕上往往會出現(xiàn)“手動”、“自動”等控制方式(一般只能一機多用)。你可以在程序中使用“MOV”指令。例如,當選擇“手動”時,常量1 MOV被放入寄存器VB10,當選擇“自動”時,常量2 MOV被放入同一寄存器VB10。只要判斷一下寄存器里的數(shù)據(jù),就知道系統(tǒng)是什么樣的控制模式了。這種思路的好處是容易理解,不需要環(huán)環(huán)相扣等麻煩的程序。
2.當程序有模擬量控制時,如果讀取的模擬量基本沒有錯誤,可以采用時間濾波將其延遲一段時間。如果讀取數(shù)據(jù)的誤差較大,則需要其他濾波方法,如平均??梢圆殚喯嚓P資料。
3.在程序調試的過程中(特別是設備修改時,你的程序被添加到原設備程序中),當程序語句中的條件滿足,輸出線圈未連接時,可以檢查你的程序是否在這樣的語句之間,比如JUMP \ go \等語句。還有一種可能是程序中斷后,條件滿足,沒有輸出,沒有連接。一般不掃描這個程序。
4.在順序控制程序中,即一個動作完成后,進入下一個動作,進行類似的順序控制。我覺得采用+10+10的控制模式很方便。思路是:預置一個寄存器,初始化值為0,系統(tǒng)啟動時為+10,則寄存器為10,寄存器等于10時可以進行第一個動作;第一個動作完成后,寄存器加+10。這時寄存器等于20,可以做第二個動作了。第二個動作完成后,加+10,寄存器等于30。因此,只有通過判斷寄存器中有多少數(shù)據(jù),您才能知道要完成那個操作。需要跳躍動作時,可以不再加+10,可以加+20\+30...視實際需要而定。
為什么要加10而不是1?因為加了10個之后,如果你插入一個段落,你只需要在這10個空位中選擇一個。
5.在設計程序時,當出現(xiàn)工藝故障(不受控制系統(tǒng)控制)時,最好能保留故障現(xiàn)象,并聲光報警。直到操作員重置,讓他知道系統(tǒng)已經(jīng)失敗。否則機器會停下來,別人會認為你的程序有故障。一般來說,我們在設計新系統(tǒng)時應該注意這些。
6.對于經(jīng)常調用的子程序,可以做成子模塊,經(jīng)常調用。
7.由于生產(chǎn)機械在工作循環(huán)中的每一次步進運動在執(zhí)行時都需要一定的時間,并且這些時間具有一定的限制,因此可以使用這些時間作為參考,并且在要檢測的步進運動開始的同時啟動計時器。定時器的時間設定值比正常情況下該動作的持續(xù)時間長20% ~ 30%,定時器的輸出信號可用于報警或自動停止裝置。當生產(chǎn)機械的一個工作步驟的時間超過規(guī)定時間,達到相應定時器的預設時間時,定時器在下一個工作步驟之前發(fā)出故障信號,停止正常工作循環(huán)程序,啟動報警或停機程序。這就是我們常說的過拍保護。
8.一些安全檢測開關(如急停按鈕、安全光幕、限位開關等。)是實際的常閉(NC)輸入。
9.為了安全和節(jié)能,盡量把輸出設計成只在需要動作的時候才動作,一旦到位就停止輸出,而不是平時總是輸出,只在需要停止的時候才斷開輸出。
10.促動器的作用原理應該是不動不動比較好!
11.單體設備的控制:單體設備必須具有軟手操作/自動切換和軟手操作時的啟動/停止功能。從自動切換到軟手操作時,設備不能停止;當從軟手動操作切換到自動操作時,設備的啟動/停止取決于自動程序。
12、單臺設備(水泵、風機等大型設備)24小時運行。