我并非專業出身,學電氣才1年,后由于興趣和形勢逼迫才啃PLC,到現在總共才三年,雖然底子薄點,但一個月有三四個工程的工作量,實踐機會很多. 在這里我不敢談經驗, 只是就我個人在這段時間走的彎路與大家分享.新人以為鑒:
/ p4 W' n% \. O, j- ]2 d. Q
4 D4 C& [1 h$ K; P \
' w7 i0 D' [$ d2 d0 u2 p1 接到工程的開始不要忙于設計圖紙,應該多和機械設計人員多交流,還有設備調試人員,拿到設備運行的第一手資料,記住,你要最了解設備,包括生產出產品的工藝.5 I7 N2 y0 `" m
+ K- r9 T' u8 y6 A
+ W" L0 |1 I( Z1 Z2 繪制流程圖,這個圖紙只為自己使用,所以不用太規范,圖中應包括設備的運行過程,標注注意事項,對設備應有總體規劃./ F& G6 p/ e# R. T: Q
8 v/ r: p) X, ~( i6 K
( _. ^: t4 n J& ~( j7 Y7 s& e
3 用IO表格定義輸入輸出.
% ~ ^+ G, R0 h* Z& e/ W% q5 @+ y( Z" C7 K9 n# F6 n
# p$ M. j, m! d1 q/ `) J; y輸出:a.同一電壓等級的盡量靠近 b.不同頻率的應單獨劃分.以上兩點便于配盤和現場抗干擾的方便. c.程序上順承關系的輸出應盡量靠近以方便編程 d.留出10%的空點做備用(我是做非標產品的,臨時該設備是常事,定型產品則不用)
2 d7 N& {; v% B7 r5 {; k$ t# R+ E( {- _/ X+ F) A
輸入:a.根據設備程序工藝分配觸摸屏輸入和控制板輸入,控制板輸入點定義時應注意預留一個備用按鈕.
/ w& E+ P3 l! S! r2 H1 i% Y9 h/ c3 y* ?( q2 a
編制變量表:變量表的編制應合理規劃:最失敗的程序往往用到一個變量就隨便用.對于與外設有關聯的變量應保持連續并把只讀,只寫,讀寫型的合理分開,同一類型的變量靠近.這樣有利于通訊的速度和程序的閱讀.
- _1 t& E! l8 P; @; z g- C
- q8 Q6 G! O( y
6 E# O; U% d$ j7 ^4 出圖:這個比較煩瑣.除了電氣圖,還應有安裝圖.一定要規范配盤.不然將來等你拿到控制盤時發現要改的太多.基礎圖,將基礎圖中附加電氣要求(其實主要是接地要求). X/ Y! r- O1 x- R
7 S2 ?) ]' ]8 R- `# \
- m: k. j4 u( U) i: L8 N
5 編程:我建議主程序不要寫控制,而只有子程序的調用.子程序應分類,初始化\手動\單循環\自動多循環\全局中間控制的\運算的\報警的\復位程序,注意控制類程序轉換時的復位.盡量的簡化./ @) h& C7 ~ e0 ?8 Z
! r6 f+ Q q6 O S8 v2 p" ~) g) m( P2 A0 _7 J# _$ y
4 I! m% A$ q$ Y- @$ |, V就編程而言,其實是整個系統的實現部分。; D% _5 P/ y- ]
( T. \' G% E* f; @2 d
. i( _. Q' c. h9 W3 O {* |到此時,工程已經完成70%了,所以程序只占系統的20%(其余10%是編制使用說明書、驗收材料等用戶文件),但也是最費我們氧氣的環節,說到缺氧說點題外的,最近我正在編一臺設備其中包括4模入、1模出、變頻、3個HSC,定完程序框架一看,共用了10個子程序、11個中斷,呵呵。回來說程序,我發現本論壇大多提到的是指令的應用,其實程序的定義很廣,不是語句嚴謹就是好程序,還要結構合理、系統化、易移植性、易擴展性、安全性及冗余等等。
/ z9 u. X+ w [: J, L. x: \+ i: v7 ^$ N, I8 K( b0 V' Y
, N. @5 I, Q4 z- ^
1、 程序結構很重要,便于別人閱讀,把程序開發人員的思路清楚的展現給他人,編程中避免數據的交叉、語句的跳轉,此處并不是說JUMP語句,而是順序分布,不要編程序網,很多人(包括自己)會被網套住,要編成程序鏈,讓別人讀程序時有如扶著鋼鎖過橋的感覺。這也是我為什么喜歡用T型圖而不喜歡用語句,實踐證明用語句比T型圖出邏輯錯誤的幾率高。& V, ^' Z; k$ B" S* K: A
* W; [% N O, u2 [) q1 D& q$ z* ]3 I' a! E1 y2 f
: P7 }5 i% L6 N. ]. s& z* H2、 程序的系統化,把程序按功能劃分,即“塊”的理念,把一臺復雜的設備分成若干個塊,每個塊獨立實現其功能,孫子說過,敵人強大,我設法把他分散開,再逐一擊破。我從來不在主程序里寫指令,全是調用,程序的樹型結構在很多年前就被人認可,樹干有若干分枝,枝上再分杈,如果你看見主樹干上長滿樹葉和果實會不會覺得心堵?
- h; Z1 X" D9 f8 E6 v6 N/ y& e b, i& d; Y" c, h& k2 o. E
7 m0 T( j7 D& d7 v$ ?
# D# G" g( H9 N, j3 S3 S/ \- }4 }$ c. K- V1 L
3、 移植和擴展,如果你搞過PC編程,這兩個詞肯定不生,移植是為了其它相同功能程序的調用,建議大家多做點庫,擴展性是為了設備有可能發生的二次改造或與其它設備的合作(并非通訊)而預先考慮的預留,當然擴展性更適合我們這些做非標產品的,手指有點麻了。
0 q; ]2 i: R& N _& H7 d1 w+ t1 | |, k- Q) T+ d% f$ f- r8 |: l
( G7 U% |$ r3 r# S* O! W
. U- Z1 y4 T- Z& W2 K* T; E4、 安全性和冗余應該放在一起說,安全性即穩定性,好的系統不僅僅是處理復雜的運行和運算,首要是安全穩定,能處理突發事故,和避免事故擴大,這里我說說“千萬不要用STOP指令”,停機后,你連事故都處理不了了,再上電可能就會擴大事故。當然小設備除外,我知道STOP的唯一用途就是,別人不給你設備款,就在他用了一段時間后STOP他的設備,呵呵。冗余,好象300或400有,我沒用過,我這里說的冗余是指軟件冗余程序,并不是硬件的,在不影響系統性能的情況下,系統中的冗余程序應占總程序的50%~75%左右,當然這也和系統的復雜程度有關,我個人認為冗余程序的定義是:在非正常工作情況下運行,旨在發現處理故障及其它非正常狀況或數據的程序。沒有冗余就談不到完整。
) ?0 ^) i4 N m8 R) c* y- c! W. u$ Z5 q
9 P2 ?5 e, O6 w- d: M再深白話就是系統的自檢測、自診斷、容錯性和擬人模仿性了,下回和大家白話。
7 L. _+ D' o3 J* b' R! C
! a! ]: I$ s$ N4 O6 C3 J2 N! s
9 U" }; I( y- V" U$ D6 ]8 Y- \總之,如果你把面前的一堆廢鐵變成一個機器人,賦予他眼耳鼻舌口手及思想和靈魂,你會發現你就是造物主,生命在你指尖誕生。
( ~! a8 @8 v; e |