第一種:輔助繼電器的置位復(fù)位方法
這種方法是最原始最初級的寫法,也是最簡單的一種寫法,比如第一步置位M0,M0接通后控制某個結(jié)果,結(jié)果實現(xiàn)后復(fù)位M0,再置位M1,依次進(jìn)行l(wèi)流程控制。這種寫法通用所有的PLC。

第二種:使用步序編號的方法
使用整型變量作為步序編號,易于理解,便于維護(hù)。步序增減,跳轉(zhuǎn)等操作方便,簡單,易懂。復(fù)位操作時,僅需將變量值改為0。編程中需注意,當(dāng)連續(xù)步序的條件同時為真時,步序號在一個PLC周期內(nèi)連續(xù)增加,直至最后一條未導(dǎo)通步序指令,而由步序號觸發(fā)的其它程序則未被執(zhí)行。調(diào)試時容易漏掉此種情況。

第三種:GRAPH(順序功能流程圖語言,也稱SFC)
這種方法跟我們的設(shè)備工藝流程圖非常相似,也是最直觀的一種程序,第一步干什么,什么條件又開始干第二步,看上去非常清楚。雖然程序表面看上去非常清楚明了,但編寫項目程序?qū)嶋H的操作過程并不簡單,要熟悉這種寫法需要時間過程,而且這種方法并不通用所有的PLC(如西門子S7-1200不支持,僅S7-1500支持),還有就是對PLC性能要求高,也占用很大的工作存儲器。

第四種:移位指令方法
這種方法是利用移位指令的移位原理實現(xiàn)步序的控制,比如歐姆龍的SFT指令,三菱的ROL、ROR等,西門子的移位指令也差不多。這種難點在于搞清移位指令的工作原理即可,也是通用所有PLC的編程。
第五種:DECO解碼指令的方法
解碼指令DECO:即將整數(shù)轉(zhuǎn)換為Dword中對應(yīng)的位置1,且當(dāng)步序產(chǎn)生變化時,PLC必定會重新執(zhí)行一個掃描周期,不會產(chǎn)生連續(xù)跳多個步續(xù)的情況。避免了程序中步序觸發(fā)的指令沒有被執(zhí)行的情況。跳轉(zhuǎn)和復(fù)位操作編寫簡單。如西門子S7-1200PLC可支持DWORD解碼(32位),S7-1500可支持LWORD解碼(64位)。

第六種:工作和狀態(tài)變量賦值的方法
這種方法是數(shù)據(jù)傳送指令與比較指令相結(jié)合實現(xiàn)程序流程步序轉(zhuǎn)換的,個人認(rèn)為這種方法是最容易理解的,操作上也是最簡單,建議初學(xué)者嘗試使用,當(dāng)然這種方式也是通用所有PLC的。設(shè)置兩個變量字state word,work word。state word中的位作為步序標(biāo)志,work word作為跳轉(zhuǎn)目標(biāo)步序標(biāo)志。當(dāng)前步序state word中步序位對應(yīng)的條件滿足時,觸發(fā)work word中下一步對應(yīng)的位。而后,在PLC順序掃描至傳送指令時,將work word的值賦值給state word,完成步序跳轉(zhuǎn)。優(yōu)點是沒有置位和復(fù)位操作,同一時刻只有唯一的位置1,跳步時只用將對應(yīng)的work word 中的位置1即可。復(fù)位時,將state word與work word清零,程序會自動將state word中第一位點亮。當(dāng)步序大于16時,可改為DWORD或增加word的數(shù)量來增加步序。


第七種:SCL編程的方法
越來越多的小型PLC都支持SCL語言,SCL是一種類似于PASCAL的高級編程語言,常用的FOR、IF、WHILE、CASE等程控語句組合起來能編寫出很強(qiáng)大的算法和邏輯,用此寫法的人也越來越多。用SCL設(shè)計自動程序主要就是結(jié)合CASE和IF語句,將Step作為程序號,如果存在比較長的分支或并行動作時需要有借助多個Step程序步,這里不做深究。

-
繼電器
+關(guān)注
關(guān)注
133文章
5557瀏覽量
154629 -
plc
+關(guān)注
關(guān)注
5050文章
14569瀏覽量
486300 -
編程語言
+關(guān)注
關(guān)注
10文章
1963瀏覽量
39479
原文標(biāo)題:高手都是怎么寫PLC自動程序的?
文章出處:【微信號:xue_PLC,微信公眾號:PLC技術(shù)圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
PLC自動程序編程方法
關(guān)于STC89c52程序燒寫求助
高手速成法:PLC故障排查實例講解
PLC程序編寫方法探討 PLC程序的質(zhì)量衡量
PLC自動步程序的7種編程方法
電氣高手寫PLC程序的技巧
高手都是怎么寫PLC自動程序的?
評論