我并非專業出身,學電氣才1年,后由于興趣和形勢逼迫才啃PLC,到現在總共才三年,雖然底子薄點,但一個月有三四個工程的工作量,實踐機會很多. 在這里我不敢談經驗, 只是就我個人在這段時間走的彎路與大家分享.新人以為鑒:
% p& t8 g- k8 J7 C5 s1 U! f
0 @& b+ U7 ?; y- F X8 `8 l I/ k7 _, R+ u
1 接到工程的開始不要忙于設計圖紙,應該多和機械設計人員多交流,還有設備調試人員,拿到設備運行的第一手資料,記住,你要最了解設備,包括生產出產品的工藝.( K% t; f3 e$ ~
8 @' U5 Y6 }$ `; K) p7 q" W5 v
! {* g3 P' `6 X, p2 繪制流程圖,這個圖紙只為自己使用,所以不用太規范,圖中應包括設備的運行過程,標注注意事項,對設備應有總體規劃.( _5 G8 z7 M0 n
* E+ e; E8 [$ q+ K1 X. _
a. D: @' a7 m, l3 用IO表格定義輸入輸出.. l' a: r A$ p" E4 F/ k; h
7 F5 R9 c! t) \) k9 q) h2 X
0 x: k* i$ e( C9 `: ~, O, R輸出:a.同一電壓等級的盡量靠近 b.不同頻率的應單獨劃分.以上兩點便于配盤和現場抗干擾的方便. c.程序上順承關系的輸出應盡量靠近以方便編程 d.留出10%的空點做備用(我是做非標產品的,臨時該設備是常事,定型產品則不用)" T- t: d& P- ^/ ]' i3 b9 ]2 M8 ?
/ f$ |! k/ q1 g9 `
輸入:a.根據設備程序工藝分配觸摸屏輸入和控制板輸入,控制板輸入點定義時應注意預留一個備用按鈕./ Y1 Z4 n9 m4 r/ s
: y: ]0 X& M# a* i編制變量表:變量表的編制應合理規劃:最失敗的程序往往用到一個變量就隨便用.對于與外設有關聯的變量應保持連續并把只讀,只寫,讀寫型的合理分開,同一類型的變量靠近.這樣有利于通訊的速度和程序的閱讀.
- ?" s a2 ]* Y4 Q$ d
; P( a2 I/ E: W8 z, q6 {1 N0 w! f; E3 E
4 出圖:這個比較煩瑣.除了電氣圖,還應有安裝圖.一定要規范配盤.不然將來等你拿到控制盤時發現要改的太多.基礎圖,將基礎圖中附加電氣要求(其實主要是接地要求)
3 e! A' {9 A% T* Q" \) b D. U1 }5 W) X
" r& \, {* ^* P- L: }- |9 a6 F+ n9 s; l, q: t6 Q
5 編程:我建議主程序不要寫控制,而只有子程序的調用.子程序應分類,初始化\手動\單循環\自動多循環\全局中間控制的\運算的\報警的\復位程序,注意控制類程序轉換時的復位.盡量的簡化.! d& e# y. U3 t# @& t
+ V/ y0 c9 G( f" F
' W4 E3 J. b' Y: N& [% L/ G
* S. T: j" ~, m7 @! d; N就編程而言,其實是整個系統的實現部分。- W1 C1 S! P3 ~
) ^, `. ~! E6 h+ S& m9 Y9 o
% x* j1 S3 k5 k8 b+ {+ t J% K- E到此時,工程已經完成70%了,所以程序只占系統的20%(其余10%是編制使用說明書、驗收材料等用戶文件),但也是最費我們氧氣的環節,說到缺氧說點題外的,最近我正在編一臺設備其中包括4模入、1模出、變頻、3個HSC,定完程序框架一看,共用了10個子程序、11個中斷,呵呵。回來說程序,我發現本論壇大多提到的是指令的應用,其實程序的定義很廣,不是語句嚴謹就是好程序,還要結構合理、系統化、易移植性、易擴展性、安全性及冗余等等。
$ p/ D6 _$ ?. u" [2 E& K
) ~$ r. L* B6 l9 j5 ~
: x1 ^3 F/ B! V- M) `/ ^1、 程序結構很重要,便于別人閱讀,把程序開發人員的思路清楚的展現給他人,編程中避免數據的交叉、語句的跳轉,此處并不是說JUMP語句,而是順序分布,不要編程序網,很多人(包括自己)會被網套住,要編成程序鏈,讓別人讀程序時有如扶著鋼鎖過橋的感覺。這也是我為什么喜歡用T型圖而不喜歡用語句,實踐證明用語句比T型圖出邏輯錯誤的幾率高。
0 j4 {' c3 ]$ a; S* k9 y/ X& J0 r
) A8 {. M5 F. s) \2 o |8 ~+ ~. n5 A, L8 a: B' e% k. N5 d
! R: T8 C6 {5 M( P8 u
2、 程序的系統化,把程序按功能劃分,即“塊”的理念,把一臺復雜的設備分成若干個塊,每個塊獨立實現其功能,孫子說過,敵人強大,我設法把他分散開,再逐一擊破。我從來不在主程序里寫指令,全是調用,程序的樹型結構在很多年前就被人認可,樹干有若干分枝,枝上再分杈,如果你看見主樹干上長滿樹葉和果實會不會覺得心堵?* w/ z$ M9 U/ r' C5 I0 ?2 @
6 a* X3 T8 K5 F Q f3 ?" N* f+ I' V6 y5 ]+ L) r5 b$ [9 G1 R+ f# ~
1 M7 E% `7 ?, b' X2 \) L1 }8 c/ o) u2 s. q
3、 移植和擴展,如果你搞過PC編程,這兩個詞肯定不生,移植是為了其它相同功能程序的調用,建議大家多做點庫,擴展性是為了設備有可能發生的二次改造或與其它設備的合作(并非通訊)而預先考慮的預留,當然擴展性更適合我們這些做非標產品的,手指有點麻了。
7 z6 K+ E0 @5 `' D$ _
6 w# Y* q2 A( C( ]) V6 M
5 v. \# k6 f% f9 V1 P! }+ F3 j) y
; H8 \ _$ q0 \2 a4 Q/ J+ h1 T$ }4、 安全性和冗余應該放在一起說,安全性即穩定性,好的系統不僅僅是處理復雜的運行和運算,首要是安全穩定,能處理突發事故,和避免事故擴大,這里我說說“千萬不要用STOP指令”,停機后,你連事故都處理不了了,再上電可能就會擴大事故。當然小設備除外,我知道STOP的唯一用途就是,別人不給你設備款,就在他用了一段時間后STOP他的設備,呵呵。冗余,好象300或400有,我沒用過,我這里說的冗余是指軟件冗余程序,并不是硬件的,在不影響系統性能的情況下,系統中的冗余程序應占總程序的50%~75%左右,當然這也和系統的復雜程度有關,我個人認為冗余程序的定義是:在非正常工作情況下運行,旨在發現處理故障及其它非正常狀況或數據的程序。沒有冗余就談不到完整。9 A! |. x4 U' b" o2 v0 A# _( J
3 ]" o5 F% V! T' Q7 W* {' o& d
0 R) F: g1 q- p: r9 M- @; c# u; D$ [- `
再深白話就是系統的自檢測、自診斷、容錯性和擬人模仿性了,下回和大家白話。* @1 H U' N- I" z9 n! b5 ?
/ u- T5 r0 x2 ^/ {1 d: e. E
1 _+ \$ C2 P+ o- c4 v* d
總之,如果你把面前的一堆廢鐵變成一個機器人,賦予他眼耳鼻舌口手及思想和靈魂,你會發現你就是造物主,生命在你指尖誕生。
$ k8 e1 y' O' k2 h, }6 G/ @ |