|
我并非專業(yè)出身,學(xué)電氣才1年,后由于興趣和形勢逼迫才啃PLC,到現(xiàn)在總共才三年,雖然底子薄點,但一個月有三四個工程的工作量,實踐機(jī)會很多. 在這里我不敢談經(jīng)驗, 只是就我個人在這段時間走的彎路與大家分享.新人以為鑒:8 S- g# y3 y6 v# e
: R$ O6 m+ C# ?5 x0 O, k2 i6 u- F) ]/ y* P$ u1 p$ `! K* \
1 接到工程的開始不要忙于設(shè)計圖紙,應(yīng)該多和機(jī)械設(shè)計人員多交流,還有設(shè)備調(diào)試人員,拿到設(shè)備運行的第一手資料,記住,你要最了解設(shè)備,包括生產(chǎn)出產(chǎn)品的工藝.9 `4 W% B' `! |0 I9 u/ m4 n8 c
* D* ?* B; ]$ f p2 T- j
% G8 Z* t" Q8 {; T1 e2 繪制流程圖,這個圖紙只為自己使用,所以不用太規(guī)范,圖中應(yīng)包括設(shè)備的運行過程,標(biāo)注注意事項,對設(shè)備應(yīng)有總體規(guī)劃.8 R/ v# {5 W% d$ I3 ^
( R/ C o# I w% e8 `, V
. O6 u6 ~: ^% D3 d+ o8 s& X
3 用IO表格定義輸入輸出.+ A& G/ h* H+ }# U b! _4 w! K
+ U/ H9 R/ {, e6 ?/ i
9 Q0 U8 |8 e1 F+ N% K: [' ^$ w輸出:a.同一電壓等級的盡量靠近 b.不同頻率的應(yīng)單獨劃分.以上兩點便于配盤和現(xiàn)場抗干擾的方便. c.程序上順承關(guān)系的輸出應(yīng)盡量靠近以方便編程 d.留出10%的空點做備用(我是做非標(biāo)產(chǎn)品的,臨時該設(shè)備是常事,定型產(chǎn)品則不用)5 [: s3 b/ u! [9 Z4 Y
8 \& R4 f" q2 C' m9 l C2 q5 x% b輸入:a.根據(jù)設(shè)備程序工藝分配觸摸屏輸入和控制板輸入,控制板輸入點定義時應(yīng)注意預(yù)留一個備用按鈕.4 W0 K: a! k2 s( m5 f3 |
0 l- l. J7 ]4 x5 i( `" p% \2 G$ J編制變量表:變量表的編制應(yīng)合理規(guī)劃:最失敗的程序往往用到一個變量就隨便用.對于與外設(shè)有關(guān)聯(lián)的變量應(yīng)保持連續(xù)并把只讀,只寫,讀寫型的合理分開,同一類型的變量靠近.這樣有利于通訊的速度和程序的閱讀.
& N* N( `0 N% w1 y2 m& n: [2 L6 A; j; }' ]9 z& j
, F, v0 }/ {* m: ^
4 出圖:這個比較煩瑣.除了電氣圖,還應(yīng)有安裝圖.一定要規(guī)范配盤.不然將來等你拿到控制盤時發(fā)現(xiàn)要改的太多.基礎(chǔ)圖,將基礎(chǔ)圖中附加電氣要求(其實主要是接地要求)
7 G# I9 u5 W6 H$ z. s/ j" b. f* J. u% Z7 i% K; ~! a' C
- a; \0 E$ s C, k6 n% ]/ n
5 編程:我建議主程序不要寫控制,而只有子程序的調(diào)用.子程序應(yīng)分類,初始化\手動\單循環(huán)\自動多循環(huán)\全局中間控制的\運算的\報警的\復(fù)位程序,注意控制類程序轉(zhuǎn)換時的復(fù)位.盡量的簡化.: P+ B& K( N1 x4 V3 G' {- G
7 p3 n# a5 P! Q$ ~
3 P' C% U# N2 N) j" a, a2 o `6 }. ]
1 I: T6 x: ?( \: o6 S, @. X就編程而言,其實是整個系統(tǒng)的實現(xiàn)部分,。
+ u. b/ J, P8 k6 v: `" a+ }/ [
% E8 l! y& d( M7 z1 i2 R* x" z3 M, f+ r& i* V+ i( x
到此時,,工程已經(jīng)完成70%了,所以程序只占系統(tǒng)的20%(其余10%是編制使用說明書,、驗收材料等用戶文件),,但也是最費我們氧氣的環(huán)節(jié),說到缺氧說點題外的,,最近我正在編一臺設(shè)備其中包括4模入,、1模出、變頻,、3個HSC,,定完程序框架一看,共用了10個子程序,、11個中斷,,呵呵�,;貋碚f程序,,我發(fā)現(xiàn)本論壇大多提到的是指令的應(yīng)用,其實程序的定義很廣,不是語句嚴(yán)謹(jǐn)就是好程序,,還要結(jié)構(gòu)合理,、系統(tǒng)化、易移植性,、易擴(kuò)展性,、安全性及冗余等等。" w, f3 V, L7 Q3 V! r
# j m* i* s5 X; V7 n- ?2 S: }
8 T. U! o$ I6 E `
1,、 程序結(jié)構(gòu)很重要,,便于別人閱讀,把程序開發(fā)人員的思路清楚的展現(xiàn)給他人,,編程中避免數(shù)據(jù)的交叉,、語句的跳轉(zhuǎn),,此處并不是說JUMP語句,,而是順序分布,不要編程序網(wǎng),,很多人(包括自己)會被網(wǎng)套住,,要編成程序鏈,讓別人讀程序時有如扶著鋼鎖過橋的感覺,。這也是我為什么喜歡用T型圖而不喜歡用語句,,實踐證明用語句比T型圖出邏輯錯誤的幾率高。
2 E( r z; [, n N0 C- V, o8 c
( q2 B. k( {! U" z7 K
/ Y6 W! R5 {) P0 s& I; y/ |; K# |% u1 `2 z, S' X& h
2,、 程序的系統(tǒng)化,,把程序按功能劃分,即“塊”的理念,,把一臺復(fù)雜的設(shè)備分成若干個塊,,每個塊獨立實現(xiàn)其功能,孫子說過,,敵人強(qiáng)大,,我設(shè)法把他分散開,再逐一擊破,。我從來不在主程序里寫指令,,全是調(diào)用,程序的樹型結(jié)構(gòu)在很多年前就被人認(rèn)可,,樹干有若干分枝,,枝上再分杈,如果你看見主樹干上長滿樹葉和果實會不會覺得心堵,?+ |. F0 M. n! x l1 Y3 W9 ^
$ I$ N7 ~) o) ^' i q
& P: U5 V7 j! A0 \7 I s/ o( [" E1 f4 d5 O& m
9 f# U) i& P7 d, V9 ~7 x1 Y6 w3,、 移植和擴(kuò)展,如果你搞過PC編程,這兩個詞肯定不生,,移植是為了其它相同功能程序的調(diào)用,,建議大家多做點庫,擴(kuò)展性是為了設(shè)備有可能發(fā)生的二次改造或與其它設(shè)備的合作(并非通訊)而預(yù)先考慮的預(yù)留,,當(dāng)然擴(kuò)展性更適合我們這些做非標(biāo)產(chǎn)品的,,手指有點麻了。
; t4 n7 ~) Q3 K& f9 |; B: m5 H
2 X' Z5 A& I( H
: J& Y# `# s E9 Q% Y" ~; K$ ?4 P/ n$ y
4,、 安全性和冗余應(yīng)該放在一起說,,安全性即穩(wěn)定性,好的系統(tǒng)不僅僅是處理復(fù)雜的運行和運算,,首要是安全穩(wěn)定,,能處理突發(fā)事故,和避免事故擴(kuò)大,,這里我說說“千萬不要用STOP指令”,,停機(jī)后,你連事故都處理不了了,,再上電可能就會擴(kuò)大事故,。當(dāng)然小設(shè)備除外,我知道STOP的唯一用途就是,,別人不給你設(shè)備款,,就在他用了一段時間后STOP他的設(shè)備,呵呵,。冗余,,好象300或400有,我沒用過,,我這里說的冗余是指軟件冗余程序,,并不是硬件的,在不影響系統(tǒng)性能的情況下,,系統(tǒng)中的冗余程序應(yīng)占總程序的50%~75%左右,,當(dāng)然這也和系統(tǒng)的復(fù)雜程度有關(guān),我個人認(rèn)為冗余程序的定義是:在非正常工作情況下運行,,旨在發(fā)現(xiàn)處理故障及其它非正常狀況或數(shù)據(jù)的程序,。沒有冗余就談不到完整。
* z- q2 U% t' Z+ l
7 e/ k, s/ f1 u: O7 s* }7 W
# J% E1 K9 ]5 M8 U. p4 J再深白話就是系統(tǒng)的自檢測,、自診斷,、容錯性和擬人模仿性了,下回和大家白話,。
2 A3 G# f9 h$ _, Q% H4 E$ a2 N% y
1 U2 u! x0 _' V4 N3 X. O6 X7 f; g8 W; g7 k0 G
總之,,如果你把面前的一堆廢鐵變成一個機(jī)器人,,賦予他眼耳鼻舌口手及思想和靈魂,你會發(fā)現(xiàn)你就是造物主,,生命在你指尖誕生,。
( O1 F! `% A4 ] |
|