今天,小編分享一篇干貨文章识椰,讓你更懂得完美PLC程序是什么樣子? ? ? ? ? ?
完美的PLC程序需滿足的設(shè)計(jì)要求
一套完整的PLC程序绝葡,并不僅僅是使系統(tǒng)能夠運(yùn)行起來這么簡單,它也需要完整的注釋腹鹉、精良的架構(gòu)挤牛、良好的可擴(kuò)展性、完備的報(bào)警保護(hù)系統(tǒng)种蘸、運(yùn)行前的模擬系統(tǒng)。
1. 簡單性
使PLC程序盡可能簡單竞膳。簡單的含義就是盡可能的使用標(biāo)準(zhǔn)化的程序框架航瞭,盡可能使用簡單的指令。
要想程序簡單坦辟,從大的方面講刊侯,要優(yōu)化程序結(jié)構(gòu),用流程控制指令簡化程序锉走,從小的方面講還要用功能強(qiáng)的指令取代功能單一的指令滨彻,以及注意指令的安排順序等藕届。
2. 可讀性
要求所設(shè)計(jì)的程序可讀性要好。這不僅便于程序設(shè)計(jì)者加深對程序的理解亭饵,便于調(diào)試休偶,而且,還要便于別人讀懂你的程序辜羊,便于使用者維護(hù)踏兜。必要時(shí),也可使程序推廣八秃。
要使程序可讀性好碱妆,所設(shè)計(jì)的程序就要盡可能清晰。要注意層次昔驱,實(shí)現(xiàn)模塊化疹尾,以至于用面向?qū)ο蟮姆椒ㄟM(jìn)行設(shè)計(jì)。要多用一些標(biāo)準(zhǔn)的設(shè)計(jì)骤肛。
如遇特殊情況下采用語言編程纳本,多數(shù)情況下請使用梯形圖編程,方便閱讀萌衬。
再就是I/O分配要有規(guī)律性饮醇,便于記憶與理解。必要時(shí)秕豫,還要做一些注釋工作朴艰。內(nèi)部器件的使用也要講規(guī)律性,不要隨便地拿來就用混移。
可讀性在程序設(shè)計(jì)開始時(shí)就要注意祠墅。這不易完全做到。因?yàn)樵诔绦蛘{(diào)試的過程中歌径,指令的增減毁嗦,內(nèi)部器件的使用變化,可能使原較清晰的程序回铛,變的有些亂狗准。所以在設(shè)計(jì)時(shí)就對調(diào)試增減留有一定的余地,然后調(diào)試完畢后再做一下整理茵肃,這樣所設(shè)計(jì)的程序具有更高的質(zhì)量腔长。
程序的注釋,起碼應(yīng)該有以下幾個(gè)方面:
A验残、系統(tǒng)注釋:整套程序的版權(quán)公司和此套程序用途
B捞附、程序塊注釋:此程序塊的主要用途和作者
C、段注釋:此段代碼的用途
D、變量注釋:重要性無需多言鸟召,包含I/O注釋胆绊、中間變量注釋
而至于保密性的考慮,我覺得應(yīng)該在程序的加密算法或者塊的加密上考慮欧募,而不應(yīng)該用減少注釋這種小聰明來實(shí)現(xiàn)压状。
3. 正確性
PLC的程序一定要正確,并要經(jīng)過實(shí)際工作驗(yàn)證槽片,證明其能夠正確工作何缓。這是對PLC程序的最根本的要求,若這一點(diǎn)做不到还栓,其它的再好也沒有用碌廓。
要使程序正確,一定要準(zhǔn)確的使用指令剩盒,正確的使用內(nèi)部器件谷婆。準(zhǔn)確的使用指令與準(zhǔn)確理解指令相聯(lián)系,為此對指令含義和使用條件一定要弄清楚辽聊。必要時(shí)纪挎,可編些小程序?qū)σ恍┎磺宄闹噶钭餍y試。
同一指令跟匆,由于PLC的出廠批次不同或是PLC的系列型號(hào)的不同异袄,一些指令細(xì)節(jié)有可能不一樣,應(yīng)仔細(xì)查閱編程手冊玛臂。
內(nèi)部器件正確使用也是重要的烤蜕。如有的PLC有掉電保護(hù),有的PLC沒有迹冤。一定要做到該掉電保護(hù)的一定要用掉電保護(hù)的器件讽营,反之則不能用。
總之泡徙,要準(zhǔn)確的使用指令橱鹏,正確使用內(nèi)部器件,使所編的程序能正確要作堪藐,這是對PLC程序最根本的要求莉兰。
舉個(gè)簡單的例子,西門子的上升沿和下降沿需要使用帶存儲(chǔ)功能的變量作為中間變量礁竞,比如M點(diǎn)或者DB點(diǎn)糖荒,如果使用FC的temp變量就會(huì)出問題的。
4. 可靠性
程序不僅要正確苏章,還要可靠。可靠反映著PLC程序的穩(wěn)定性枫绅,這也是對PLC程序的基本要求泉孩。
有的PLC程序,在正常的工作條件下或合法操作時(shí)能正確工作并淋,而出現(xiàn)非正常工作條件(如臨時(shí)停電寓搬,又很快再通電)或進(jìn)行非法操作(如一些按鈕不按順序按,或同時(shí)按若干按鈕)后县耽,程序就不能正常工作了句喷。這種程序,就不大可靠兔毙,或說不穩(wěn)定唾琼,就是不好的程序。
好的PLC程序?qū)Ψ钦9ぷ鳁l件出現(xiàn)澎剥,能予以識(shí)別锡溯,并能使其與正常條件銜接,可使程序適應(yīng)于多種情況哑姚。好的PLC程序?qū)Ψ欠ú僮髂苡枰跃芙^祭饭,且不留下“痕跡”。只接受合法操作叙量。
聯(lián)鎖是拒絕非法操作常用的手段倡蝙,繼電電路常用這個(gè)方法,PLC也可繼承這個(gè)方法绞佩。
5. 易改性
要使程序易改寺鸥,也就是要便于修改。
PLC的特點(diǎn)之一就是方便征炼,可靈活地適用于各種情況析既。其辦法就是靠修改或重新設(shè)計(jì)程序。
重新設(shè)計(jì)程序用于改變PLC工藝的用途要求的情況谆奥,不僅程序重編眼坏,而且I/O也要重新分配。多數(shù)情況下不需要重編程序酸些,作一些修改就可以了宰译。這就要求程序具有易性,便于修改魄懂。
易改也就是彈性沿侈,要求只要作很少的改動(dòng),即可達(dá)到改變參數(shù)或理改動(dòng)作的目的市栗。
6. 擴(kuò)展性
許多程序可能在進(jìn)現(xiàn)場之前都已經(jīng)編好缀拭,但是到了現(xiàn)場咳短,可能還需要添加另外的程序,為了避免打亂整套系統(tǒng)的結(jié)構(gòu)蛛淋,需要在每個(gè)功能區(qū)預(yù)留一定的空間作為備用咙好。
硬件上留出足夠的余量,軟件在編寫的時(shí)候把手動(dòng)褐荷,自動(dòng)勾效,半自動(dòng)考慮好,位置留出來叛甫。
7. 完備報(bào)警系統(tǒng)
PLC系統(tǒng)往往用于工業(yè)環(huán)境中层宫,每一次的事故都會(huì)造成或大或小的損失,為了做到事故預(yù)處理或者在事故中將損失降到最小其监,必須重視PLC的報(bào)警和保護(hù)萌腿,在此將其摘出來作為系統(tǒng)的一個(gè)重要組成部分。
8. 程序模擬
為了保證現(xiàn)場的調(diào)試進(jìn)度或者給客戶展示棠赛,往往在進(jìn)現(xiàn)場之前哮奇,要對自己的程序進(jìn)行全自動(dòng)的模擬。為此需要在程序中加入模擬程序部分睛约,模擬程序部分在正扯Ψ現(xiàn)場運(yùn)行之后斷開。為了使程序具備模擬功能辩涝,需要做以下工作:
(1)將實(shí)際的PLC的I/O點(diǎn)轉(zhuǎn)換為PLC的中間變量或者數(shù)據(jù)塊變量贸伐;
(2)根據(jù)工藝要求編寫各個(gè)設(shè)備的模擬程序。
在設(shè)計(jì)PLC程序的過程中怔揩,能夠滿足以上幾個(gè)方面的要求的就能稱的上是一個(gè)好程序了捉邢。
PLC程序設(shè)計(jì)規(guī)范
1、選擇合適的PLC型號(hào)及I/O點(diǎn)數(shù)商膊,有特殊功能需求時(shí)選擇特殊功能模塊伏伐。
2、熟悉所選擇的PLC編程指令及編譯軟件晕拆。
3藐翎、進(jìn)行軟元件規(guī)劃,包括內(nèi)部繼電器实幕、保持繼電器吝镣、數(shù)據(jù)寄存器、定時(shí)器昆庇、計(jì)數(shù)器等末贾。
4、進(jìn)行程序規(guī)劃整吆,一般以故障提取拱撵、故障處理辉川、手動(dòng)處理、自動(dòng)處理拴测、輸出處理這樣的順序進(jìn)行編程员串。比較大型的工程或設(shè)備按功能單元分段、分塊進(jìn)行處理昼扛,如一條自動(dòng)化生產(chǎn)線中有提升機(jī)、移行欲诺、頂起旋轉(zhuǎn)裝置等抄谐,則應(yīng)按上述單元分段分塊編程。
5扰法、在分段分塊編寫的程序前應(yīng)加上簡短的段注釋蛹含,說明此段程序的功能,如有必要可以注明相應(yīng)的工藝流程塞颁。分塊或分段的程序再總體程序的位置順序應(yīng)基本上按工藝流程順序排列浦箱,便于程序的可讀性。
6祠锣、在程序設(shè)計(jì)之前酷窥,應(yīng)對設(shè)備進(jìn)行抽象,對如停止伴网、急停蓬推、過載、超限澡腾、超時(shí)沸伏、安全光幕、碰停动分、門開關(guān)等共用因子進(jìn)行提取毅糟,放在啟動(dòng)回路或啟動(dòng)主控、連鎖回路澜公,作為整個(gè)程序結(jié)構(gòu)的大前提姆另,在此基礎(chǔ)下,再將程序分為自動(dòng)玛瘸、手動(dòng)兩大功能區(qū)蜕青。
7、將程序結(jié)構(gòu)手動(dòng)功能區(qū)共用因子糊渊,如手動(dòng)右核、危及設(shè)備人身安全等因數(shù)因子進(jìn)行提取,放在手動(dòng)主控渺绒、連鎖回路贺喝,對手動(dòng)控制進(jìn)行保護(hù)菱鸥、屏蔽、報(bào)警躏鱼。
8氮采、將程序結(jié)構(gòu)自動(dòng)功能區(qū)共用因子,如自動(dòng)染苛、超限鹊漠、超時(shí)等因數(shù)因子進(jìn)行提取,放在自動(dòng)主控茶行、連鎖回路躯概,對自動(dòng)控制下設(shè)備進(jìn)行保護(hù)、屏蔽畔师、報(bào)警娶靡。一個(gè)總的原則就是,在確保安全的前提下看锉,嚴(yán)格限制設(shè)備的進(jìn)姿锭,寬松限制設(shè)備的出。
9伯铣、程序設(shè)計(jì)時(shí)應(yīng)設(shè)計(jì)程序總復(fù)位功能呻此,便于使用者在設(shè)備出現(xiàn)故障情況下,可以方便盡快恢復(fù)設(shè)備正常工作腔寡≈菏總復(fù)位應(yīng)充分考慮在復(fù)位過程中設(shè)備和人員的安全。
10蹬蚁、自動(dòng)模式切換到手動(dòng)模式時(shí)恃泪,程序應(yīng)清除自動(dòng)模式下的輸出和中間狀態(tài)。特別是在自動(dòng)模式使用SET指令時(shí)犀斋,必須在手動(dòng)模式用RESET指令予以清除贝乎。
11、嚴(yán)禁在編制程序中使用雙輸出叽粹,即同一條輸出語句或同一個(gè)輸出線圈在程序中出現(xiàn)2次及以上览效。在不同模式條件下的對同一輸出點(diǎn)的輸出使用中間繼電器進(jìn)行中轉(zhuǎn),最后集中到一起并列到輸出點(diǎn)虫几。
12锤灿、使用觸摸屏?xí)r,對觸摸屏和PLC公用的控制區(qū)和狀態(tài)區(qū)辆脸,不得做其他功能方面的編程使用但校。
13、對PLC的特殊模塊啡氢,在使用之前状囱,應(yīng)先查明其控制區(qū)和狀態(tài)區(qū)是否占用工作字术裸,若占用,不得將這些工作字做其他方面的編程亭枷。
14袭艺、PLC的輸入、輸出叨粘、中間繼電器猾编、定時(shí)器、計(jì)數(shù)器升敲、數(shù)據(jù)寄存器等都要加中文注釋袍镀。輸入、輸出還要有元器件名稱位號(hào)冻晤。對應(yīng)的輸入點(diǎn),一般情況下默認(rèn)為外圍開關(guān)連接的是NO觸點(diǎn)绸吸,對于需要接NC觸點(diǎn)的須在注釋中標(biāo)明鼻弧。所有注釋應(yīng)當(dāng)清晰明了,不易產(chǎn)生誤解锦茁,盡量少使用泛指攘轩。
15、工程調(diào)試完成后码俩,系統(tǒng)必須保留最終軟件程序度帮,保存的文件名應(yīng)包含項(xiàng)目編號(hào)/作者/日期信息/版本號(hào)等。?
16稿存、關(guān)于程序加密:對于加密程序的密碼必須有專門的文件予以保存笨篷,并注明相應(yīng)的用戶名+密碼+權(quán)限,分發(fā)給至少兩個(gè)人以上了解密碼瓣履,防止密碼丟失帶來無法打開程序的情況率翅。
編程建議
1、PLC和上位機(jī)(或觸摸屏)組成監(jiān)控系統(tǒng)時(shí),在畫面上很多時(shí)候需要有“手動(dòng)”袖迎、“自動(dòng)”等控制模式(一般都是多個(gè)只能一個(gè)時(shí))冕臭。在程序里面可以用“MOV”指令。如:當(dāng)選擇“手動(dòng)”就將常數(shù)1 MOV到一個(gè)寄存器VB10里面,當(dāng)選擇“自動(dòng)”就將2 MOV到同一寄存器VB10燕锥。只要判斷寄存器的數(shù)據(jù)是多少辜贵,就知道系統(tǒng)是那種控制方式。這樣的思路好處是容易理解归形,不需要互鎖之類的麻煩程序托慨。
2、程序有模擬量控制時(shí)暇榴,如果讀取的模擬量基本上沒誤差榴芳,可以采取時(shí)間濾波的方式嗡靡,延時(shí)一段時(shí)間。如果讀取的數(shù)據(jù)誤差很大窟感,就需要采取其它的濾波方式讨彼,如算平均值等∈疗恚可以查閱相關(guān)的資料哈误。
3、在程序調(diào)試過程中(特別是設(shè)備改造時(shí)躏嚎,你的程序是加入到原來設(shè)備的程序中時(shí))蜜自,當(dāng)程序語句中出現(xiàn)條件滿足,而輸出線圈不接通時(shí)卢佣,可以檢查你的這段程序是否是在這樣的語句之間,如JUMP\go to\等語句重荠。還有一種可能就是在中斷程序之后,條件滿足而沒輸出不接通虚茶,一般都是這段的程序不被掃描戈鲁。
4、在順序控制程序時(shí)嘹叫,即一個(gè)動(dòng)作完成后婆殿,進(jìn)入到下一個(gè)動(dòng)作,等類似的順序控制罩扇,采用+10+10控制模式婆芦,本人覺得很方便。其思路是:預(yù)置一個(gè)寄存器喂饥,在初始化時(shí)值為0,當(dāng)系統(tǒng)啟動(dòng)后消约,對它+10,此時(shí)寄存器為10员帮,寄存器等于10時(shí)可以做第一個(gè)動(dòng)作荆陆;第一個(gè)動(dòng)作完成后,再對寄存器+10集侯,此時(shí)寄存器等于20被啼,可以做第二個(gè)動(dòng)作,第二個(gè)動(dòng)作完成后又+10棠枉,此時(shí)寄存器等于30浓体,這樣只要判斷寄存器里面數(shù)據(jù)為多少,就知道要完成那個(gè)動(dòng)作辈讶。當(dāng)需要跳躍動(dòng)作時(shí)命浴,可以不再+10,可以加+20\+30....,看實(shí)際的需要而定生闲。
為什么加10而不是加1媳溺,因?yàn)榧?0之后,如果插入一段碍讯,只要在這10個(gè)空余的地方隨便選擇一個(gè)位置就可以了悬蔽。
5、在設(shè)計(jì)程序的時(shí)候捉兴,當(dāng)出現(xiàn)工藝上的故障(非控制系統(tǒng)控制)蝎困,最好將故障現(xiàn)象保持,并有燈光聲音報(bào)警倍啥。直到操作工復(fù)位禾乘,以讓其知道系統(tǒng)出現(xiàn)了故障。不然停機(jī)了虽缕,別人還認(rèn)為你的程序問題始藕。一般都是在設(shè)計(jì)一個(gè)新系統(tǒng)時(shí),要注意到這些氮趋。
6伍派、對于經(jīng)常調(diào)用的子程序,可以做成子模塊凭峡,頻繁調(diào)用。
7决记、由于生產(chǎn)機(jī)械在工作循環(huán)中的各工步運(yùn)動(dòng)在執(zhí)行時(shí)需要一定的時(shí)間摧冀,且這些時(shí)間都有一定的限度,因此可以以這些時(shí)間為參考系宫,在要檢測的工步動(dòng)作開始的同時(shí)索昂,起動(dòng)一個(gè)定時(shí)器,定時(shí)器的時(shí)間設(shè)定值比正常情況下該動(dòng)作要持續(xù)的時(shí)間長20%~30%扩借,而定時(shí)器的輸出信號(hào)可以用于報(bào)警或自動(dòng)停機(jī)裝置椒惨。當(dāng)生產(chǎn)機(jī)械某工步動(dòng)作的時(shí)間超過規(guī)定時(shí)間,達(dá)到對應(yīng)的定時(shí)器預(yù)置時(shí)間潮罪,還未轉(zhuǎn)入下一工步動(dòng)作時(shí)定時(shí)器發(fā)出故障信號(hào)康谆,該信號(hào)停止正常工作循環(huán)程序,起動(dòng)報(bào)警或停機(jī)程序嫉到,這就是我們常說的超節(jié)拍保護(hù)沃暗。
8、一些安全用檢測開關(guān)(如急停按鈕何恶、安全光幕孽锥、極限開關(guān)等)實(shí)用常閉(NC)輸入。
9、為安全惜辑、節(jié)能考慮唬涧,盡量將輸出設(shè)計(jì)成需要?jiǎng)幼鲿r(shí)才動(dòng)作,一旦到位就停止輸出盛撑,而不要設(shè)計(jì)成平時(shí)一直輸出碎节,需要停止時(shí)才讓輸出斷開。
10撵彻、執(zhí)行元件的動(dòng)作原則應(yīng)當(dāng)是寧可不動(dòng)钓株,也不要亂動(dòng)!
11陌僵、單臺(tái)設(shè)備控制:單臺(tái)設(shè)備必須有軟手操/自動(dòng)切換以及軟手操時(shí)可以啟/停功能轴合,由自動(dòng)切換到軟手操時(shí),設(shè)備不能停機(jī)碗短;由軟手操切換到自動(dòng)時(shí)受葛,設(shè)備啟/停取決于自動(dòng)程序。
12偎谁、單臺(tái)設(shè)備(泵总滩、風(fēng)機(jī)及其它大型設(shè)備)運(yùn)行滿24小時(shí)必須進(jìn)行輪換,且必須有運(yùn)行時(shí)間累計(jì)巡雨,如果由上位機(jī)設(shè)定啟/停順序除外闰渔,操作人員自行設(shè)定。
來源:機(jī)工教育?铐望、金屬加工