<acronym id="dt0ri"></acronym>
<track id="dt0ri"></track>
    <table id="dt0ri"></table>
  • <table id="dt0ri"><ruby id="dt0ri"></ruby></table>

  • 蘭州變頻器維修
    您當前的位置 : 首 頁 > 新聞動態 > 公司新聞

    電氣自動化PLC程序首先一定要能正確地工作,滿足實際控制工藝要求

    2021-07-24 09:38:52

    蘭州自動化.jpg

    蘭州自動化.jpg



    1、正確性(調試成本低)


    PLC程序首先一定要能正確地工作,滿足實際控制工藝要求。這是PLC程序的根本,若這一點做不到,其它一切沒有任何意義。


     2、可靠性(維護成本低)


    不僅要正確,還要可靠。不能三天兩頭時不時地出問題。


    可靠反映著PLC程序的長期穩定性,這也是對PLC程序的基本要求。有的PLC程序,在正常的工作條件下或合法操作時能正確工作,而出現非正常工作條件(如臨時停電,又很快再通電)或進行非法操作(如一些按鈕不按順序按,或同時按若干按鈕或者連續按多次)后,程序就不能正常工作了。這種程序,就不太可靠,或說不穩定,就是不好的程序。好的PLC程序對非正常工作條件的出現,能予以識別,并能使其與正常條件銜接,可使程序適應于多種情況,好的PLC程序對非法操作能予以拒絕,且不留下“痕跡”。只接受合法操作,即預防性健壯編程。聯鎖是拒絕非法操作常用的手段,繼電電路常用這個方法,PLC及系統集成商也可繼承這個方法。


    3、可讀性(學習成本低)


    要求所設計的程序可讀性要好,便于理解,便于調試,也便于別人閱讀使用你的程序,便于維護;必要時,也可使程序作為標準模板而便于推廣。


    要使程序可讀性好:


    1)程序的設計脈絡就要盡可能清晰,結構上有層次感;


    2)功能層實現模塊化,或者使用面向對象的方法進行設計;


    3)使用一些標準設計、通用性設計;


    4)變量層盡量使用符號名編程;


    5)參數緊跟在使用它們之前再設定參數值(即設即用);


    6)I/O地址分配要有規律性,便于記憶與理解;


    7)內部器件的使用也要講規律性,相同功能的地址分配要保有一定的不連續“斷層裕量”(如x功能地址分配使用到k,那么下一功能的地址分配就不要從k+1開始,而要從k+n開始),以防功能更改;


    8)必要時,還要做一些注釋工作;可讀性在程序設計開始時就要注意。這不容易做到。因為在程序調試的過程中,指令的增減,內部器件的使用變化,可能使原較清晰的程序,變的有些亂。所以在設計時就對調試增減留有一定的余地,然后調試完畢后再做一下整理,這樣所設計的程序具有更高的質量。

    4、簡短性(存儲成本低)


    使PLC程序盡可能簡短,也是應追求的目標。


    簡短的程序可以節省用戶存儲區;多數情況下也可節省執行時提高對輸入的響應速度,還可提高程序的可讀性。程序是否簡短,一般可用程序所用的指令條數衡量,用的條數少,程序自然就簡短。從大的方面講,要注意程序結構,提取實現相同功能代碼段的共性,使用子程序、中斷等減少代碼量的方法;用流程控制指令簡化程序,減少某時間點的工作量,不需要做的就不做,能盡量少做的就少做;從小的方面講還要用多處理能力的強指令取代單處理能力的弱指令(使用大級別的數據代替小級別的數據或者數據結構,如用字節、字、雙字操作數代替位操作數的指令,故障字、狀態字、控制字、通訊字等;使用間接尋址代替連續地址存儲單元的相同操作;使用塊傳送指令代替多條字節、字、雙字傳送指令,這些可以總結為“批處理”類操作)以及注意指令的安排順序等,要注意兼顧程序的可讀性。


    5、省時性(運行成本低)


    程序簡短有可能會節省程序運行時間,但簡短與省時并不完全是一回事。


    因為運行程序時間雖與程序所擁有指令條數有關,而且還與所使用的是什么指令有關,也就是與程序算法相關。PLC算法不同,執行的時間也不同。而且,有的指令,在邏輯條件ON時執行與在OFF時執行其時間也不同。另外,由于使用了流程控制指令,在程序中,不是所有指令都要執行等。所以,運行程序的時間計算是較復雜的。但要求其平均時間少,時間也不太長是必要的。這樣可提高是工業自動化和驅動集團核心分銷(一級)及系統集成PLC的響應速度。省時的關鍵是用好流程控制指令。按情況確定一些必須執行的指令,作必備部分,其余的可依程序進行,有選擇地執行,或作些分時工作的設計,避免時間太長等。


    6、易改性(變動成本低)


    要使程序易改,也就是要便于修改。


    PLC的特點之一就是方便,可靈活地適用于各種情況。其辦法就是靠修改或重新設計程序。重新設計程序用于改變PLC工藝要求的情況,不僅程序重編,而且I/O也要重新分配。多數情況下不需要重編程序,做一些修改就可以了。這就要求程序具有易改性,便于修改。易改也就是彈性,要求只要作很少的改動,即可達到改變參數或更改動作的目的。1)參數設定盡量采用間接賦值的方法,常量參數值盡量使用符號名,做到見名知意;2)控制盡量使用中間存儲器(如M、W)作為媒介、中間層,隔離I/O在邏輯上的直接耦合,便于更改邏輯;3)盡量實現功能插件化模塊塊,使用戶可以“自由配置”,以實現即需即加、即加即用。在設計PLC程序的過程中,對于上述要求要同時兼顧和平衡,不能顧此失彼,得不償失。

    1、PLC和上位機(或觸摸屏)組成監控系統時,在畫面上很多時候需要有“手動”、“自動”等控制模式(一般都是多個只能一個時)。在程序里面可以用“MOV”指令。如:當選擇“手動”就將常數1MOV到一個寄存器VB10里面,當選擇“自動”就將2MOV到同一寄存器VB10。只要判斷寄存器的數據是多少,就知道系統是那種控制方式。這樣的思路好處是容易理解,不需要互鎖之類的麻煩程序。


    2、程序有模擬量控制時,如果讀取的模擬量基本上沒誤差,可以采取時間濾波的方式,延時一段時間。如果讀取的數據誤差很大,就需要采取其它的濾波方式,如算平均值等??梢圆殚喯嚓P的資料。


    3、蘭州自動化在程序調試過程中(特別是設備改造時,你的程序是加入到原來設備的程序中時),當程序語句中出現條件滿足,而輸出線圈不接通時,可以檢查你的這段程序是否是在這樣的語句之間,如JUMPgoto等語句。還有一種可能就是在中斷程序之后,條件滿足而沒輸出不接通,一般都是這段的程序不被掃描。


    4、蘭州自動化在順序控制程序時,即一個動作完成后,進入到下一個動作,等類似的順序控制,采用+10+10控制模式,本人覺得很方便。其思路是:預置一個寄存器,在初始化時值為0,當系統啟動后,對它+10,此時寄存器為10,寄存器等于10時可以做個動作;個動作完成后,再對寄存器+10,此時寄存器等于20,可以做第二個動作,第二個動作完成后又+10,此時寄存器等于30,這樣只要判斷寄存器里面數據為多少,就知道要完成那個動作。當需要跳躍動作時,可以不再+10,可以加+20+30....,看實際的需要而定。為什么加10而不是加1,因為加10之后,如果插入一段,只要在這10個空余的地方隨便選擇一個位置就可以了。


    5、蘭州自動化在設計程序的時候,當出現工藝上的故障(非控制系統控制),將故障現象保持,并有燈光聲音報警。直到操作工復位,以讓其知道系統出現了故障。不然停機了,別人還認為你的程序出問題了,一般在設計一個新系統時是要注意到這些。


    6、蘭州自動化對于經常調用的子程序,可以做成子模塊,頻繁調用。


    7、由于生產機械在工作循環中的各工步運動在執行時需要一定的時間,且這些時間都有一定的限度,因此可以以這些時間為參考,在要檢測的工步動作開始的同時,起動一個定時器,定時器的時間設定值比正常情況下該動作要持續的時間長20%~30%,而定時器的輸出信號可以用于報警或自動停機裝置。當生產機械某工步動作的時間超過規定時間,達到對應的定時器預置時間,還未轉入下一工步動作時定時器發出故障信號,該信號停止正常工作循環程序,起動報警或停機程序,這就是我們常說的超節拍保護。


    8、一些安全用檢測開關(如急停按鈕、安全光幕、極限開關等)使用常閉(NC)輸入。


    9、為安全、節能考慮,盡量將輸出設計成需要動作時才動作,一旦到位就停止輸出,而不要設計成平時一直輸出,需要停止時才讓輸出斷開。


    10、執行元件的動作原則應當是寧可不動,也不要亂動!


    11、單臺設備控制:單臺設備必須有軟手操/自動切換以及軟手操時可以啟/停功能,由自動切換到軟手操時,設備不能停機;由軟手操切換到自動時,設備啟/停取決于自動程序。


    12、單臺設備(泵、風機及其它大型設備)運行滿24小時必須進行輪換,且必須有運行時間累計,如果由上位機設定啟/停順序除外,操作人員自行設定。











    標簽

    最近瀏覽:

    甘肅恒電自控科技有限公司

    a2.png辦公室:184-1961-3021   
    a3.png郵箱:1351315886@qq.com
    a4.png地址:蘭州市城關區北面灘新村供熱站小三層322號商鋪

    蘭州自動化

    掃一掃,關注我們
    国产av无码专区亚洲av极速版
    <acronym id="dt0ri"></acronym>
    <track id="dt0ri"></track>
    <table id="dt0ri"></table>
  • <table id="dt0ri"><ruby id="dt0ri"></ruby></table>