|
我并非專業(yè)出身,學(xué)電氣才1年,后由于興趣和形勢逼迫才啃PLC,到現(xiàn)在總共才三年,雖然底子薄點,但一個月有三四個工程的工作量,實踐機會很多. 在這里我不敢談經(jīng)驗, 只是就我個人在這段時間走的彎路與大家分享.新人以為鑒: ^9 e# k9 l0 t5 {( F# |
( u% P7 W) }: }6 n0 c! ^, c/ f0 o0 p1 a2 p! V8 F8 Z- M
1 接到工程的開始不要忙于設(shè)計圖紙,應(yīng)該多和機械設(shè)計人員多交流,還有設(shè)備調(diào)試人員,拿到設(shè)備運行的第一手資料,記住,你要最了解設(shè)備,包括生產(chǎn)出產(chǎn)品的工藝.. n- [, x3 s+ z- @
% }- }! {0 }. i' g: j: a+ m
# H( z8 l# _1 k$ y: d8 ?" ]2 繪制流程圖,這個圖紙只為自己使用,所以不用太規(guī)范,圖中應(yīng)包括設(shè)備的運行過程,標(biāo)注注意事項,對設(shè)備應(yīng)有總體規(guī)劃.) m. n. E- d D' G2 y
5 o$ H* s/ J" N" D- B" d* o6 x' G" u8 h% _5 w5 a o/ v
3 用IO表格定義輸入輸出. _* l* U. V4 D. Z* K
7 {" ]/ ]- U/ l. l, Q
; c: j1 z- E, B# y( ^: a6 Q8 ^: J
輸出:a.同一電壓等級的盡量靠近 b.不同頻率的應(yīng)單獨劃分.以上兩點便于配盤和現(xiàn)場抗干擾的方便. c.程序上順承關(guān)系的輸出應(yīng)盡量靠近以方便編程 d.留出10%的空點做備用(我是做非標(biāo)產(chǎn)品的,臨時該設(shè)備是常事,定型產(chǎn)品則不用)
- {# G9 O' t# e7 i7 o1 K
% e- y- H3 D0 @; B2 m# S+ `* r輸入:a.根據(jù)設(shè)備程序工藝分配觸摸屏輸入和控制板輸入,控制板輸入點定義時應(yīng)注意預(yù)留一個備用按鈕.( ?$ J5 B, Y5 {7 k+ A8 K/ b. u
0 z& l2 a# \) \7 W1 Z2 e$ d8 x編制變量表:變量表的編制應(yīng)合理規(guī)劃:最失敗的程序往往用到一個變量就隨便用.對于與外設(shè)有關(guān)聯(lián)的變量應(yīng)保持連續(xù)并把只讀,只寫,讀寫型的合理分開,同一類型的變量靠近.這樣有利于通訊的速度和程序的閱讀.
* A- J3 U' ~/ D3 ?
- n) t: d4 b4 S% e- C1 a3 y4 x
' m, Y% I3 B/ T3 R; \4 出圖:這個比較煩瑣.除了電氣圖,還應(yīng)有安裝圖.一定要規(guī)范配盤.不然將來等你拿到控制盤時發(fā)現(xiàn)要改的太多.基礎(chǔ)圖,將基礎(chǔ)圖中附加電氣要求(其實主要是接地要求)
. _8 q$ K; D0 A( P) A$ t- b. y8 m4 ^' a0 D% W0 ~" s& p6 k3 I
$ u% p& l0 g: n) B4 \5 編程:我建議主程序不要寫控制,而只有子程序的調(diào)用.子程序應(yīng)分類,初始化\手動\單循環(huán)\自動多循環(huán)\全局中間控制的\運算的\報警的\復(fù)位程序,注意控制類程序轉(zhuǎn)換時的復(fù)位.盡量的簡化.
9 W( v; T5 \- k! A; g) H4 |% |4 {2 L1 A- q5 h& Q' p! ~( {
/ h7 F, A1 G+ o
- ?# M- [: w$ p" w- N. D' Y: V7 h就編程而言,其實是整個系統(tǒng)的實現(xiàn)部分。2 k6 C* p) W6 Z$ f
) q4 ^) L# M$ i# R2 `4 W
/ z* M* K8 G' e0 {到此時,工程已經(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)化、易移植性、易擴展性、安全性及冗余等等。
' E- x1 r Q& {2 e5 t+ [) ~4 t% X, [1 }3 p/ t
/ ^" o- d- N" ~1、 程序結(jié)構(gòu)很重要,便于別人閱讀,把程序開發(fā)人員的思路清楚的展現(xiàn)給他人,編程中避免數(shù)據(jù)的交叉、語句的跳轉(zhuǎn),此處并不是說JUMP語句,而是順序分布,不要編程序網(wǎng),很多人(包括自己)會被網(wǎng)套住,要編成程序鏈,讓別人讀程序時有如扶著鋼鎖過橋的感覺。這也是我為什么喜歡用T型圖而不喜歡用語句,實踐證明用語句比T型圖出邏輯錯誤的幾率高。
C! f3 R6 C6 f1 ~, ^. {
$ j8 |/ f7 u; Z5 f6 ~7 O0 F; P, Q$ V* U+ m' ^
7 F! j V" A& R( ?. |' b2、 程序的系統(tǒng)化,把程序按功能劃分,即“塊”的理念,把一臺復(fù)雜的設(shè)備分成若干個塊,每個塊獨立實現(xiàn)其功能,孫子說過,敵人強大,我設(shè)法把他分散開,再逐一擊破。我從來不在主程序里寫指令,全是調(diào)用,程序的樹型結(jié)構(gòu)在很多年前就被人認(rèn)可,樹干有若干分枝,枝上再分杈,如果你看見主樹干上長滿樹葉和果實會不會覺得心堵?4 \- B: x0 T! q
0 E. C" M6 L. n( H" k+ G( {* k, q' F5 `& H
7 S+ c% k* u0 g6 P- S( D. h; k* S2 B8 r: ~3 n) R
3、 移植和擴展,如果你搞過PC編程,這兩個詞肯定不生,移植是為了其它相同功能程序的調(diào)用,建議大家多做點庫,擴展性是為了設(shè)備有可能發(fā)生的二次改造或與其它設(shè)備的合作(并非通訊)而預(yù)先考慮的預(yù)留,當(dāng)然擴展性更適合我們這些做非標(biāo)產(chǎn)品的,手指有點麻了。/ S1 B9 ~: k3 z ^7 f+ c& g
+ P1 d- ?$ M7 k& |6 N7 U( D8 s! N: @4 \1 u9 O \, W
) J: F. \% e5 i1 J9 }4、 安全性和冗余應(yīng)該放在一起說,安全性即穩(wěn)定性,好的系統(tǒng)不僅僅是處理復(fù)雜的運行和運算,首要是安全穩(wěn)定,能處理突發(fā)事故,和避免事故擴大,這里我說說“千萬不要用STOP指令”,停機后,你連事故都處理不了了,再上電可能就會擴大事故。當(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ù)的程序。沒有冗余就談不到完整。
4 i+ W# y* V' u4 i R3 ?
% s2 X4 W# ?+ n1 R' n) M0 t! I* X5 e0 A7 f
再深白話就是系統(tǒng)的自檢測、自診斷、容錯性和擬人模仿性了,下回和大家白話。
; m7 G& a% b) A2 T3 H) X
: H0 c- I! s1 W0 k9 G. u. Z/ a! v% v3 e2 C1 [
總之,如果你把面前的一堆廢鐵變成一個機器人,賦予他眼耳鼻舌口手及思想和靈魂,你會發(fā)現(xiàn)你就是造物主,生命在你指尖誕生。4 [) m; E$ v" o D
|
|