我并非專業出身,學電氣才1年,后由于興趣和形勢逼迫才啃PLC,到現在總共才三年,雖然底子薄點,但一個月有三四個工程的工作量,實踐機會很多. 在這里我不敢談經驗, 只是就我個人在這段時間走的彎路與大家分享.新人以為鑒:
$ y3 o: P4 o2 W4 V; G6 y# W I+ Y t. a- V. q/ [
0 ?" L& M2 p; { [" Y+ V1 接到工程的開始不要忙于設計圖紙,應該多和機械設計人員多交流,還有設備調試人員,拿到設備運行的第一手資料,記住,你要最了解設備,包括生產出產品的工藝.
6 n$ N2 O. \( R) N
" z* L- q8 {* |, ^$ Q5 V, i1 s* V7 `$ K; ]6 v( C4 N: j3 r
2 繪制流程圖,這個圖紙只為自己使用,所以不用太規范,圖中應包括設備的運行過程,標注注意事項,對設備應有總體規劃.6 X: W C$ Q1 U& q9 B
3 M/ i9 Q8 e) v" d/ k3 e+ e1 E; W* [+ p9 o
3 用IO表格定義輸入輸出.
. P/ g3 X1 E S# s- k
$ d2 u4 {0 |7 `- p6 e" e9 i; z1 ~" e& F$ R' R' H/ ]
輸出:a.同一電壓等級的盡量靠近 b.不同頻率的應單獨劃分.以上兩點便于配盤和現場抗干擾的方便. c.程序上順承關系的輸出應盡量靠近以方便編程 d.留出10%的空點做備用(我是做非標產品的,臨時該設備是常事,定型產品則不用)' D+ ~! S" P0 O# j* t) y
$ \, c G6 }, Z# {# }) I
輸入:a.根據設備程序工藝分配觸摸屏輸入和控制板輸入,控制板輸入點定義時應注意預留一個備用按鈕., a' K/ K, F6 g e9 L7 J0 G
/ W. X6 n* e8 o
編制變量表:變量表的編制應合理規劃:最失敗的程序往往用到一個變量就隨便用.對于與外設有關聯的變量應保持連續并把只讀,只寫,讀寫型的合理分開,同一類型的變量靠近.這樣有利于通訊的速度和程序的閱讀.
# T6 h, r5 K2 `- R% Y% w* U& u! e* p$ U; |
- f Q. m# n$ F8 i7 Y4 出圖:這個比較煩瑣.除了電氣圖,還應有安裝圖.一定要規范配盤.不然將來等你拿到控制盤時發現要改的太多.基礎圖,將基礎圖中附加電氣要求(其實主要是接地要求)5 x3 Y0 \, B- P5 ]6 w5 l
% w8 `/ A+ A; R8 y) o) V1 }" [+ _
/ R4 n* \. C; R" |" {
5 編程:我建議主程序不要寫控制,而只有子程序的調用.子程序應分類,初始化\手動\單循環\自動多循環\全局中間控制的\運算的\報警的\復位程序,注意控制類程序轉換時的復位.盡量的簡化.$ M! X, c3 H `- B: e
. l1 Y4 f2 C, ^, u2 s" S! d
( K; m" G4 }0 g" q7 m$ v
& m/ j [; X5 d& ~* T2 l就編程而言,其實是整個系統的實現部分。
. x' \& ]* ~/ j8 `3 z- _/ V/ i1 A6 I, ^& _) K7 U# S" y! ]' l& n' L
7 m0 g1 \5 s+ k7 E) a$ X到此時,工程已經完成70%了,所以程序只占系統的20%(其余10%是編制使用說明書、驗收材料等用戶文件),但也是最費我們氧氣的環節,說到缺氧說點題外的,最近我正在編一臺設備其中包括4模入、1模出、變頻、3個HSC,定完程序框架一看,共用了10個子程序、11個中斷,呵呵。回來說程序,我發現本論壇大多提到的是指令的應用,其實程序的定義很廣,不是語句嚴謹就是好程序,還要結構合理、系統化、易移植性、易擴展性、安全性及冗余等等。7 I# W. e, l$ k" I! M! v- ~! B
2 y6 V8 |- h# A3 | k* H; k
. ]- M4 B+ g' J3 w* c1、 程序結構很重要,便于別人閱讀,把程序開發人員的思路清楚的展現給他人,編程中避免數據的交叉、語句的跳轉,此處并不是說JUMP語句,而是順序分布,不要編程序網,很多人(包括自己)會被網套住,要編成程序鏈,讓別人讀程序時有如扶著鋼鎖過橋的感覺。這也是我為什么喜歡用T型圖而不喜歡用語句,實踐證明用語句比T型圖出邏輯錯誤的幾率高。7 ~' M }6 R' d9 j& m
7 t3 d4 K/ S, g5 Q+ y. q
* K; S! r( h }) t& _+ @6 [3 |0 K1 Y M Y
2、 程序的系統化,把程序按功能劃分,即“塊”的理念,把一臺復雜的設備分成若干個塊,每個塊獨立實現其功能,孫子說過,敵人強大,我設法把他分散開,再逐一擊破。我從來不在主程序里寫指令,全是調用,程序的樹型結構在很多年前就被人認可,樹干有若干分枝,枝上再分杈,如果你看見主樹干上長滿樹葉和果實會不會覺得心堵?
# S) {8 k0 A, b p% `/ v* Z) M9 w/ h; E6 R( _
0 ~. |2 B2 f) Z) s, W
. z' F- E0 n" k9 h6 x j+ j+ T" E! J6 M- [& C
3、 移植和擴展,如果你搞過PC編程,這兩個詞肯定不生,移植是為了其它相同功能程序的調用,建議大家多做點庫,擴展性是為了設備有可能發生的二次改造或與其它設備的合作(并非通訊)而預先考慮的預留,當然擴展性更適合我們這些做非標產品的,手指有點麻了。/ E3 a* e! f7 r
& @+ [) b) W. Q: y/ X- p
2 b; Q% o7 Y! J/ ^0 X }7 k. O
; D7 s3 M7 f, d9 I/ I4、 安全性和冗余應該放在一起說,安全性即穩定性,好的系統不僅僅是處理復雜的運行和運算,首要是安全穩定,能處理突發事故,和避免事故擴大,這里我說說“千萬不要用STOP指令”,停機后,你連事故都處理不了了,再上電可能就會擴大事故。當然小設備除外,我知道STOP的唯一用途就是,別人不給你設備款,就在他用了一段時間后STOP他的設備,呵呵。冗余,好象300或400有,我沒用過,我這里說的冗余是指軟件冗余程序,并不是硬件的,在不影響系統性能的情況下,系統中的冗余程序應占總程序的50%~75%左右,當然這也和系統的復雜程度有關,我個人認為冗余程序的定義是:在非正常工作情況下運行,旨在發現處理故障及其它非正常狀況或數據的程序。沒有冗余就談不到完整。8 z2 A: Q3 R6 I) g
$ k* f( m# `3 \1 B
2 M2 a1 v4 _" ^0 n: [9 y+ i- }
再深白話就是系統的自檢測、自診斷、容錯性和擬人模仿性了,下回和大家白話。
6 x2 A$ m* t, z8 L, f
/ |8 s- ]) r% {
: `/ z u" t+ ~, c$ E4 Z% d總之,如果你把面前的一堆廢鐵變成一個機器人,賦予他眼耳鼻舌口手及思想和靈魂,你會發現你就是造物主,生命在你指尖誕生。
( U1 j% f) ]6 [6 @9 W |